Unity SDK'da onboarding olaylarını yönetme

Başlamadan önce şunları kontrol edin:

  1. Adapty Unity SDK 3.14.0 veya daha yeni bir sürüm kurulu olmalı.
  2. Bir onboarding oluşturmuş olmalısınız.
  3. Onboarding’i bir placement’a eklemiş olmalısınız.

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 öğrenebilirsiniz.

Unity uygulamanızda onboarding ekranında gerçekleşen süreçleri kontrol etmek veya izlemek için AdaptyOnboardingsEventsListener arayüzünü uygulayın.

Özel eylemler

Builder’da bir butona custom (özel) eylem ekleyip bir ID atayabilirsiniz.

ios-events-1.webp

Bu ID’yi kodunuzda kullanarak özel bir eylem olarak işleyebilirsiniz. Örneğin, kullanıcı Login veya Allow notifications gibi özel bir butona dokunduğunda, OnboardingViewOnCustomAction metodu actionId parametresiyle tetiklenir; bu parametre builder’daki Action ID değerine karşılık gelir. “allowNotifications” gibi kendi ID’lerinizi oluşturabilirsiniz.

Onboarding olaylarını yönetmek için AdaptyOnboardingsEventsListener arayüzünü uygulayın:

public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
    void Start()
    {
        Adapty.SetOnboardingsEventsListener(this);
    }

    public void OnboardingViewOnCustomAction(
        AdaptyUIOnboardingView view,
        AdaptyUIOnboardingMeta meta,
        string actionId
    )
    {
        if (actionId == "allowNotifications") {
            // request notification permissions
        }
    }
    
    public void OnboardingViewDidFailWithError(
        AdaptyUIOnboardingView view,
        AdaptyError error
    )
    {
        // handle errors
    }

    // Implement other required interface methods (see examples below)
}
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

Onboarding, kullanıcı Close eylemi atanmış bir butona dokunduğunda kapanmış sayılır.

ios-events-2.webp

Kullanıcı onboarding’i kapattığında ne olacağını kendiniz yönetmeniz gerektiğini unutmayın. Örneğin, onboarding’in görüntülenmesini durdurmanız gerekir.

Sınıfınızda OnboardingViewOnCloseAction metodunu uygulayın:

public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
    public void OnboardingViewOnCloseAction(
        AdaptyUIOnboardingView view,
        AdaptyUIOnboardingMeta meta,
        string actionId
    )
    {
        view.Dismiss((error) => {
            if (error != null) {
                // handle the error
            }
        });
    }
    
    // ... other interface methods
}
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. Onboarding kapandıktan sonra paywall açmak istiyorsanız daha basit bir yol var: OnboardingViewOnCloseAction olayını işleyip olay verilerine bağlı kalmadan doğrudan paywall açabilirsiniz.

Kullanıcı bir paywall açan butona tıkladığında, manuel olarak ayarladığınız buton eylem ID’sini alırsınız. Onboarding’lerde paywall’larla çalışmanın en sorunsuz yolu, eylem ID’sini paywall placement ID’sine eşit yapmaktır. Bu sayede OnboardingViewOnPaywallAction olayının ardından placement ID’yi kullanarak paywall’ı hemen alıp açabilirsiniz.

iOS’ta aynı anda ekranda yalnızca bir görünüm (paywall veya onboarding) gösterilebilir. Onboarding’in üzerine bir paywall sunarsanız, arka plandaki onboarding’i programatik olarak kontrol edemezsiniz. Onboarding’i kapatmaya çalışırsanız bunun yerine paywall kapanır ve onboarding görünür kalır. Bunu önlemek için paywall sunmadan önce her zaman onboarding görünümünü kapatın.

public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
    public void OnboardingViewOnPaywallAction(
        AdaptyUIOnboardingView view,
        AdaptyUIOnboardingMeta meta,
        string actionId
    )
    {
        // Dismiss onboarding before presenting paywall
        view.Dismiss((dismissError) => {
            if (dismissError != null) {
                // handle the error
                return;
            }

            Adapty.GetPaywall(actionId, (paywall, error) => {
                if (error != null) {
                    // handle the error
                    return;
                }

                AdaptyUI.CreatePaywallView(paywall, (paywallView, createError) => {
                    if (createError != null) {
                        // handle the error
                        return;
                    }

                    paywallView.Present((presentError) => {
                        if (presentError != null) {
                            // handle the error
                        }
                    });
                });
            });
        });
    }
    
    // ... other interface methods
}
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üklemesi tamamlandığında OnboardingViewDidFinishLoading metodunu uygulayın:

public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
    public void OnboardingViewDidFinishLoading(
        AdaptyUIOnboardingView view,
        AdaptyUIOnboardingMeta meta
    )
    {
        // handle loading completion
    }
    
    // ... other interface methods
}
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
    }
}

Navigasyonu izleme

OnboardingViewOnAnalyticsEvent metodu, onboarding akışı sırasında çeşitli analitik olaylar gerçekleştiğinde çağrılır.

analyticsEvent nesnesi aşağıdaki türlerden biri olabilir:

TürAçıklama
AdaptyOnboardingsAnalyticsEventOnboardingStartedOnboarding yüklendiğinde
AdaptyOnboardingsAnalyticsEventScreenPresentedHerhangi bir ekran gösterildiğinde
AdaptyOnboardingsAnalyticsEventScreenCompletedBir 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.
AdaptyOnboardingsAnalyticsEventSecondScreenPresentedİkinci ekran gösterildiğinde
AdaptyOnboardingsAnalyticsEventUserEmailCollectedKullanıcının e-postası giriş alanı aracılığıyla toplandığında tetiklenir
AdaptyOnboardingsAnalyticsEventOnboardingCompletedKullanıcı final ID’li bir ekrana ulaştığında tetiklenir. Bu olaya ihtiyacınız varsa son ekrana final ID’yi atayın.
AdaptyOnboardingsAnalyticsEventUnknownTanınmayan olay türleri için. Name (bilinmeyen olayın adı) ve meta (ek meta veriler) içerir

Her olay şu alanları içeren meta bilgisini barındırır:

AlanAçıklama
OnboardingIdOnboarding akışının benzersiz tanımlayıcısı
ScreenClientIdMevcut ekranın tanımlayıcısı
ScreenIndexMevcut ekranın akıştaki konumu
ScreensTotalAkıştaki toplam ekran sayısı

Analitik olaylarını izleme amacıyla nasıl kullanabileceğinize dair bir örnek:

public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
    public void OnboardingViewOnAnalyticsEvent(
        AdaptyUIOnboardingView view,
        AdaptyUIOnboardingMeta meta,
        AdaptyOnboardingsAnalyticsEvent analyticsEvent
    )
    {
        switch (analyticsEvent) {
            case AdaptyOnboardingsAnalyticsEventOnboardingStarted:
                // track onboarding start
                TrackEvent("onboarding_started", meta);
                break;
            case AdaptyOnboardingsAnalyticsEventScreenPresented:
                // track screen presentation
                TrackEvent("screen_presented", meta);
                break;
            case AdaptyOnboardingsAnalyticsEventScreenCompleted screenCompleted:
                // track screen completion with user response
                TrackEvent("screen_completed", meta, screenCompleted.ElementId, screenCompleted.Reply);
                break;
            case AdaptyOnboardingsAnalyticsEventOnboardingCompleted:
                // track successful onboarding completion
                TrackEvent("onboarding_completed", meta);
                break;
            case AdaptyOnboardingsAnalyticsEventUnknown unknownEvent:
                // handle unknown events
                TrackEvent(unknownEvent.Name, meta);
                break;
            // handle other cases as needed
        }
    }
    
    // ... other interface methods
}

TrackEvent metodu, analitik verilerini tercih ettiğiniz analitik servisine göndermek için kendiniz uygulamanız gereken bir yer tutucudur.

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
    }
}