iOS SDK'da App Store mesajlarını kontrol etme

App Store, kullanıcılarınıza zaman zaman abonelikleriyle ilgili bir mesaj göstermesi gerekebilir: fiyat artışına onay vermelerini istemek, faturalama sorununu bildirmek ya da geri kazanma teklifi sunmak gibi. Varsayılan olarak StoreKit, uygulamanız açıkken bu mesajları kendi başına gösterir — bir paywall, onboarding veya ödeme ekranının üstüne bile gelebilir.

Bu anı kendiniz belirlemek için Adapty SDK’sını manuel mesaj yönetimine geçirin. SDK, her mesajı bekleyen bir listeye ekler ve uygulamanız showStoreMessages çağırdığında bu listeyi gösterir.

Warning

Manuel modda StoreKit, mesajları kendi başına göstermez. Uygulamanız hiçbir zaman showStoreMessages çağırmazsa, kullanıcılar hiçbir zaman bir fiyat artışı onay isteği veya faturalandırma sorunu bildirimi görmez.

Başlamadan önce

Bunlara ihtiyacınız var:

  • Adapty iOS SDK 4.2 veya üzeri: Daha eski sürümler store messages API’sini içermiyor.
  • Kullanıcı cihazında iOS 16, Mac Catalyst 16 veya visionOS 1 ya da üzeri: StoreKit, daha eski sürümlerdeki uygulamalara mesaj iletmiyor. Store messages API, macOS’ta kullanılamıyor.

Manuel işlemeyi etkinleştir

App Store mesajlarını yakalamak için, SDK’yı etkinleştirirken storeMessagesHandling değerini .manual olarak ayarlayın:

let configurationBuilder = AdaptyConfiguration
    .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
    .with(storeMessagesHandling: .manual) // .auto is the default

SDK, etkinleştirildiğinde mesajları yakalamaya başlar ve bunları mevcut uygulama oturumu için bellekte tutar. Varsayılan .auto değeriyle SDK hiçbir şey yakalamaz; getPendingStoreMessageTypes ve showStoreMessages işlevleri hiçbir şey yapmaz.

Bekleyen mesaj türlerini alma

Herhangi bir mesajın bekleyip beklemediğini öğrenmek için getPendingStoreMessageTypes metodunu çağırın. Bu metot, mesajları göstermeden veya silmeden bekleyen mesajların türlerini döndürür:

let pendingTypes = await Adapty.getPendingStoreMessageTypes()

if pendingTypes.contains(.billingIssue) {
    // Örneğin, üst satışı atlayıp önce faturalandırma mesajını gösterin
}

Her mesaj şu türlerden birine sahiptir:

TürMesaj
.genericGenel bir App Store mesajı.
.priceIncreaseConsentAbonelik fiyat artışını onaylamak için bir istek.
.billingIssueAbonelik faturalama sorunu hakkında bir bildirim. iOS 16.4 ve sonrasında kullanılabilir.
.winBackOfferUygun bir geri kazanma teklifi. iOS 18 ve sonrasında kullanılabilir.

SDK’nın tanımadığı bir mesaj türü, ham değer olarak storekit_<number> şeklinde gösterilir.

Bekleyen mesajları göster

Uygulamanız, sistem sayfası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:

SDK mesajları birbiri ardına gösterir. StoreKit bir mesajı gösterdikten sonra, SDK onu bekleyen listeden 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.

Yalnızca belirli mesaj türlerini göster

Yalnızca belirli bekleyen mesajları göstermek için for parametresine türleri geçin. Diğer mesajlar beklemede kalır:

try await Adapty.showStoreMessages(
    for: [.billingIssue, .priceIncreaseConsent],
    using: displayStoreKitMessage
)

for kullanılmadığında SDK, tanımadığı türler dahil tüm bekleyen mesajları gösterir.

Hatalar

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

KodAdNeden
3201operationInProgressBaşka bir showStoreMessages çağrısı hâlâ mesajları gösteriyor. Bitmesini bekleyin, sonra tekrar deneyin.
3202resolverFailureYalnızca UIKit: bir scene iletmediniz ve SDK ön planda aktif bir scene bulamadı. Uygulamanız ön plandayken metodu tekrar çağırın ya da scene’i açıkça iletin.
9000operationInterruptedMetodu çağıran görev iptal edildi.