← 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ı.