Ordre d'appel dans le SDK Kotlin Multiplatform

Adapty.activate() doit se terminer avant que vous n’appeliez toute autre 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 avec activate() échoue avec une erreur d’activation. Consultez Gérer les erreurs dans le SDK Kotlin Multiplatform.

Si votre application authentifie les utilisateurs et que vous collectez un identifiant utilisateur après le lancement, appelez Adapty.identify() à ce moment-là. N’appelez pas les méthodes d’action utilisateur avant la fin d’identify. Les appels qui s’exécutent en parallèle renvoient soit une erreur, soit atterrissent sur le profil anonyme créé à 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 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 d’UID avant d’appeler Adapty.activate. Sinon, l’identifiant 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’analytique.

  • É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 MMP ou un SDK d’analytique (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 au lancement de l’application, passez-le dans AdaptyConfig.Builder avant d’appeler activate() (étape 2a). Cette approche ne crée jamais de profil anonyme, donc l’étape 4 est inutile.

ÉtapeAppelQuandNotes
1Initialiser votre MMP ou SDK analytics (AppsFlyer, Adjust, PostHog, Branch)Au lancement de l’app, en premierAttendez le callback UID du MMP, par exemple getAppsFlyerUID.
2aAdapty.activate(configuration = AdaptyConfig.Builder("KEY").withCustomerUserId(...).build())Au lancement de l’app, après l’étape 1, si vous avez l’identifiant utilisateur clientRecommandé. Aucun profil anonyme n’est créé.
2bAdapty.activate(configuration = AdaptyConfig.Builder("KEY").build()) sans withCustomerUserIdAu lancement de l’app, 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.
3Adapty.setIntegrationIdentifier("appsflyer_id", uid) pour chaque MMPAprès l’étape 2, avant tout appel lié à une action utilisateurRequis pour que les identifiants MMP soient associés au bon profil.
4Adapty.identify("YOUR_USER_ID").onSuccess { ... }.onError { ... }Après l’étape 3 (ou l’étape 2 si pas de MMP), avant l’étape 5 — uniquement sur le chemin 2b avec authentificationAttendez onSuccess avant tout appel lié à une action utilisateur. Des appels simultanés pendant identify peuvent atterrir sur le profil anonyme.
5getPaywall (getFlow dans le SDK v4), getPaywallProducts, restorePurchases, makePurchase, updateAttribution (updateExternalAttribution dans le SDK 4.1), updateProfileAprè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.
Important

Ignorer ces étapes entraîne la perte d’accès premium pour les utilisateurs qui reviennent, l’absence d’appsflyer_id sur les profils, et des paywalls affichés pour la mauvaise audience.

Installations via web2app et web-funnel

Si des utilisateurs effectuent un achat via un paiement web (Stripe, Paddle) et installent ensuite l’application native, le premier appel à activate() depuis 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 referrer d’installation), passez-le directement dans AdaptyConfig.Builder. Sinon, l’achat web reste 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, consultez :