React Native SDK'da çağrı sırası

adapty.activate() tamamlanmadan başka hiçbir Adapty SDK metodunu çağıramazsınız. Bu metod çözüme kavuşana kadar SDK’nın herhangi bir durumu yoktur. activate() tamamlanmadan veya bununla paralel olarak yapılan her çağrı #2002 notActivated hatasıyla başarısız olur. Uygulamanız kullanıcıları doğruluyorsa ve başlatma sonrasında bir müşteri kullanıcı kimliği topluyorsanız, o noktada adapty.identify() çağrısı yapın. identify tamamlanana kadar kullanıcı eylemine bağlı metodları çağırmayın. Bu çağrıyla yarışan işlemler ya #3006 profileWasChanged hatasıyla başarısız olur ya da aktivasyon sırasında oluşturulan anonim profile düşer. Bu durumda attribution, appsflyer_id gibi MMP ID’leri ve kurulum sahipliği her zaman tanımlanan profile aktarılmaz. Uygulamanız kullanıcıları doğrulamıyorsa identify çağrısını atlayın ve anonim profille çalışmaya devam edin. MMP ve analitik SDK’ları (AppsFlyer, Adjust, Branch, PostHog) aynı kurala tabidir. adapty.activate çağrısından önce bunları başlatın ve UID geri çağrımlarını bekleyin. Aksi takdirde MMP kimliği kısa ömürlü anonim bir profile bağlanır ve tanımlanmış profile her zaman aktarılamaz. AppsFlyer’a özgü ayrıntılar için bkz. AppsFlyer.

Doğru sıra

Hangi adımları izleyeceğiniz iki şeye bağlıdır: müşteri kullanıcı kimliğini ne zaman öğrendiğiniz ve bir MMP ya da analitik SDK kullanıp kullanmadığınız.

  • 2. ve 5. adımlar: Her uygulama için zorunludur. SDK’yı etkinleştirin, ardından SDK metodlarını çağırın.
  • 1. ve 3. adımlar: Yalnızca bir MMP veya analitik SDK entegre ediyorsanız gereklidir (AppsFlyer, Adjust, Branch, PostHog).
  • 4. adım: Yalnızca uygulamanız kullanıcıların kimliğini doğruluyorsa ve müşteri kullanıcı kimliğini başlatmadan sonra topluyorsa gereklidir. Uygulama başlangıcında müşteri kullanıcı kimliğine sahipseniz, onu doğrudan activate() içine aktarın (adım 2a). Bu yol hiçbir zaman anonim profil oluşturmaz; dolayısıyla adım 4’e gerek yoktur. | Adım | Çağrı | Ne Zaman | Notlar | |------|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------| | 1 | MMP veya analytics SDK’nızı başlatın (AppsFlyer, Adjust, PostHog, Branch) | Uygulama açılışı, ilk adım | MMP’nin UID callback’ini bekleyin, örneğin getAppsFlyerUID. | | 2a | adapty.activate('YOUR_PUBLIC_SDK_KEY', { customerUserId: 'YOUR_USER_ID' }) | Uygulama açılışı, adım 1’den sonra, müşteri kullanıcı kimliğiniz varsa | Önerilir. Anonim profil hiçbir zaman oluşturulmaz. | | 2b | adapty.activate('YOUR_PUBLIC_SDK_KEY') ile customerUserId olmadan | Uygulama açılışı, adım 1’den sonra, müşteri kullanıcı kimliğiniz yoksa (veya hiç toplamıyorsanız) | Adapty anonim bir profil oluşturur. | | 3 | Her MMP için adapty.updateAttribution(data, source, networkUserId) | Adım 2’den sonra, herhangi bir kullanıcı işlemi çağrısından önce | MMP kimliklerinin doğru profile düşmesi için gereklidir. | | 4 | await adapty.identify('YOUR_USER_ID') | Adım 3’ten sonra (veya MMP yoksa adım 2’den sonra), adım 5’ten önce — yalnızca kimlik doğrulamayla 2b yolunda | Her zaman await kullanın. identify sırasındaki eşzamanlı çağrılar #3006 profileWasChanged hatasını üretir. | | 5 | getPaywall, getPaywallProducts, restorePurchases, makePurchase, updateAttribution, updateProfile | identify çağırıyorsanız adım 4’ten sonra; aksi takdirde adım 3’ten sonra (veya MMP yoksa adım 2’den sonra) | Bu çağrılar kararlı bir profil gerektirir. |

Bu adımları atlamak, geri dönen kullanıcıların premium erişimini kaybetmesine, profillerde eksik appsflyer_id bilgisine ve yanlış kitle için döndürülen paywallara yol açar.

Web2app ve web-funnel kurulumları

Kullanıcılar bir web checkout (Stripe, Paddle) üzerinden satın alım yapıp daha sonra uygulamayı yüklerse, cihazda ilk activate() çağrısı yeni ve anonim bir profil oluşturur. Bu profil, web profiliyle ilişkilendirilmez. Auth akışından veya install referrer’dan müşteri kullanıcı kimliğini uygulama açılmadan önce çözebiliyorsanız, doğrudan activate() içine aktarın. Aksi takdirde web satın alımı, identify('YOUR_USER_ID') ve ardından restorePurchases çağırana kadar cihazda görünmez kalır.

Her web checkout ile birlikte gönderilecek metadata için şuraya bakın: