notlar · 2026-08-20 · 2 dk okuma · ios · payments

RevenueCat gözlemci modunda gelir neden sıfır görünür

StoreKit 2 ile gözlemci modunda recordPurchase çağrılmazsa satın almalar sonsuza dek görünmez. Bir hafta boyunca sıfır gelir sanıp aradığım bir bug'ın notu.

Kurulum tanıdık: satın almayı StoreKit 2 ile kendin yapıyorsun, RevenueCat'i sadece analitik ve webhook için gözlemci modunda ekliyorsun. Purchases.configure içinde purchasesAreCompletedBy: .myApp. Dashboard bir hafta boyunca sıfır dolar gösteriyor. Sandbox satın almaları çalışıyor, App Store Connect'te işlemler var, RevenueCat'te hiçbir şey yok.

Sebep

Gözlemci modunda RevenueCat, StoreKit 1'in işlem kuyruğunu dinleyebiliyor; StoreKit 2'de ise kuyruk yok. Satın alma tamamlandığında sen recordPurchase(_:) çağırmazsan SDK işlemi hiç görmüyor. Dokümanda var, ama "gözlemci" kelimesi seni "kendisi gözlemler" diye düşündürüyor.

Düzeltme

Product.purchase() sonucundan verified transaction alındığında, finish() çağrısından önce RevenueCat'e kaydet:

let result = try await product.purchase()
if case .success(let verification) = result,
   case .verified(let transaction) = verification {
    _ = try? await Purchases.shared.recordPurchase(result)
    await transaction.finish()
}

Geçiş sürümünde iki taraf da transaction'ı bitirmesin; aksi hâlde biri diğerinin işlemini görmeden kapatıyor.

Nasıl fark ettim

Dashboard'a bakarak değil. Bir Cloudflare Worker RevenueCat webhook'larını Telegram'a düşürüyor; bir hafta hiç mesaj gelmeyince önce webhook'u, sonra SDK log'unu okudum. Log'da "purchase completed by app, not recorded" satırı vardı. İkinci uçtan doğrulama olmasa sıfır geliri gerçek sanacaktım.

Ders

Gözlemci modu "hiçbir şey yapma" demek değil. Kayıt çağrısı senin. Ve gelir sıfır görünüyorsa ilk şüphe ürün değil ölçüm olmalı.