iOS SDK'da Observer modunda flow'ları gösterme
Agent araçlarını yükle
Adapty SDK entegrasyonunun tamamını AI kodlama aracınızdan çalıştırın. Daha fazla bilgi
Skill'ler SDK entegrasyonu, flow ve paywall oluşturma, yayın öncesi denetim, placement taşıma ve daha fazlasını kapsar. Görevi kendi cümlelerinizle anlatın, ajanınız doğru skill'i seçsin.
Observer modu kullanıyorsanız, satın alma mantığınızdan siz sorumlusunuz. Ancak paywall arayüzünü Flow & Paywall Builder’a devredebilirsiniz.
Ekranı builder’da tasarlayın; Adapty SDK onu cihazda yerel olarak render eder. İçeriği, düzeni ve fiyatlandırmayı istediğiniz zaman, uygulama güncellemesi gerektirmeden güncelleyebilirsiniz. Kullanıcı bir satın alma butonuna dokunduğunda SDK, satın alma işlemini tamamlaması için kodunuzu çağırır.
Bu rehber, ekranı nasıl göstereceğinizi ve satın alma çağrısını nasıl yöneteceğinizi açıklar. Satın alma işlemlerini Adapty tamamlıyorsa bunun yerine Flow’ları ve paywallları gösterme bölümüne bakın.
Başlamadan önce
İhtiyacınız olanlar:
- Adapty iOS SDK v4 veya üzeri: Önceki sürümler flow’ları render edemez. Mevcut bir uygulamayı v3’ten taşımak için migration kılavuzuna bakın.
observerModetrueolarak ayarlanmış: iOS SDK kurulum kılavuzuna bakın.- İlk mağaza entegrasyonu: Adapty’yi App Store ile kurun.
- Ürünlere sahip yayımlanmış bir flow: Flow & Paywall Builder ile oluşturun ve ürünleri atayın.
- Bir flow placement’ı: Bir placement oluşturun ve flow’unuzu ona atayın.
- Uygulamanızda çekilen flow: Göstermeden önce flow’u ve yapılandırmasını alın.
Uygulama
-
AdaptyObserverModeResolvernesnesini uygulayın:func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @MainActor @Sendable @escaping () -> Void, onFinishPurchase: @MainActor @Sendable @escaping () -> Void) { // use the product object to handle the purchase // call onStartPurchase / onFinishPurchase to notify AdaptyUI about the purchase progress } func observerModeDidInitiateRestorePurchases(onStartRestore: @MainActor @Sendable @escaping () -> Void, onFinishRestore: @MainActor @Sendable @escaping () -> Void) { // call onStartRestore / onFinishRestore to notify AdaptyUI about the restore progress } -
Resolver’ınızı
observerModeResolver:parametresi olarak geçirerek bir flow yapılandırma nesnesi oluşturun:do { let flowConfiguration = try await AdaptyUI.getFlowConfiguration( forFlow: flow, observerModeResolver: <AdaptyObserverModeResolver> ) } catch { // handle the error }İstek parametreleri:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| forFlow | zorunlu | Adapty.getFlow(placementId:) aracılığıyla elde edilen bir AdaptyFlow nesnesi. Bkz. Flow ve paywall’ları alma. |
| observerModeResolver | zorunlu | Yukarıda uyguladığınız AdaptyObserverModeResolver. |
-
AdaptyUI.flowController(with:delegate:)kullanarak flow controller’ı başlatın:import AdaptyUI let visualFlow = try AdaptyUI.flowController( with: flowConfiguration, delegate: <AdaptyFlowControllerDelegate> )İstek parametreleri:
| Parameter | Presence | Description |
|---|---|---|
| flowConfiguration | required | Flow’un görsel ayrıntılarını içeren bir AdaptyUI.FlowConfiguration nesnesi. Bkz. Flow’ları ve paywallları getir. |
| delegate | required | Flow olaylarını dinlemek için bir AdaptyFlowControllerDelegate. Bkz. Flow ve paywall olaylarını işle. |
Döndürür:
| Nesne | Açıklama |
|---|---|
| AdaptyFlowController | İstenen flow ekranını temsil eden bir nesne. |
-
Controller’ı gösterin:
present(visualFlow, animated: true)
Satın alma işlemlerini paywall’larla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynağı olan paywall’ı belirleyemez.
SwiftUI’da, resolver ile flow konfigürasyonunu alın ve .flow modifier’ına geçirin:
@State var flowPresented = false
@State var flowConfiguration: AdaptyUI.FlowConfiguration?
var body: some View {
Text("Hello, AdaptyUI!")
.flow(
isPresented: $flowPresented,
flowConfiguration: flowConfiguration,
didPerformAction: { action in
switch action {
case .close:
flowPresented = false
default:
break
}
},
didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didReceiveError: { error in flowPresented = false }
)
.task {
flowConfiguration = try? await AdaptyUI.getFlowConfiguration(
forFlow: flow,
observerModeResolver: <AdaptyObserverModeResolver>
)
}
}getFlowConfiguration üzerindeki observerModeResolver: parametresi, render edilen flow’un özel satın alma mantığınıza uymasını sağlar — modifier’ın kendisi tam moddaki geri çağırmaların aynısını kullanır.
Satın alma işlemlerini paywalllarla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynak paywall’unu belirleyemez.
Paywall’ları sunmadan önce (Genişletmek için tıklayın)
- Adapty’nin Google Play ve App Store ile başlangıç entegrasyonunu kurun.
2. Adapty SDK’yı yükleyin ve yapılandırın.
observerModeparametresinitrueolarak ayarladığınızdan emin olun. Framework’e özel talimatlarımıza bakın: iOS. 3. Adapty Kontrol Paneli’nde ürünler oluşturun. 4. Adapty Kontrol Paneli’nde paywall’lar yapılandırın, ürünleri bunlara atayın ve Paywall Builder ile özelleştirin. 5. Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’larınızı bunlara atayın. 6. Mobil uygulama kodunuzda Paywall Builder paywall’larını ve yapılandırmalarını çekin.
-
AdaptyObserverModeResolvernesnesini uygulayın:func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @MainActor @Sendable @escaping () -> Void, onFinishPurchase: @MainActor @Sendable @escaping () -> Void) { // use the product object to handle the purchase // use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase } func observerModeDidInitiateRestorePurchases(onStartRestore: @MainActor @Sendable @escaping () -> Void, onFinishRestore: @MainActor @Sendable @escaping () -> Void) { // use the onStartRestore and onFinishRestore callbacks to notify AdaptyUI about the process of the restore }
observerMode(didInitiatePurchase:onStartPurchase:onFinishPurchase:) olayı, kullanıcının bir satın alma işlemi başlattığını size bildirir. Bu callback’e yanıt olarak özel satın alma flow’unuzu tetikleyebilirsiniz.
observerModeDidInitiateRestorePurchases(onStartRestore:onFinishRestore:) olayı, kullanıcının bir geri yükleme işlemi başlattığını size bildirir. Bu callback’e yanıt olarak özel geri yükleme flow’unuzu tetikleyebilirsiniz.
Ayrıca, satın alma veya geri yükleme sürecini AdaptyUI’ya bildirmek için aşağıdaki callback’leri çağırmayı unutmayın. Bu, loader gösterimi gibi paywall’ın düzgün çalışması için gereklidir:
| Callback | Description |
|---|---|
| onStartPurchase() | Bu callback, satın alma işleminin başladığını AdaptyUI’ya bildirmek için çağrılmalıdır. |
| onFinishPurchase() | Bu callback, satın alma işleminin tamamlandığını AdaptyUI’ya bildirmek için çağrılmalıdır. |
| onStartRestore() | Bu callback, geri yükleme işleminin başladığını AdaptyUI’ya bildirmek için çağrılmalıdır. |
| onFinishRestore() | Bu callback, geri yükleme işleminin tamamlandığını AdaptyUI’ya bildirmek için çağrılmalıdır. |
-
Bir paywall yapılandırma nesnesi oluşturun:
do { let paywallConfiguration = try AdaptyUI.getPaywallConfiguration( forPaywall: <paywall object>, observerModeResolver: <AdaptyObserverModeResolver> ) } catch { // handle the error }İstek parametreleri:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| Paywall | zorunlu | İstenen paywall için bir kontrolcü elde etmek amacıyla kullanılan AdaptyPaywall nesnesi. |
| ObserverModeResolver | zorunlu | Bir önceki adımda uyguladığınız AdaptyObserverModeResolver nesnesi. |
-
Görüntülemek istediğiniz görsel paywallı
.paywallController(for:products:viewConfiguration:delegate:)metodunu kullanarak başlatın:import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )
İstek parametreleri:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| Paywall Configuration | zorunlu | Paywallın görsel ayrıntılarını içeren bir AdaptyUI.PaywallConfiguration nesnesi. AdaptyUI.getPaywallConfiguration(forPaywall:locale:) metodunu kullanın. Daha fazla bilgi için Paywall Builder paywalllarını ve yapılandırmalarını getirme konusuna bakın. |
| Delegate | zorunlu | Paywall olaylarını dinlemek için bir AdaptyPaywallControllerDelegate. Daha fazla bilgi için Paywall olaylarını işleme konusuna bakın. |
Döndürür:
| Nesne | Açıklama |
|---|---|
| AdaptyPaywallController | İstenen paywall ekranını temsil eden bir nesne |
Nesne başarıyla oluşturulduktan sonra şu şekilde görüntüleyebilirsiniz:
present(visualPaywall, animated: true)Satın alma işlemlerine paywall’ları ilişkilendirmeyi unutmayın. Aksi takdirde, Adapty satın almanın kaynak paywall’ını belirleyemez.
Görsel paywall’ı cihaz ekranında görüntülemek için SwiftUI’da .paywall değiştiricisini kullanın:
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywallConfiguration: <paywall configuration object>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false }
)
}(empty input — nothing to translate)
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| Paywall Configuration | zorunlu | Paywallın görsel ayrıntılarını içeren bir AdaptyUI.PaywallConfiguration nesnesi. AdaptyUI.getPaywallConfiguration(forPaywall:locale:) metodunu kullanın. Daha fazla ayrıntı için Paywall Builder paywall’larını ve yapılandırmalarını getirme konusuna bakın. |
| Products | isteğe bağlı | Ekranda ürünlerin görüntülenme zamanlamasını optimize etmek için bir AdaptyPaywallProduct nesneleri dizisi sağlayın. nil değeri geçilirse, AdaptyUI gerekli ürünleri otomatik olarak getirir. |
| TagResolver | isteğe bağlı | Özel etiketler ve bunların çözümlenmiş değerlerinden oluşan bir sözlük tanımlayın. Özel etiketler, paywall içeriğinde yer tutucu olarak işlev görür ve paywall içinde kişiselleştirilmiş içerik sunmak amacıyla belirli dizelerle dinamik olarak değiştirilir. Daha fazla ayrıntı için Paywall Builder’da Özel Etiketler konusuna bakın. |
| ObserverModeResolver | isteğe bağlı | Bir önceki adımda uyguladığınız AdaptyObserverModeResolver nesnesi |
Closure parametreleri:
| Closure parametresi | Açıklama |
|---|---|
| didFinishRestore | Adapty.restorePurchases() başarılı olursa bu callback çağrılır. |
| didFailRestore | Adapty.restorePurchases() başarısız olursa bu callback çağrılır. |
| didFailRendering | Arayüz oluşturulurken bir hata meydana gelirse bu callback çağrılır. |
Diğer closure parametreleri için iOS - Olayları Yönetme konusuna bakın.
Satın alma işlemlerini paywall’larla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın hangi paywall’dan geldiğini belirleyemez.
Before you start presenting paywalls (Click to Expand)
- Adapty’yi Google Play ile ve App Store ile ilk entegrasyonunu yapın.
- Adapty SDK’yı yükleyin ve yapılandırın.
observerModeparametresinitrueolarak ayarladığınızdan emin olun. Framework’e özgü talimatlarımıza bakın: iOS, React Native, Flutter ve Unity. - Adapty Kontrol Paneli’nde ürünler oluşturun.
- Adapty Kontrol Paneli’nde paywall’lar oluşturun, ürünleri onlara atayın ve Paywall Builder kullanarak özelleştirin.
- Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’larınızı onlara atayın.
- Mobil uygulama kodunuzda Paywall Builder paywall’larını ve yapılandırmalarını alın.
-
AdaptyObserverModeDelegatenesnesini uygulayın:func paywallController(_ controller: AdaptyPaywallController, didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @escaping () -> Void, onFinishPurchase: @escaping () -> Void) { // use the product object to handle the purchase // use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase }
paywallController(_:didInitiatePurchase:onStartPurchase:onFinishPurchase:) olayı, kullanıcının bir satın alma işlemi başlattığını size bildirir. Bu olaya yanıt olarak özel satın alma flow’unuzu tetikleyebilirsiniz.
Ayrıca, satın alma sürecini AdaptyUI’a bildirmek için aşağıdaki callback’leri çağırmayı unutmayın. Bu, yükleyiciyi gösterme gibi paywall davranışlarının düzgün çalışması için gereklidir:
| Callback | Description |
|---|---|
| onStartPurchase | Bu callback, AdaptyUI’a satın alma işleminin başladığını bildirmek için çağrılmalıdır. |
| onFinishPurchase | Bu callback, AdaptyUI’a satın alma işleminin tamamlandığını bildirmek için çağrılmalıdır. |
- Görüntülemek istediğiniz görsel paywall’ı
.paywallController(for:products:viewConfiguration:delegate:observerModeDelegate:)metodunu kullanarak başlatın:
import AdaptyUI
let visualPaywall = AdaptyUI.paywallController(
for: <paywall object>,
products: <paywall products array>,
viewConfiguration: <LocalizedViewConfiguration>,
delegate: <AdaptyPaywallControllerDelegate>
observerModeDelegate: <AdaptyObserverModeDelegate>
)İstek parametreleri:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| Paywall | zorunlu | İstediğiniz paywall için controller almak üzere kullanılan AdaptyPaywall nesnesi. |
| Products | isteğe bağlı | Ekrandaki ürünlerin görüntülenme zamanlamasını optimize etmek için AdaptyPaywallProduct nesnelerinden oluşan bir dizi sağlayın. nil geçilirse AdaptyUI gerekli ürünleri otomatik olarak getirir. |
| ViewConfiguration | zorunlu | Paywallın görsel ayrıntılarını içeren AdaptyUI.LocalizedViewConfiguration nesnesi. AdaptyUI.getViewConfiguration(paywall:locale:) metodunu kullanın. Daha fazla ayrıntı için Paywall Builder paywalllarını ve yapılandırmalarını getirme konusuna bakın. |
| Delegate | zorunlu | Paywall olaylarını dinlemek için kullanılan AdaptyPaywallControllerDelegate. Daha fazla ayrıntı için Paywall olaylarını işleme konusuna bakın. |
| ObserverModeDelegate | zorunlu | Önceki adımda uyguladığınız AdaptyObserverModeDelegate nesnesi. |
| TagResolver | isteğe bağlı | Özel etiketlerin ve çözümlenmiş değerlerinin bir sözlüğünü tanımlayın. Özel etiketler, paywall içeriğinde yer tutucu görevi görerek paywall içindeki kişiselleştirilmiş içerik için belirli dizelerle dinamik olarak değiştirilir. Daha fazla ayrıntı için Paywall Builder’da özel etiketler konusuna bakın. |
Döndürür:
| Nesne | Açıklama |
|---|---|
| AdaptyPaywallController | İstenen paywall ekranını temsil eden bir nesne |
Nesne başarıyla oluşturulduktan sonra şu şekilde görüntüleyebilirsiniz:
present(visualPaywall, animated: true)Satın alma işlemlerine paywall’ları ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın hangi paywall’dan geldiğini belirleyemez.
Görsel paywall’ı cihaz ekranında göstermek için SwiftUI’da .paywall modifier’ını kullanın:
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywall: <paywall object>,
configuration: <LocalizedViewConfiguration>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false },
observerModeDidInitiatePurchase: { product, onStartPurchase, onFinishPurchase in
// use the product object to handle the purchase
// use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase
},
)
}(empty input — nothing to translate)
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| Paywall | zorunlu | İstenen paywall için bir controller elde etmek amacıyla kullanılan AdaptyPaywall nesnesi. |
| Product | isteğe bağlı | Ekranda ürünlerin görüntülenme zamanlamasını optimize etmek için AdaptyPaywallProduct nesnelerinden oluşan bir dizi sağlayın. nil geçilirse AdaptyUI gerekli ürünleri otomatik olarak alır. |
| Configuration | zorunlu | Paywallın görsel ayrıntılarını içeren AdaptyUI.LocalizedViewConfiguration nesnesi. AdaptyUI.getViewConfiguration(paywall:locale:) metodunu kullanın. Daha fazla bilgi için Paywall Builder paywalllarını ve yapılandırmalarını alma konusuna bakın. |
| TagResolver | isteğe bağlı | Özel etiketlerin ve bunların çözümlenmiş değerlerinin bulunduğu bir sözlük tanımlayın. Özel etiketler, paywall içeriğinde yer tutucu görevi görerek paywall içindeki kişiselleştirilmiş içerik için belirli dizelerle dinamik olarak değiştirilir. Daha fazla bilgi için Paywall Builder’daki özel etiketler konusuna bakın. |
Closure parameters:
| Closure parametresi | Açıklama |
|---|---|
| didFinishRestore | Adapty.restorePurchases() başarılı olursa bu callback çağrılır. |
| didFailRestore | Adapty.restorePurchases() başarısız olursa bu callback çağrılır. |
| didFailRendering | Arayüz oluşturma sırasında bir hata oluşursa bu callback çağrılır. |
| observerModeDidInitiatePurchase | Bu callback, bir kullanıcı satın alma işlemi başlattığında çağrılır. |
Diğer closure parametreleri için iOS - Olayları yönetme konusuna bakın.
Satın alma işlemlerini paywalllarla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynak paywallını belirleyemez.