---
title: "Kotlin Multiplatform SDK'da çağrı sırası"
description: "Adapty SDK metodlarını doğru sırayla çağırarak premium erişim kaybını, eksik attribution'ı ve aralıklı aktivasyon hatalarını önleyin."
---

`Adapty.activate()` tamamlanmadan başka hiçbir Adapty SDK metodunu çağıramazsınız. Tamamlanana kadar SDK'nın herhangi bir durumu yoktur. `activate()` ile eş zamanlı ya da öncesinde yapılan her çağrı aktivasyon hatasıyla sonuçlanır. Bkz. [Kotlin Multiplatform SDK'da hataları yönetme](kmp-handle-errors).
Uygulamanız kullanıcıları doğruluyorsa ve başlatma sonrasında bir customer user ID topluyorsanız, o noktada `Adapty.identify()` çağırın. `identify` tamamlanana kadar kullanıcı eylemi gerektiren metotları çağırmayın. Bu metotlarla yarışan çağrılar ya hata döndürür 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 callback'lerini bekleyin. Aksi takdirde MMP ID'si kısa ömürlü anonim bir profile düşer ve tanımlanmış profile her zaman aktarılamaz. AppsFlyer'a özgü detaylar için [AppsFlyer](appsflyer) sayfasına bakın.
## Doğru sıra \{#the-correct-order\}

Takip edeceğiniz yol iki şeye bağlıdır: müşteri kullanıcı kimliğini ne zaman öğrendiğiniz ve bir MMP ya da analytics SDK kullanıp kullanmadığınız.

- **2. ve 5. adımlar**: Her uygulama için zorunludur. Önce SDK'yı etkinleştirin, ardından SDK metodlarını çağırın.
- **1. ve 3. adımlar**: Yalnızca bir MMP veya analytics 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şlatma sonrasında topluyorsa gereklidir.
Uygulama açılışında müşteri kullanıcı kimliğiniz varsa, `activate()` çağrısından önce `AdaptyConfig.Builder`'a aktarın (adım 2a). Bu yol hiçbir zaman anonim bir profil oluşturmaz, dolayısıyla adım 4 gereksizdir.
| Adım | Çağrı | Ne Zaman | Notlar |
|------|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|
| 1    | MMP veya analitik SDK'nızı başlatın (AppsFlyer, Adjust, PostHog, Branch)                                     | Uygulama açılışı, ilk sırada                                                                      | MMP'nin UID callback'ini bekleyin, örneğin `getAppsFlyerUID`.                                |
| 2a   | `Adapty.activate(configuration = AdaptyConfig.Builder("KEY").withCustomerUserId(...).build())`                | Uygulama açılışı, 1. adımdan sonra, customer user ID'ye sahipseniz                             | Önerilir. Anonim profil hiçbir zaman oluşturulmaz.                                             |
| 2b   | `Adapty.activate(configuration = AdaptyConfig.Builder("KEY").build())` `withCustomerUserId` olmadan           | Uygulama açılışı, 1. adımdan sonra, customer user ID'niz yoksa (veya hiç toplamıyorsanız) | Adapty anonim bir profil oluşturur.                                                           |
| 3    | Her MMP için `Adapty.setIntegrationIdentifier("appsflyer_id", uid)`                                           | 2. adımdan sonra, kullanıcı işlemi çağrısından önce                                              | MMP ID'lerinin doğru profile düşmesi için gereklidir.                                               |
| 4    | `Adapty.identify("YOUR_USER_ID").onSuccess { ... }.onError { ... }`                                           | 3. adımdan sonra (MMP yoksa 2. adımdan sonra), 5. adımdan önce — yalnızca kimlik doğrulama ile 2b yolunda | Kullanıcı işlemi çağrısından önce `onSuccess` bekleyin. `identify` sırasında yapılan eş zamanlı çağrılar anonim profile düşebilir. |
| 5    | `getPaywall`, `getPaywallProducts`, `restorePurchases`, `makePurchase`, `updateAttribution`, `updateProfile`  | `identify` çağırıyorsanız 4. adımdan sonra; aksi hâlde 3. adımdan (MMP yoksa 2. adımdan) sonra      | Bu çağrılar kararlı bir profile ihtiyaç duyar.                                                             |
:::important
Bu adımların atlanması, 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ı \{#web2app-and-web-funnel-installs\}

Kullanıcılar bir web checkout'u (Stripe, Paddle) üzerinden satın alım yapıp daha sonra native uygulamayı yüklerse, cihazdaki ilk `activate()` çağrısı yeni bir anonim profil oluşturur. Bu profil, web profiliyle ilişkilendirilmez. Customer user ID'yi uygulama başlatılmadan önce (auth akışından veya install referrer'dan) çözümleyebiliyorsanız, doğrudan `AdaptyConfig.Builder`'a aktarın. Aksi takdirde, `identify("YOUR_USER_ID")` ve ardından `restorePurchases` çağrısını yapana kadar web satın alımı cihazda görünmez.

Her web checkout'uyla birlikte gönderilecek metadata için bakınız:

- [Stripe](stripe)
- [Paddle](paddle)