React Native SDK'da mağaza mesajlarını kontrol etme

App Store ve Google Play, kullanıcılarınıza abonelikleriyle ilgili zaman zaman mesaj göstermesi gerekebilir:

  • App Store: Fiyat artışına onay isteği, faturalandırma sorunu bildirimi veya geri kazanma teklifi. Varsayılan olarak StoreKit, uygulamanız açıkken bu mesajları kendi kendine gösterir.
  • Google Play: Abonelik ödemesinin reddedildiğine ve ödeme yönteminin güncellenmesi gerektiğine dair bildirim. Varsayılan olarak Adapty SDK, uygulamanızın her Activity başladığında bu mesajları talep eder.

Bir mesaj, bir flow’un, onboarding’in veya checkout’un üzerinde görünebilir. Mesajın ne zaman gösterileceğini kendiniz seçmek için Adapty SDK’yı manuel mesaj yönetimine alın ve bir mesajın kullanıcıyı bölmeyeceği anda showStoreMessages çağrısı yapın.

Warning

Manuel modda mağazalar mesajları kendiliğinden göstermez. Uygulamanız hiçbir zaman showStoreMessages çağrısı yapmazsa, kullanıcılar fiyat artışı onay taleplerini, faturalama sorunu bildirimlerini veya ödeme reddedilme bildirimlerini hiç göremez.

Başlamadan önce

İhtiyacınız olanlar:

  • Adapty React Native SDK 4.3.0 veya üzeri: Önceki sürümler store mesajları API’sine sahip değildir.
  • iOS 16 veya üzeri App Store mesajları için: StoreKit, önceki sürümlerdeki uygulamalara mesaj iletmez. iOS 15’te getPendingStoreMessageTypes ve showStoreMessages hata fırlatır; bu nedenle uygulamanız iOS 15’i destekliyorsa bunları yalnızca iOS 16 ve sonrasında çağırın.

Manuel yönetimi etkinleştirin

Mağaza mesajlarını yalnızca uygulamanız showStoreMessages çağırdığında göstermek için, SDK’yı etkinleştirirken storeMessagesHandling değerini 'manual' olarak ayarlayın:

adapty.activate('YOUR_PUBLIC_SDK_KEY', {
  storeMessagesHandling: 'manual', // 'auto' is the default
});

iOS’ta SDK, her App Store mesajını mevcut uygulama oturumu için bekleyen listeye ekler. Android’de ise SDK, Google Play mesajlarını kendi başına talep etmeyi durdurur. Varsayılan 'auto' değeriyle SDK, App Store mesajlarını yakalamaz; dolayısıyla iOS’ta getPendingStoreMessageTypes ve showStoreMessages döndürecek veya gösterecek bir şey bulamaz.

Bekleyen mesaj türlerini alma

iOS’ta App Store mesajlarının bekleyip beklemediğini öğrenmek için getPendingStoreMessageTypes fonksiyonunu çağırın. Bu fonksiyon, mesajları göstermeden veya silmeden bekleyen mesajların türlerini döndürür:

const pendingTypes = await adapty.getPendingStoreMessageTypes();

if (pendingTypes === null) {
  // Android: Google Play hangi mesajın geçerli olduğuna siz gösterdiğinizde karar verir
} else if (pendingTypes.includes('billing_issue')) {
  // Örneğin, ek satışı atlayıp önce faturalama mesajını gösterin
}

Android’de metot null döndürür: Google Play bekleyen mesajları bildirmez ve bir mesajın uygulanıp uygulanmayacağına yalnızca uygulamanız isteğini gönderdiğinde karar verir. Boş bir dizi, iOS’ta bekleyen mesaj olmadığı anlamına gelir.

Her App Store mesajı şu türlerden birine sahiptir:

TürMesaj
genericGenel bir App Store mesajı.
price_increase_consentAbonelik fiyat artışına onay isteği.
billing_issueAbonelik faturalandırma sorununa ilişkin bildirim. iOS 16.4 ve sonrasında kullanılabilir.
win_back_offerUygun bir geri kazanma teklifi. iOS 18 ve sonrasında kullanılabilir.

SDK’nın tanımadığı bir mesaj türü storekit_<number> değerini alır.

Mesajları Göster

Uygulamanız, mağaza mesajının kullanıcıyı rahatsız etmeyeceği bir noktaya ulaştığında — örneğin, kullanıcı bir flow’u kapattıktan veya onboarding’i tamamladıktan sonra — showStoreMessages işlevini çağırın:

try {
  await adapty.showStoreMessages();
} catch (error) {
  // handle the error
}
  • iOS: SDK, bekleyen mesajları tek tek gösterir. StoreKit bir mesajı gösterdikten sonra SDK onu bekleyen listesinden kaldırır. StoreKit bir mesajı göstermeyi başaramazsa SDK, hatayı Adapty günlüğüne yazar, mesajı bir sonraki çağrı için saklar ve diğer mesajlarla devam eder.
  • Android: SDK, mevcut Activity için Google Play mesajlarını talep eder. Google Play bir mesajın kullanıcıya uygulanıp uygulanmayacağına karar verdiğinden, her talep mutlaka bir mesaj göstermez. Kullanıcı ödeme yöntemini mesajdan düzeltirse SDK, kullanıcının satın almalarını Adapty ile senkronize eder ve profil dinleyiciniz güncellenmiş access level’ı alır.

Varsayılan 'auto' modunda, Android’de showStoreMessages’ı da çağırabilirsiniz — örneğin, halihazırda çalışan bir Activity’de mesajı yeniden istemek için.

Yalnızca belirli mesaj türlerini göster

Bekleyen App Store mesajlarının yalnızca bir kısmını göstermek için türleri ios.filter ile belirtin. Diğer mesajlar beklemede kalmaya devam eder:

await adapty.showStoreMessages({
  ios: { filter: ['billing_issue', 'price_increase_consent'] },
});

filter kullanılmazsa SDK, tanımadığı türler dahil bekleyen tüm mesajları gösterir. Android, filter parametresini dikkate almaz ve tüm Google Play mesajlarını talep eder.

Hatalar

showStoreMessages, şu kodlardan biriyle bir AdaptyError fırlatır:

KodAdNeden
3201operationInProgressBaşka bir showStoreMessages çağrısı hâlâ mesajları gösteriyor. Bitmesini bekleyip tekrar deneyin.
3202resolverFailureYalnızca iOS: SDK, mesajları göstermek için ön planda aktif bir pencere sahnesi bulamadı. Uygulamanız ön plandayken yöntemi yeniden çağırın.