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.
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ür | Mesaj |
|---|---|
.generic | Genel bir App Store mesajı. |
.priceIncreaseConsent | Abonelik fiyat artışını onaylamak için bir istek. |
.billingIssue | Abonelik faturalama sorunu hakkında bir bildirim. iOS 16.4 ve sonrasında kullanılabilir. |
.winBackOffer | Uygun 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:
| Kod | Ad | Neden |
|---|---|---|
| 3201 | operationInProgress | Başka bir showStoreMessages çağrısı hâlâ mesajları gösteriyor. Bitmesini bekleyin, sonra tekrar deneyin. |
| 3202 | resolverFailure | Yalnı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. |
| 9000 | operationInterrupted | Metodu çağıran görev iptal edildi. |