iOS SDK'da Observer modunda Paywall Builder paywalllarını sunun
Paywall Builder kullanarak bir paywall özelleştirdiyseniz, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Böyle bir paywall, hem neyin gösterileceğini hem de nasıl gösterileceğini içerir.
Bu bölüm yalnızca Observer mode için geçerlidir. Observer mode’da çalışmıyorsanız iOS - Present Paywall Builder paywalls sayfasına bakın.
Flow sunmaya başlamadan önce (Genişletmek için tıklayın)
- Adapty’nin App Store ile ilk entegrasyonunu ayarlayın.
2. Adapty SDK’yı kurun ve yapılandırın.
observerModeparametresinitrueolarak ayarladığınızdan emin olun. iOS SDK kurulum kılavuzuna başvurun. 3. Adapty Kontrol Paneli’nde ürünler oluşturun. 4. Builder’larda flow’ları veya paywall’ları yapılandırın ve ürünleri bunlara atayın. 5. Placement’lar oluşturun ve flow’larınızı veya paywall’larınızı bunlara atayın. 6. Mobil uygulama kodunuzda flow’ları ve yapılandırmalarını alın.
-
AdaptyObserverModeResolvernesnesini uygulayın. Protokol, SDK v3 ile aynıdır — observer mode, flow ve paywall rendering arasında değişmez:func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @escaping () -> Void, onFinishPurchase: @escaping () -> Void) { // use the product object to handle the purchase // call onStartPurchase / onFinishPurchase to notify AdaptyUI about the purchase progress } func observerModeDidInitiateRestorePurchases(onStartRestore: @escaping () -> Void, onFinishRestore: @escaping () -> Void) { // call onStartRestore / onFinishRestore to notify AdaptyUI about the restore progress } -
Çözümleyicinizi
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 birAdaptyFlownesnesi. 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:
Parametre Varlık Açıklama flowConfiguration gerekli Flow’un görsel ayrıntılarını içeren bir AdaptyUI.FlowConfigurationnesnesi. Bkz. Flow ve paywallları alma.delegate gerekli Flow olaylarını dinlemek için bir AdaptyFlowControllerDelegate. Bkz. Flow ve paywall olaylarını yönetme.
Döndürür:
| Nesne | Açıklama |
|---|---|
| AdaptyFlowController | İstenen flow ekranını temsil eden bir nesne. |
-
Controller’ı gösterin:
present(visualFlow, animated: true)
Paywallları satın alma işlemleriyle ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın hangi paywall’dan geldiğini belirleyemez.
SwiftUI’da, resolver ile flow yapılandırmasını çekin 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 de tam mod ile aynı callback’leri kullanır.
Satın alma işlemlerini paywall’larla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynak paywall’ını belirleyemez.
Paywall sunmaya başlamadan önce (Genişletmek için tıklayın)
- Adapty’nin Google Play ve App Store ile ilk entegrasyonunu kurun.
2. Adapty SDK’yı yükleyin ve yapılandırın.
observerModeparametresinitrueolarak ayarladığınızdan emin olun. Framework’e özgü talimatlar için iOS belgelerine bakın. 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ı alın.
AdaptyObserverModeResolvernesnesini uygulayın:func observerMode(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 } func observerModeDidInitiateRestorePurchases(onStartRestore: @escaping () -> Void, onFinishRestore: @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 geri çağırıma yanıt olarak kendi özel satın alma akışınızı tetikleyebilirsiniz.
observerModeDidInitiateRestorePurchases(onStartRestore:onFinishRestore:) olayı, kullanıcının bir geri yükleme işlemi başlattığını size bildirir. Bu geri çağırıma yanıt olarak kendi özel geri yükleme akışınızı 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’un düzgün çalışması için gereklidir:
| Callback | Açıklama |
|---|---|
| onStartPurchase() | Satın alma işleminin başladığını AdaptyUI’ya bildirmek için bu callback çağrılmalıdır. |
| onFinishPurchase() | Satın alma işleminin tamamlandığını AdaptyUI’ya bildirmek için bu callback çağrılmalıdır. |
| onStartRestore() | Geri yükleme işleminin başladığını AdaptyUI’ya bildirmek için bu callback çağrılmalıdır. |
| onFinishRestore() | Geri yükleme işleminin tamamlandığını AdaptyUI’ya bildirmek için bu callback ç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 Varlık Açıklama Paywall zorunlu İstenen paywall için bir controller elde etmek amacıyla kullanılan AdaptyPaywallnesnesi.ObserverModeResolver zorunlu Önceki adımda uyguladığınız AdaptyObserverModeResolvernesnesi. -
Görüntülemek istediğiniz görsel paywallı başlatmak için
.paywallController(for:products:viewConfiguration:delegate:)metodunu kullanın:import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )
İstek parametreleri:
| Parametre | Varlık | Açıklama |
|---|---|---|
| Paywall Configuration | zorunlu | Paywallın görsel detayları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ı yönetme 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 paywallları bağlamayı unutmayın. Aksi takdirde Adapty, satın almanın hangi paywalldan 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,
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 bilgi için Paywall Builder paywalllarını ve yapılandırmalarını getirme konusuna bakın. |
| Products | isteğe bağlı | Ekranda ürünlerin gösterim 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. |
| 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 kullanılır ve paywall içinde kişiselleştirilmiş içerik sunmak amacıyla belirli dizelerle dinamik olarak değiştirilir. Daha fazla bilgi 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şturma sırasında bir hata oluşursa bu callback çağrılır. |
| Diğer closure parametreleri için iOS - Olayları işleme konusuna bakın. |
Satın alma işlemlerini paywall’larla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynak paywall’ını belirleyemez.
Paywall’ları sunmaya başlamadan önce (Genişletmek için tıklayın)
- Adapty’yi Google Play ve App Store ile başlangıç entegrasyonunu yapın.
- Adapty SDK’yı kurun ve yapılandırın.
observerModeparametresinitrueolarak ayarladığınızdan emin olun. Framework’e özel 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 bunlara atayın ve Paywall Builder ile özelleştirin.
- Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’larınızı bunlara atayın.
- Mobil uygulama kodunuzda Paywall Builder paywall’larını ve yapılandırmalarını çekin.
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 kendi özel satın alma akışınızı tetikleyebilirsiniz.
Ayrıca, satın alma sürecini AdaptyUI’ya bildirmek için aşağıdaki callback’leri çağırmayı unutmayın. Bu, yükleyiciyi göstermek gibi paywall’ın düzgün çalışması için gereklidir:
| Callback | Açıklama |
|---|---|
| onStartPurchase | AdaptyUI’ya satın almanın başladığını bildirmek için bu callback çağrılmalıdır. |
| onFinishPurchase | AdaptyUI’ya satın almanın tamamlandığını bildirmek için bu callback çağrılmalıdır. |
- Görüntülemek istediğiniz görsel paywall’u
.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 | İstenen paywall için bir kontrolcü elde etmek amacıyla kullanılan AdaptyPaywall nesnesi. |
| Products | isteğe bağlı | Ürünlerin ekranda gösterilme zamanlamasını optimize etmek için bir AdaptyPaywallProduct nesneleri dizisi sağlayın. nil geçilirse, AdaptyUI gerekli ürünleri otomatik olarak çeker. |
| ViewConfiguration | 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 paywall’larını ve yapılandırmalarını getirme konusuna bakın. |
| Delegate | zorunlu | Paywall olaylarını dinlemek için kullanılan AdaptyPaywallControllerDelegate. Daha fazla bilgi için Paywall olaylarını yönetme konusuna bakın. |
| ObserverModeDelegate | zorunlu | Bir ö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örür ve paywall içinde kişiselleştirilmiş içerik sunmak amacıyla belirli dizelerle dinamik olarak değiştirilir. Daha fazla bilgi 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şlemlerini paywall’lara ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynak paywall’ını 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 | İstediğiniz paywall için bir controller elde etmek amacıyla kullanılan AdaptyPaywall nesnesi. |
| Product | isteğe bağlı | Ürünlerin ekranda görüntülenme zamanlamasını optimize etmek için bir AdaptyPaywallProduct nesneleri dizisi sağlayın. nil geçilirse AdaptyUI, gerekli ürünleri otomatik olarak getirir. |
| Configuration | zorunlu | Paywallın görsel ayrıntılarını içeren bir AdaptyUI.LocalizedViewConfiguration nesnesi. AdaptyUI.getViewConfiguration(paywall:locale:) metodunu kullanın. Daha fazla ayrıntı için Paywall Builder paywall’larını ve yapılandırmalarını getirme konusuna bakın. |
| TagResolver | isteğe bağlı | Özel etiketlerin ve bunların çözümlenmiş değerlerinin bir sözlüğünü tanımlayın. Özel etiketler, paywall içeriğinde yer tutucu olarak kullanılır ve paywall içinde kişiselleştirilmiş içerik için belirli dizelerle dinamik olarak değiştirilir. Daha fazla ayrıntı 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ı işleme konusuna bakın. |
Satın alma işlemlerini paywall’larla ilişkilendirmeyi unutmayın. Aksi takdirde Adapty, satın almanın kaynağı olan paywall’ı belirleyemez.