Flow ve paywallları gösterme - Kotlin Multiplatform
Bir flow ya da eski Paywall Builder’da bir paywall oluşturduysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Bu tür bir flow veya paywall, hem ne gösterileceğini hem de nasıl gösterileceğini içerir.
Bu kılavuz, Adapty tarafından render edilen flow’ları ve paywall’ları kapsar. Özel paywall’lar ve Observer modu için süreç farklıdır.
- Özel paywalllar sunmak için bkz. Özel paywallları sunma.
- Observer mode’da flow’ları sunmak için bkz. Observer mode’da flow’ları sunma.
Aşağıda kullanılan flow nesnesini almak için bkz. Flow’ları ve paywallları edinme.
Adapty Kotlin Multiplatform SDK, flow’ları ve paywallları sunmak için iki yöntem sunar:
- Compose Multiplatform ile
- Compose Multiplatform olmadan
Compose Multiplatform ile
Bir flow veya paywall görüntülemek için createFlowView metoduyla oluşturulan view üzerinde view.present() metodunu kullanın. Her view yalnızca bir kez kullanılabilir. Flow’u tekrar görüntülemeniz gerekiyorsa yeni bir view örneği oluşturmak için createFlowView metodunu bir kez daha çağırın.
Aynı view’ı yeniden oluşturmadan tekrar kullanmak hataya yol açabilir.
viewModelScope.launch {
AdaptyUI.createFlowView(flow = flow).onSuccess { view ->
view.present()
}.onError { error ->
// handle the error
}
}İletişim Kutusu Göster
Flow veya paywall, Android’de gösterildiğinde yerel uyarı iletişim kutuları yerine bu yöntemi kullanın. Android’de normal uyarılar, flow görünümünün arkasında kalır ve kullanıcılar tarafından görülmez. Bu yöntem, tüm platformlarda flow’un üzerinde iletişim kutusunun düzgün şekilde gösterilmesini sağlar.
viewModelScope.launch {
view.showDialog(
title = "Close this screen?",
content = "You will lose access to exclusive offers.",
primaryActionTitle = "Stay",
secondaryActionTitle = "Close"
).onSuccess { action ->
if (action == AdaptyUIDialogActionType.SECONDARY) {
// User confirmed - close the flow
view.dismiss()
}
// If primary - do nothing, user stays
}.onError { error ->
// handle the error
}
}iOS sunum stilini yapılandırma
Flow veya paywall’ın iOS’ta nasıl sunulacağını yapılandırmak için present() metoduna iosPresentationStyle parametresini geçirin. Bu parametre AdaptyUIIOSPresentationStyle.FULLSCREEN (varsayılan) veya AdaptyUIIOSPresentationStyle.PAGESHEET değerlerini kabul eder.
viewModelScope.launch {
val view = AdaptyUI.createFlowView(flow = flow).getOrNull()
view?.present(iosPresentationStyle = AdaptyUIIOSPresentationStyle.PAGESHEET)
}Compose Multiplatform Olmadan
createNativeFlowView, io.adapty:adapty-kmp çekirdek modülünün bir parçasıdır. Projeniz Compose Multiplatform kullanmıyorsa io.adapty:adapty-kmp-ui bağımlılığına ihtiyacınız yoktur.
Compose Multiplatform olmadan bir flow veya paywall yerleştirmek için createNativeFlowView metodunu çağırın. Bu metot, layout’unuza eklediğiniz bir AdaptyNativeFlowView döndürür:
Görünümü imha etme
Görünümü düzeninizden kaldırırken dispose() metodunu çağırın. Bu işlem, olay dinleyicisinin kaydını siler ve dahili kaynakları serbest bırakır.
nativeView.dispose()Özel etiketler
Ana makale: Flow’lara veri aktarma
Özel etiketler, farklı senaryolar için ayrı flow’lar veya paywall’lar oluşturmanıza gerek kalmamasını sağlar. Kullanıcı verilerine göre dinamik olarak uyum sağlayan tek bir flow hayal edin. Örneğin, genel bir “Merhaba!” yerine kullanıcıları kişisel olarak “Merhaba, John!” veya “Merhaba, Ann!” şeklinde karşılayabilirsiniz.
Özel etiketleri şu şekillerde kullanabilirsiniz:
- Kullanıcının adını veya e-postasını flow’da ya da paywall’da gösterin.
- Satışları artırmak için haftanın gününü gösterin (örneğin, “İyi Perşembeler”).
- Sattığınız ürünler hakkında kişiselleştirilmiş ayrıntılar ekleyin (bir fitness programının adı veya VoIP uygulamasında telefon numarası gibi).
Custom tag’ler, çeşitli durumlarla uyum sağlayan ve uygulamanızın arayüzünü daha kişiselleştirilmiş ve ilgi çekici kılan esnek bir flow oluşturmanıza yardımcı olur.
Uygulamanızın değerlerini AdaptyUI.createFlowView veya AdaptyUI.createNativeFlowView fonksiyonunun customTags parametresine Map<String, String> olarak aktarın:
Uygulamanız bir custom tag için herhangi bir değer geçmezse, kullanıcılar bunun yerine tag’in Başlangıç değerini görür.
Özel zamanlayıcılar
Zamanlayıcı, süreli özel ve sezonluk teklifleri tanıtmak için harika bir araçtır. Ancak bu zamanlayıcının teklifin geçerlilik süresiyle veya kampanyanın bitiş tarihiyle herhangi bir bağlantısı olmadığını belirtmek gerekir. Yalnızca belirlediğiniz değerden başlayıp sıfıra kadar azalan bağımsız bir geri sayımdır. Zamanlayıcı sıfıra ulaştığında hiçbir şey olmaz; sadece sıfırda kalır.
İstediğiniz mesajı oluşturmak için zamanlayıcının önüne ve arkasına metin ekleyebilirsiniz; örneğin: “Teklif bitiyor: 10:00 sn.”
Flow veya paywallınızda özel zamanlayıcılar kullanmak için, flow görünümünü oluştururken bunları aktarın:
Paywall Builder kullanarak bir paywall özelleştirdiyseniz, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Bu tür bir paywall, hem neyin gösterileceğini hem de nasıl gösterileceğini içerir.
Bu kılavuz yalnızca eski builder ile oluşturulmuş paywalllar içindir. Paywall sunma süreci, custom paywalllar ve Observer mode için farklılık gösterir.
Custom paywall sunmak için bkz. Custom paywall sunma.
Adapty Kotlin Multiplatform SDK, paywall’ları sunmak için iki yöntem sunar:
- Compose Multiplatform ile
- Compose Multiplatform olmadan
Compose Multiplatform ile
Bir paywall görüntülemek için, createPaywallView metodu tarafından oluşturulan view üzerinde view.present() metodunu kullanın. Her view yalnızca bir kez kullanılabilir. Paywall’ı tekrar görüntülemeniz gerekiyorsa, yeni bir view örneği oluşturmak için createPaywallView’ı bir kez daha çağırın.
Aynı view’ı yeniden oluşturmadan tekrar kullanmak hataya yol açabilir.
viewModelScope.launch {
AdaptyUI.createPaywallView(paywall = paywall).onSuccess { view ->
view.present()
}.onError { error ->
// handle the error
}
}Diyalog Göster
Android’de bir paywall görünümü sunulurken yerel uyarı diyalogları yerine bu yöntemi kullanın. Android’de normal uyarılar, paywall görünümünün arkasında görünür; bu da onları kullanıcılar için görünmez hale getirir. Bu yöntem, tüm platformlarda paywall’ın üzerinde diyaloğun düzgün şekilde gösterilmesini sağlar.
viewModelScope.launch {
view.showDialog(
title = "Close paywall?",
content = "You will lose access to exclusive offers.",
primaryActionTitle = "Stay",
secondaryActionTitle = "Close"
).onSuccess { action ->
if (action == AdaptyUIDialogActionType.SECONDARY) {
// User confirmed - close the paywall
view.dismiss()
}
// If primary - do nothing, user stays
}.onError { error ->
// handle the error
}
}iOS sunum stilini yapılandırın
present() metoduna iosPresentationStyle parametresini geçirerek paywallın iOS’ta nasıl sunulacağını yapılandırın. Parametre, AdaptyUIIOSPresentationStyle.FULLSCREEN (varsayılan) veya AdaptyUIIOSPresentationStyle.PAGESHEET değerlerini kabul eder.
viewModelScope.launch {
val view = AdaptyUI.createPaywallView(paywall = paywall).getOrNull()
view?.present(iosPresentationStyle = AdaptyUIIOSPresentationStyle.PAGESHEET)
}Compose Multiplatform Olmadan
createNativePaywallView, io.adapty:adapty-kmp çekirdek modülünün bir parçasıdır. Projeniz Compose Multiplatform kullanmıyorsa io.adapty:adapty-kmp-ui bağımlılığına ihtiyacınız yoktur.
Compose Multiplatform olmadan bir paywall gömmek için createNativePaywallView fonksiyonunu çağırın. Bu fonksiyon, layout’unuza eklediğiniz bir AdaptyNativePaywallView döndürür:
Görünümü serbest bırakın
Görünümü düzeninizden kaldırırken dispose() metodunu çağırın. Bu işlem, olay dinleyicisinin kaydını siler ve dahili kaynakları serbest bırakır.
nativeView.dispose()Özel etiketler
Özel etiketler, farklı senaryolar için ayrı ayrı paywall oluşturma zahmetini ortadan kaldırır. Tek bir paywall’un kullanıcı verilerine göre dinamik biçimde uyarlandığını hayal edin. Örneğin genel bir “Merhaba!” yerine kullanıcıları “Merhaba, Ahmet!” ya da “Merhaba, Ayşe!” şeklinde kişisel olarak selamlayabilirsiniz.
Özel etiketleri şu amaçlarla kullanabilirsiniz:
- Paywall üzerinde kullanıcının adını veya e-posta adresini göstermek.
- Satışları artırmak için haftanın gününü göstermek (ör. “İyi Perşembeler”).
- Sattığınız ürünlere ilişkin kişiselleştirilmiş ayrıntılar eklemek (bir fitness programının adı veya VoIP uygulamasında bir telefon numarası gibi).
Özel etiketler, çeşitli durumlara uyum sağlayan esnek bir paywall oluşturmanıza yardımcı olarak uygulamanızın arayüzünü daha kişisel ve ilgi çekici hale getirir.
Bazı durumlarda, uygulamanız bir özel etiketi neyle değiştireceğini bilemeyebilir; özellikle kullanıcılar AdaptyUI SDK’nın eski bir sürümünü kullanıyorsa. Bunu önlemek için, bilinmeyen özel etiketler içeren satırların yerine geçecek bir yedek metin eklemeyi unutmayın. Aksi takdirde kullanıcılar etiketleri kod olarak görebilir (<USERNAME/>).
Paywall’ınızda özel etiketleri kullanmak için, paywall görünümünü oluştururken bunları iletin:
Özel zamanlayıcılar
Paywall zamanlayıcısı, süreli özel ve sezonluk teklifleri tanıtmak için harika bir araçtır. Ancak bu zamanlayıcının teklifin geçerlilik süresiyle veya kampanyanın uzunluğuyla herhangi bir bağlantısı olmadığını belirtmek gerekir. Belirlediğiniz değerden başlayıp sıfıra kadar geri sayan bağımsız bir geri sayım saatidir. Zamanlayıcı sıfıra ulaştığında hiçbir şey olmaz; sadece sıfırda kalır.
İstediğiniz mesajı oluşturmak için zamanlayıcının önüne ve arkasına metin ekleyebilirsiniz; örneğin: “Teklif bitiyor: 10:00 sn.”
Paywall’unuzda özel zamanlayıcılar kullanmak için, paywall view’ını oluştururken bunları aktarın: