Ordre d'appel dans le SDK Android
Adapty.activate() doit se terminer avant d’appeler toute autre méthode du SDK Adapty. Tant qu’elle n’est pas complète, le SDK n’a aucun état. Tout appel émis avant ou en parallèle d’activate() échoue avec ADAPTY_NOT_INITIALIZED.
Si votre application authentifie les utilisateurs et que vous collectez un customer user ID après le lancement, appelez Adapty.identify() à ce moment-là. N’appelez pas les méthodes liées aux actions utilisateur avant que le callback de complétion d’identify ne se déclenche. Les appels en concurrence avec celui-ci renvoient soit une erreur dans leur callback, soit se retrouvent sur le profil anonyme créé à l’activation. Dans ce cas, l’attribution, les identifiants MMP comme appsflyer_id, et la propriété de l’installation ne sont pas toujours transférés vers le 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 UID avant d’appeler Adapty.activate. Sinon, l’ID MMP est associé à un profil anonyme éphémère et n’est pas toujours transféré au profil identifié. Pour les détails spécifiques à AppsFlyer, consultez AppsFlyer.
L’ordre correct
Votre parcours dépend de deux choses : le moment où vous connaissez l’identifiant utilisateur client, et si vous utilisez un MMP ou un SDK d’analyse.
- Étapes 2 et 5 : Obligatoires pour chaque application. Activez le SDK, puis appelez les méthodes du SDK.
- Étapes 1 et 3 : Requises uniquement si vous intégrez un MMP ou un SDK d’analyse (AppsFlyer, Adjust, Branch, PostHog).
- Étape 4 : Requise uniquement si votre application authentifie les utilisateurs et collecte 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 | Notes |
|---|---|---|---|
| 1 | Initialiser votre SDK MMP ou analytique (AppsFlyer, Adjust, PostHog, Branch) | Au lancement de l’app, en premier | Attendez le callback UID du MMP, par exemple getAppsFlyerUID. |
| 2a | Adapty.activate(context, AdaptyConfig.Builder("KEY").withCustomerUserId(...).build()) | Au lancement de l’app, après l’étape 1, si vous avez l’ID utilisateur client | Recommandé. Aucun profil anonyme n’est créé. |
| 2b | Adapty.activate(context, AdaptyConfig.Builder("KEY").build()) sans customerUserId | Au lancement de l’app, après l’étape 1, si vous n’avez pas l’ID utilisateur client (ou ne le collectez jamais) | Adapty crée un profil anonyme. |
| 3 | Adapty.setIntegrationIdentifier(AdaptyIntegrationIdentifier.appsflyerId(uid)) { error -> ... } | Après l’étape 2, avant tout appel déclenché par l’utilisateur | Indispensable pour que les ID MMP soient associés au bon profil. Passez une liste d’identifiants pour configurer plusieurs MMP en un seul appel. |
| 4 | Adapty.identify("YOUR_USER_ID") { error -> ... } | Après l’étape 3 (ou l’étape 2 si pas de MMP), avant l’étape 5 — uniquement sur le chemin 2b avec authentification | Utilisez le callback de complétion. Les appels concurrents pendant identify peuvent atterrir sur le profil anonyme. |
| 5 | getPaywall, getPaywallProducts, restorePurchases, makePurchase, updateExternalAttribution, updateProfile | Après l’étape 4 si vous appelez identify ; sinon après l’étape 3 (ou l’étape 2 si pas de MMP) | Ces appels nécessitent un profil stable. |
Ignorer ces étapes entraîne une perte d’accès premium pour les utilisateurs de retour, l’absence d’appsflyer_id sur les profils, et des paywalls renvoyés pour la mauvaise audience.
Installations via Web2app et web-funnel
Si des utilisateurs effectuent un achat sur une page de paiement web (Stripe, Paddle) et installent ensuite l’application native, le premier appel à 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 avant le lancement de l’application (depuis votre flux d’authentification ou le référent d’installation), transmettez-le directement dans AdaptyConfig.Builder. Sinon, l’achat web reste invisible sur l’appareil tant que vous n’appelez pas identify("YOUR_USER_ID") puis restorePurchases.
Pour les métadonnées à envoyer avec chaque paiement web, consultez :