Flow aksiyonlarına yanıt verme - Kotlin Multiplatform
Adapty Flow Builder veya Paywall Builder kullanarak flow veya paywall oluşturuyorsanız butonları doğru şekilde ayarlamak kritik öneme sahiptir:
- Builder’da bir buton ekleyin ve bu butona önceden tanımlanmış bir eylem atayın ya da özel bir eylem ID’si oluşturun.
- Atadığınız her eylemi işlemek için uygulamanıza kod yazın.
Bu kılavuz, özel ve önceden tanımlanmış eylemleri kodunuzda nasıl ele alacağınızı gösterir.
Yalnızca satın almalar, geri yüklemeler, flow/paywall kapatmaları ve bağlantı açmaları otomatik olarak işlenir. Özel eylemler gibi diğer tüm buton eylemleri, uygulama kodunda doğru şekilde ele alınmasını gerektirir.
AdaptyUIFlowsEventsObserver’ı Kurma
Flow eylemlerini yönetmek için AdaptyUIFlowsEventsObserver arayüzünü uygulamanız ve AdaptyUI.setFlowsEventsObserver() ile kurmanız gerekir. Bu işlem, uygulamanızın yaşam döngüsünün erken aşamasında, genellikle ana aktivitede veya uygulama başlatma sürecinde yapılmalıdır.
// In your app initialization
AdaptyUI.setFlowsEventsObserver(MyAdaptyUIFlowsEventsObserver())Tüm buton aksiyonları, flowViewDidPerformAction(view, action) callback’ine AdaptyUIAction sealed class olarak gelir: CloseAction, AndroidSystemBackAction, OpenUrlAction veya CustomAction.
flowViewDidPerformAction override edildiğinde, yalnızca ilgilendiğiniz aksiyonun değil, tüm aksiyonların varsayılan davranışı değişir. Aşağıdaki örneklerde gösterildiği gibi, CloseAction (flow’u kapat) ve OpenUrlAction (URL’i aç) için varsayılan dalları değiştirmeyi amaçlamıyorsanız bunları koruyun.
Flow ve paywall’ları kapatma
Flow veya paywall’ınıza kapatma düğmesi eklemek için:
- Builder’da bir düğme ekleyin ve Close aksiyonunu atayın.
- Uygulama kodunuzda, flow’u kapatan
closeaksiyonu için bir handler uygulayın.
Kotlin Multiplatform SDK’sında CloseAction, varsayılan olarak flow veya paywall’ı kapatmayı tetikler. Ancak gerekirse bu davranışı kodunuzda geçersiz kılabilirsiniz. Örneğin, bir flow’un kapatılması başka bir flow’un açılmasını tetikleyebilir.
class MyAdaptyUIFlowsEventsObserver : AdaptyUIFlowsEventsObserver {
override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CloseAction ->
mainUiScope.launch { view.dismiss() } // default behavior
is AdaptyUIAction.OpenUrlAction ->
AdaptyUI.openWebUrl(action.url, action.openIn) // default behavior
else -> Unit
}
}
}
// Set up the observer
AdaptyUI.setFlowsEventsObserver(MyAdaptyUIFlowsEventsObserver())createNativeFlowView kullanıyorsanız, view.dismiss() çağrısının hiçbir etkisi yoktur — görünüm KMP yığını üzerinden sunulmaz, doğrudan layout’unuza gömülür. Bunun yerine görünümü layout’unuzdan kaldırın ve üzerinde dispose() çağırın.
Android sistem geri tuşunu yönetme
Android sistem geri tuşuna basmak (veya geri hareketini kullanmak) AdaptyUIAction.AndroidSystemBackAction olayını tetikler. Varsayılan olarak bu eylem yok sayılır — flow açık kalır ve kullanıcı, builder’da tanımladığınız Close butonu veya on_device_back eylemi gibi bir yoldan çıkış yapar. Sistem geri tuşunun flow’u kapatmasını istiyorsanız, eylemi kendiniz ele alın:
class MyAdaptyUIFlowsEventsObserver : AdaptyUIFlowsEventsObserver {
override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CloseAction ->
mainUiScope.launch { view.dismiss() } // default behavior
is AdaptyUIAction.AndroidSystemBackAction ->
mainUiScope.launch { view.dismiss() } // not handled by default
is AdaptyUIAction.OpenUrlAction ->
AdaptyUI.openWebUrl(action.url, action.openIn) // default behavior
else -> Unit
}
}
}Flow ve paywall’lardan URL açma
Bir grup bağlantı eklemek istiyorsanız (örneğin, kullanım koşulları ve satın alma geri yükleme), builder’da bir Link öğesi ekleyin ve bunu Open URL eylemiyle düğmelerle aynı şekilde ele alın.
Flow veya paywall’ınıza bir bağlantı açan düğme eklemek için (örneğin, Terms of use veya Privacy policy), builder’da bir düğme ekleyin, Open URL eylemini atayın ve açmak istediğiniz URL’yi girin.
Varsayılan olarak, SDK alınan URL’yi yerel olarak açar — action.openIn değerine bağlı olarak harici veya uygulama içi tarayıcıda — bu nedenle herhangi bir kod gerekmez. Yalnızca önce bir onay iletişim kutusu göstermek gibi özel bir mantık istiyorsanız işleyiciyi geçersiz kılın:
class MyAdaptyUIFlowsEventsObserver(
private val uriHandler: UriHandler
) : AdaptyUIFlowsEventsObserver {
override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.OpenUrlAction -> {
// Show confirmation dialog before opening URL
mainUiScope.launch {
val selectedAction = view.showDialog(
title = "Open URL?",
content = action.url,
primaryActionTitle = "Cancel",
secondaryActionTitle = "Open"
).getOrNull()
when (selectedAction) {
AdaptyUIDialogActionType.PRIMARY -> {
// User cancelled
}
AdaptyUIDialogActionType.SECONDARY -> {
// User confirmed - open URL
uriHandler.openUri(action.url)
}
else -> Unit
}
}
}
else -> Unit
}
}
}
// Set up the observer with UriHandler
AdaptyUI.setFlowsEventsObserver(MyAdaptyUIFlowsEventsObserver(uriHandler))Uygulamaya giriş yapma
Kullanıcıların uygulamanıza giriş yapmasını sağlayan bir buton eklemek için:
- Builder’da bir buton ekleyin ve bu butona “login” ID’sine sahip bir Custom (Özel) eylem atayın.
- Uygulama kodunuzda, kullanıcıyı tanımlayan özel eylem için bir işleyici (handler) uygulayın.
class MyAdaptyUIFlowsEventsObserver : AdaptyUIFlowsEventsObserver {
override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
if (action.action == "login") {
// Handle login action - navigate to login screen
// This depends on your app's navigation system
// For example, in Compose Multiplatform:
// navController.navigate("login")
}
}
else -> Unit
}
}
}Özel eylemleri işleme
Herhangi bir eylemi işleyen bir buton eklemek için:
- Builder’da bir buton ekleyin, Custom eylemini atayın ve bir kimlik (ID) verin.
- Uygulama kodunuzda, oluşturduğunuz eylem kimliği için bir işleyici (handler) tanımlayın.
Örneğin, başka bir abonelik teklifi veya tek seferlik satın alma seçeneğiniz varsa, başka bir flow ya da paywall görüntüleyecek bir buton ekleyebilirsiniz:
class MyAdaptyUIFlowsEventsObserver : AdaptyUIFlowsEventsObserver {
override fun flowViewDidPerformAction(view: AdaptyUIFlowView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
when (action.action) {
"openNewFlow" -> {
// Display another flow or paywall
}
}
}
else -> Unit
}
}
}
// Set up the observer
AdaptyUI.setFlowsEventsObserver(MyAdaptyUIFlowsEventsObserver())Yalnızca satın almalar ve geri yüklemeler otomatik olarak işlenir. Paywallları kapatmak veya bağlantı açmak gibi diğer tüm buton işlemleri, uygulama kodunda uygun yanıtların uygulanmasını gerektirir.
Adapty paywall builder kullanarak paywall oluşturuyorsanız, butonları doğru şekilde ayarlamak kritik önem taşır:
- Paywall builder’a bir buton ekleyin ve bu butona mevcut bir eylem atayın ya da özel bir eylem ID’si oluşturun.
- Atadığınız her eylemi işlemek için uygulamanıza kod yazın.
Bu kılavuz, kodunuzda özel ve önceden tanımlanmış eylemlerin nasıl ele alınacağını gösterir.
AdaptyUIPaywallsEventsObserver’ı ayarlayın
Paywall aksiyonlarını yönetmek için AdaptyUIPaywallsEventsObserver arayüzünü uygulamanız ve AdaptyUI.setPaywallsEventsObserver() ile kurmanız gerekir. Bu işlem, genellikle ana activity’nizde veya uygulama başlatma sırasında, uygulama yaşam döngüsünün erken aşamasında yapılmalıdır.
// In your app initialization
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())Paywallları kapatın
Paywallınızı kapatacak bir düğme eklemek için:
- Paywall builder’da bir düğme ekleyin ve Close aksiyonunu atayın.
- Uygulama kodunuzda, paywallı kapatan
closeaksiyonu için bir işleyici uygulayın.
Kotlin Multiplatform SDK’da CloseAction ve AndroidSystemBackAction varsayılan olarak paywallı kapatır. Ancak gerekirse bu davranışı kodunuzda değiştirebilirsiniz. Örneğin, bir paywallı kapatmak başka bir paywallın açılmasını tetikleyebilir.
class MyAdaptyUIPaywallsEventsObserver : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
AdaptyUIAction.CloseAction, AdaptyUIAction.AndroidSystemBackAction -> view.dismiss()
}
}
}
// Set up the observer
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())createNativePaywallView kullanıyorsanız view.dismiss() çağrısının bir etkisi yoktur — görünüm KMP yığını üzerinden değil, doğrudan layout’unuza gömülüdür. Bunun yerine görünümü layout’unuzdan kaldırın ve üzerinde dispose() çağrısı yapın.
Paywall’lardan URL açın
Bir grup bağlantı (ör. kullanım koşulları ve satın alma geri yükleme) eklemek istiyorsanız paywall builder’a bir Link öğesi ekleyin ve bunu Open URL aksiyonuyla düğmeleri yönettiğiniz gibi işleyin.
Paywallınızdan bir bağlantı açan bir düğme eklemek için (ör. Terms of use veya Privacy policy):
- Paywall builder’da bir düğme ekleyin, Open URL aksiyonunu atayın ve açmak istediğiniz URL’yi girin.
- Uygulama kodunuzda, alınan URL’yi tarayıcıda açan
openUrlaksiyonu için bir işleyici uygulayın.
Kotlin Multiplatform SDK’da OpenUrlAction, açılması gereken URL’yi sağlar. URL açmayı yönetmek için özel mantık uygulayabilirsiniz; örneğin bir onay iletişim kutusu gösterebilir veya uygulamanızın tercih ettiği URL yönetim yöntemini kullanabilirsiniz.
class MyAdaptyUIPaywallsEventsObserver(
private val uriHandler: UriHandler
) : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.OpenUrlAction -> {
// Show confirmation dialog before opening URL
mainUiScope.launch {
val selectedAction = view.showDialog(
title = "Open URL?",
content = action.url,
primaryActionTitle = "Cancel",
secondaryActionTitle = "Open"
).getOrNull()
when (selectedAction) {
AdaptyUIDialogActionType.PRIMARY -> {
// User cancelled
}
AdaptyUIDialogActionType.SECONDARY -> {
// User confirmed - open URL
uriHandler.openUri(action.url)
}
else -> Unit
}
}
}
}
}
}
// Set up the observer with UriHandler
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver(uriHandler))Uygulamaya giriş yapın
Kullanıcıların uygulamanıza giriş yapmasını sağlayan bir düğme eklemek için:
- Paywall builder’da bir düğme ekleyin ve buna “login” ID’siyle Custom aksiyon atayın.
- Uygulama kodunuzda, kullanıcınızı tanımlayan özel aksiyon için bir işleyici uygulayın.
class MyAdaptyUIObserver : AdaptyUIObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
if (action.action == "login") {
// Handle login action - navigate to login screen
// This depends on your app's navigation system
// For example, in Compose Multiplatform:
// navController.navigate("login")
}
}
}
}
}Özel aksiyonları yönetin
Başka aksiyonları yöneten bir düğme eklemek için:
- Paywall builder’da bir düğme ekleyin, Custom aksiyonunu atayın ve bir ID verin.
- Uygulama kodunuzda, oluşturduğunuz aksiyon ID’si için bir işleyici uygulayın.
Örneğin, başka bir abonelik teklifi veya tek seferlik satın alma seçeneğiniz varsa başka bir paywall açan bir düğme ekleyebilirsiniz:
class MyAdaptyUIPaywallsEventsObserver : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
when (action.action) {
"login" -> {
// Handle login action - navigate to login screen
// This depends on your app's navigation system
// For example, in Compose Multiplatform:
// navController.navigate("login")
}
}
}
}
}
}
// Set up the observer
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())