Ordre d'appel dans le SDK Kotlin Multiplatform
Adapty.activate() doit se terminer avant tout autre appel de méthode du SDK Adapty. Tant qu’il n’est pas terminé, le SDK n’a aucun état. Tout appel émis avant ou en parallèle d’activate() échoue avec une erreur d’activation. Voir Gestion des erreurs dans le SDK Kotlin Multiplatform.
Si votre application authentifie les utilisateurs et que vous récupérez un identifiant utilisateur client après le lancement, appelez Adapty.identify() à ce moment-là. N’appelez pas les méthodes liées aux actions utilisateur tant qu’identify n’est pas terminé. Les appels qui entrent en concurrence avec lui renvoient soit une erreur, soit atterrissent sur le profil anonyme créé lors de l’activation. Dans ce cas, l’attribution, les identifiants MMP comme appsflyer_id et la propriété d’installation ne sont pas toujours transférés au profil identifié. Si votre application n’authentifie pas les utilisateurs, ignorez identify et continuez à travailler avec le profil anonyme.
Les SDK MMP et analytics (AppsFlyer, Adjust, Branch, PostHog) suivent la même règle. Initialisez-les en premier et attendez leurs callbacks d’UID avant d’appeler Adapty.activate. Sinon, l’identifiant MMP atterrit sur un profil anonyme éphémère et n’est pas toujours transféré au profil identifié. Pour les spécificités d’AppsFlyer, voir AppsFlyer.
L’ordre correct
Votre chemin dépend de deux choses : quand vous connaissez l’identifiant utilisateur client, et si vous utilisez un SDK MMP ou analytics.
- Étapes 2 et 5 : Obligatoires pour toutes les applications. Activez le SDK, puis appelez les méthodes du SDK.
- Étapes 1 et 3 : Requises uniquement si vous intégrez un SDK MMP ou analytics (AppsFlyer, Adjust, Branch, PostHog).
- Étape 4 : Requise uniquement si votre application authentifie les utilisateurs et récupère l’identifiant utilisateur client après le lancement.
Si vous avez l’identifiant utilisateur client au lancement de l’application, passez-le dans AdaptyConfig.Builder avant d’appeler activate() (étape 2a). Ce chemin ne crée jamais de profil anonyme, l’étape 4 est donc inutile.
| Étape | Appel | Quand | Remarques |
|---|---|---|---|
| 1 | Initialisez votre SDK MMP ou analytics (AppsFlyer, Adjust, PostHog, Branch) | Lancement de l’application, en premier | Attendez le callback d’UID du MMP, par exemple getAppsFlyerUID. |
| 2a | Adapty.activate(configuration = AdaptyConfig.Builder("KEY").withCustomerUserId(...).build()) | Lancement de l’application, après l’étape 1, si vous avez l’identifiant utilisateur client | Recommandé. Aucun profil anonyme n’est jamais créé. |
| 2b | Adapty.activate(configuration = AdaptyConfig.Builder("KEY").build()) sans withCustomerUserId | Lancement de l’application, après l’étape 1, si vous n’avez pas l’identifiant utilisateur client (ou ne le collectez jamais) | Adapty crée un profil anonyme. |
| 3 | Adapty.setIntegrationIdentifier("appsflyer_id", uid) pour chaque MMP | Après l’étape 2, avant tout appel d’action utilisateur | Requis pour que les identifiants MMP atterrissent sur le bon profil. |
| 4 | Adapty.identify("YOUR_USER_ID").onSuccess { ... }.onError { ... } | Après l’étape 3 (ou l’étape 2 sans MMP), avant l’étape 5 — uniquement sur le chemin 2b avec authentification | Attendez onSuccess avant tout appel d’action utilisateur. Les appels concurrents pendant identify peuvent atterrir sur le profil anonyme. |
| 5 | getPaywall (getFlow dans SDK v4), getPaywallProducts, restorePurchases, makePurchase, updateAttribution, updateProfile | Après l’étape 4 si vous appelez identify ; sinon après l’étape 3 (ou l’étape 2 sans MMP) | Ces appels nécessitent un profil stable. |
Ignorer ces étapes entraîne la perte d’accès premium pour les utilisateurs existants, l’absence d’appsflyer_id sur les profils, et des paywalls renvoyés pour la mauvaise audience.
Installations web2app et web-funnel
Si des utilisateurs achètent via un paiement web (Stripe, Paddle) puis installent l’application native, le premier activate() sur l’appareil crée un nouveau profil anonyme. Ce profil n’est pas lié au profil web. Si vous pouvez résoudre l’identifiant utilisateur client avant le lancement de l’application (depuis votre flux d’authentification ou le referrer d’installation), passez-le directement dans AdaptyConfig.Builder. Sinon, l’achat web est invisible sur l’appareil jusqu’à ce que vous appeliez identify("YOUR_USER_ID") puis restorePurchases.
Pour les métadonnées à envoyer avec chaque paiement web, voir :