Android SDK'da onboarding olaylarını yönetme
Başlamadan önce şunların hazır olduğundan emin olun:
- Adapty Android SDK 3.8.0 veya daha yeni bir sürümünü yüklediniz.
- Bir onboarding oluşturdunuz.
- Onboarding’i bir placement’a eklediniz.
Builder ile yapılandırılan onboarding’ler, uygulamanızın yanıt verebileceği olaylar üretir. Bu olaylara nasıl yanıt vereceğinizi aşağıda öğrenin.
Android uygulamanızdaki onboarding ekranında gerçekleşen süreçleri kontrol etmek veya izlemek için AdaptyOnboardingEventListener arayüzünü uygulayın.
Özel eylemler
Builder’da bir düğmeye custom (özel) eylem ekleyebilir ve buna bir ID atayabilirsiniz. Ardından bu ID’yi kodunuzda kullanarak özel eylem olarak işleyebilirsiniz.
Örneğin, bir kullanıcı Login veya Allow notifications gibi özel bir düğmeye dokunduğunda, onCustomAction delegate metodu builder’daki eylem ID’siyle tetiklenir. “allowNotifications” gibi kendi ID’lerinizi oluşturabilirsiniz.
class YourActivity : AppCompatActivity() {
private val eventListener = object : AdaptyOnboardingEventListener {
override fun onCustomAction(action: AdaptyOnboardingCustomAction, context: Context) {
when (action.actionId) {
"allowNotifications" -> {
// Request notification permissions
}
}
}
override fun onError(error: AdaptyOnboardingError, context: Context) {
// Handle errors
}
// ... other required delegate methods
}
}
Olay örneği (Genişletmek için tıklayın)
{
"actionId": "allowNotifications",
"meta": {
"onboardingId": "onboarding_123",
"screenClientId": "profile_screen",
"screenIndex": 0,
"screensTotal": 3
}
}Onboarding’i kapatma
Kullanıcı Close eylemi atanmış bir düğmeye dokunduğunda onboarding kapatılmış sayılır. Kullanıcı onboarding’i kapattığında ne olacağını yönetmeniz gerekir. Örneğin:
Kullanıcı onboarding’i kapattığında ne olacağını yönetmeniz gerekir. Örneğin onboarding’in kendisini ekrandan kaldırmanız gerekir.
Örneğin:
override fun onCloseAction(action: AdaptyOnboardingCloseAction, context: Context) {
// Dismiss the onboarding screen
(context as? Activity)?.onBackPressed()
}
Olay örneği (Genişletmek için tıklayın)
{
"action_id": "close_button",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "final_screen",
"screen_index": 3,
"total_screens": 4
}
}Paywall açma
Onboarding içinde bir paywall açmak istiyorsanız bu olayı işleyin. Paywall’u onboarding kapandıktan sonra açmak istiyorsanız daha basit bir yol var: AdaptyOnboardingCloseAction’ı işleyin ve olay verilerine bağlı kalmadan paywall’u açın.
Kullanıcı bir paywall açan düğmeye tıklarsa, manuel olarak belirlediğiniz düğme eylem ID’sini alırsınız. Onboarding’lerde paywall’larla çalışmanın en sorunsuz yolu, eylem ID’sini bir paywall placement ID’sine eşit yapmaktır. Bu sayede AdaptyOnboardingOpenPaywallAction sonrasında placement ID’sini kullanarak paywall’u hemen alıp açabilirsiniz:
override fun onOpenPaywallAction(action: AdaptyOnboardingOpenPaywallAction, context: Context) {
// Get the paywall using the placement ID from the action
Adapty.getPaywall(placementId = action.actionId) { result ->
when (result) {
is AdaptyResult.Success -> {
val paywall = result.value
// Get the paywall configuration
AdaptyUI.getViewConfiguration(paywall) { result ->
when(result) {
is AdaptyResult.Success -> {
val paywallConfig = result.value
// Create and present the paywall
val paywallView = AdaptyUI.getPaywallView(
activity = this,
viewConfig = paywallConfig,
products,
eventListener = paywallEventListener
)
// Add the paywall view to your layout
binding.container.addView(paywallView)
}
is AdaptyResult.Error -> {
val error = result.error
// handle the error
}
}
}
is AdaptyResult.Error -> {
val error = result.error
// handle the error
}
}
}
}
Olay örneği (Genişletmek için tıklayın)
{
"action_id": "premium_offer_1",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "pricing_screen",
"screen_index": 2,
"total_screens": 4
}
}Onboarding yüklemesinin tamamlanması
Onboarding yüklenmeyi tamamladığında bu metod çağrılır:
override fun onFinishLoading(action: AdaptyOnboardingLoadedAction, context: Context) {
// Handle loading completion
}
Olay örneği (Genişletmek için tıklayın)
{
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "welcome_screen",
"screen_index": 0,
"total_screens": 4
}
}Navigasyon olayları
onAnalyticsEvent metodu, onboarding akışı sırasında çeşitli analitik olaylar gerçekleştiğinde çağrılır.
event nesnesi aşağıdaki türlerden biri olabilir:
| Tür | Açıklama |
|---|---|
OnboardingStarted | Onboarding yüklendiğinde |
ScreenPresented | Herhangi bir ekran gösterildiğinde |
ScreenCompleted | Bir ekran tamamlandığında. İsteğe bağlı elementId (tamamlanan öğenin tanımlayıcısı) ve isteğe bağlı reply (kullanıcının yanıtı) içerir. Kullanıcılar ekrandan çıkmak için herhangi bir eylem gerçekleştirdiğinde tetiklenir. |
SecondScreenPresented | İkinci ekran gösterildiğinde |
UserEmailCollected | Kullanıcının e-posta adresi giriş alanı aracılığıyla toplandığında tetiklenir |
OnboardingCompleted | Kullanıcı final ID’li bir ekrana ulaştığında tetiklenir. Bu olaya ihtiyaç duyuyorsanız son ekrana final ID’sini atayın. |
Unknown | Tanınmayan herhangi bir olay türü için. name (bilinmeyen olayın adı) ve meta (ek meta veri) içerir |
Her olay şu alanları içeren meta bilgisi barındırır:
| Alan | Açıklama |
|---|---|
onboardingId | Onboarding akışının benzersiz tanımlayıcısı |
screenClientId | Geçerli ekranın tanımlayıcısı |
screenIndex | Akıştaki geçerli ekranın konumu |
totalScreens | Akıştaki toplam ekran sayısı |
Analitik olayları takip etmek için nasıl kullanabileceğinize dair bir örnek:
override fun onAnalyticsEvent(event: AdaptyOnboardingAnalyticsEvent, context: Context) {
when (event) {
is AdaptyOnboardingAnalyticsEvent.OnboardingStarted -> {
// Track onboarding start
trackEvent("onboarding_started", event.meta)
}
is AdaptyOnboardingAnalyticsEvent.ScreenPresented -> {
// Track screen presentation
trackEvent("screen_presented", event.meta)
}
is AdaptyOnboardingAnalyticsEvent.ScreenCompleted -> {
// Track screen completion with user response
trackEvent("screen_completed", event.meta, event.elementId, event.reply)
}
is AdaptyOnboardingAnalyticsEvent.OnboardingCompleted -> {
// Track successful onboarding completion
trackEvent("onboarding_completed", event.meta)
}
is AdaptyOnboardingAnalyticsEvent.Unknown -> {
// Handle unknown events
trackEvent(event.name, event.meta)
}
// Handle other cases as needed
}
}
Olay örnekleri (Genişletmek için tıklayın)
// OnboardingStarted
{
"name": "onboarding_started",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "welcome_screen",
"screen_index": 0,
"total_screens": 4
}
}
// ScreenPresented
{
"name": "screen_presented",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "interests_screen",
"screen_index": 2,
"total_screens": 4
}
}
// ScreenCompleted
{
"name": "screen_completed",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "profile_screen",
"screen_index": 1,
"total_screens": 4
},
"params": {
"element_id": "profile_form",
"reply": "success"
}
}
// SecondScreenPresented
{
"name": "second_screen_presented",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "profile_screen",
"screen_index": 1,
"total_screens": 4
}
}
// UserEmailCollected
{
"name": "user_email_collected",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "profile_screen",
"screen_index": 1,
"total_screens": 4
}
}
// OnboardingCompleted
{
"name": "onboarding_completed",
"meta": {
"onboarding_id": "onboarding_123",
"screen_cid": "final_screen",
"screen_index": 3,
"total_screens": 4
}
}