---
title: "Flutter SDK'da çağrı sırası"
description: "Adapty SDK metotlarını doğru sırayla çağırarak kayıp premium erişim, eksik attribution ve aralıklı #2002 hatalarından kaçının."
---

`Adapty().activate()` tamamlanmadan diğer hiçbir Adapty SDK metodunu çağıramazsınız. Bu metot çözümlenmeden SDK'nın herhangi bir durumu yoktur. `activate()` ile eş zamanlı ya da daha önce yapılan tüm çağrılar [`#2002 notActivated`](error-handling-on-flutter-react-native-unity#custom-network-codes) hatasıyla sonuçlanır.
Uygulamanız kullanıcıları doğruluyorsa ve başlatma sonrasında bir müşteri kullanıcı kimliği topluyorsanız, bu noktada `Adapty().identify()` çağrısını yapın. `identify` tamamlanana kadar kullanıcı eylemine bağlı metotları çağırmayın. Bununla yarışan çağrılar ya [`#3006 profileWasChanged`](error-handling-on-flutter-react-native-unity#custom-network-codes) hatasıyla başarısız olur ya da etkinleştirme sırasında oluşturulan anonim profile düşer. Bu durumda attribution, `appsflyer_id` gibi MMP kimlikleri 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 düşer ve tanımlı profile her zaman aktarılmaz. AppsFlyer'a özgü ayrıntılar için [AppsFlyer](appsflyer) sayfasına bakın.
## Doğru sıra \{#the-correct-order\}

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 yöntemlerini ç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şlatma sonrasında topluyorsa gereklidir.
Uygulama başlatıldığında müşteri kullanıcı kimliğiniz elinizde varsa, bunu doğrudan `activate()` fonksiyonuna geçirin (adım 2a). Bu yöntem hiçbir zaman anonim profil oluşturmaz, dolayısıyla 4. adım gereksizdir.
| Adım | Çağrı | Ne Zaman | Notlar |
|------|-------|----------|--------|
| 1 | MMP veya analitik SDK'nızı başlatın (AppsFlyer, Adjust, PostHog, Branch) | Uygulama başlatma, ilk sırada | MMP'nin UID geri çağrısını bekleyin, örneğin `getAppsFlyerUID`. |
| 2a | `Adapty().activate(configuration: ...)` ile `withCustomerUserId` yapılandırmada ayarlanmış | Uygulama başlatma, 1. adımdan sonra, müşteri kullanıcı kimliğiniz varsa | Önerilir. Hiçbir zaman anonim profil oluşturulmaz. |
| 2b | `Adapty().activate(configuration: ...)` `withCustomerUserId` olmadan | Uygulama başlatma, 1. adımdan 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().setIntegrationIdentifier(key: ..., value: ...)` | 2. adımdan sonra, herhangi bir kullanıcı eylemi çağrısından önce | MMP kimliklerinin doğru profile yazılması için gereklidir. |
| 4 | `await Adapty().identify(customerUserId)` | 3. adımdan sonra (veya MMP yoksa 2. adımdan sonra), 5. adımdan önce — yalnızca kimlik doğrulama ile 2b yolunda | Her zaman `await` kullanın. `identify` sırasında eş zamanlı çağrılar `#3006 profileWasChanged` hatasına yol açar. |
| 5 | `getPaywall`, `getPaywallProducts`, `restorePurchases`, `makePurchase`, `updateAttribution`, `updateProfile` | `identify` çağırıyorsanız 4. adımdan sonra; aksi takdirde 3. adımdan sonra (veya MMP yoksa 2. adımdan sonra) | Bu çağrılar kararlı bir profile ihtiyaç duyar. |
:::important
Bu adımları atlamak; geri dönen kullanıcıların premium erişimini kaybetmesine, profillerde eksik `appsflyer_id` bilgisine ve yanlış kitleye karşı döndürülen paywallara yol açar.
:::
## Web2app ve web-funnel yüklemeleri \{#web2app-and-web-funnel-installs\}

Kullanıcılar web üzerinden ödeme yapıp (Stripe, Paddle) sonradan uygulamayı yüklerse, cihazda ilk çalışan `activate()` yeni bir anonim profil oluşturur. Bu profil, web profiline bağlı değildir. Uygulama açılmadan önce müşteri kullanıcı kimliğini belirleyebiliyorsanız (auth akışınızdan veya install referrer üzerinden), bunu doğrudan `activate()` içine geçirin. Aksi takdirde web satın alımı, `identify("YOUR_USER_ID")` çağrısı yapıp ardından `restorePurchases` çağırana kadar cihazda görünmez.

Her web ödemesiyle gönderilecek metadata için şu sayfalara bakabilirsiniz:

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