ÿÿ Orden de llamadas en el SDK de Kotlin Multiplatform | Documentación de Adapty

Orden de llamadas en el SDK de Kotlin Multiplatform

Adapty.activate() debe completarse antes de llamar a cualquier otro método del SDK de Adapty. Hasta que finalice, el SDK no tiene estado. Cualquier llamada realizada antes o en paralelo con activate() fallará con un error de activación. Consulta Gestionar errores en el SDK de Kotlin Multiplatform.

Si tu app autentica usuarios y recopilas un customer user ID después del lanzamiento, llama a Adapty.identify() en ese momento. No llames a métodos de acción del usuario hasta que identify haya completado. Las llamadas que compiten con él devuelven un error o recaen sobre el perfil anónimo creado en la activación. Cuando esto ocurre, la atribución, los IDs de MMP como appsflyer_id y la propiedad de la instalación no siempre se transfieren al perfil identificado. Si tu app no autentica usuarios, omite identify y sigue trabajando con el perfil anónimo.

Los SDKs de MMP y analítica (AppsFlyer, Adjust, Branch, PostHog) siguen la misma regla. Inicialízalos primero y espera sus callbacks de UID antes de llamar a Adapty.activate. De lo contrario, el ID del MMP se asigna a un perfil anónimo temporal y no siempre se transfiere al perfil identificado. Para más detalles sobre AppsFlyer, consulta AppsFlyer.

El orden correcto

Tu camino depende de dos cosas: cuándo conoces el ID de usuario del cliente y si usas un MMP o un SDK de analíticas.

  • Pasos 2 y 5: Obligatorios para todas las apps. Activa el SDK y luego llama a los métodos del SDK.
  • Pasos 1 y 3: Necesarios solo si integras un MMP o un SDK de analíticas (AppsFlyer, Adjust, Branch, PostHog).
  • Paso 4: Necesario solo si tu app autentica usuarios y recoge el ID de usuario del cliente después del lanzamiento.

Si tienes el ID de usuario en el momento del lanzamiento de la app, pásalo al AdaptyConfig.Builder antes de llamar a activate() (paso 2a). Con esta opción nunca se crea un perfil anónimo, por lo que el paso 4 es innecesario.

PasoLlamadaCuándoNotas
1Inicializa tu MMP o SDK de analíticas (AppsFlyer, Adjust, PostHog, Branch)Al lanzar la app, en primer lugarEspera el callback de UID del MMP, por ejemplo getAppsFlyerUID.
2aAdapty.activate(configuration = AdaptyConfig.Builder("KEY").withCustomerUserId(...).build())Al lanzar la app, después del paso 1, si tienes el customer user IDRecomendado. No se crea ningún perfil anónimo.
2bAdapty.activate(configuration = AdaptyConfig.Builder("KEY").build()) sin withCustomerUserIdAl lanzar la app, después del paso 1, si no tienes el customer user ID (o nunca lo recopilas)Adapty crea un perfil anónimo.
3Adapty.setIntegrationIdentifier("appsflyer_id", uid) para cada MMPDespués del paso 2, antes de cualquier llamada de acción del usuarioNecesario para que los IDs del MMP se asocien al perfil correcto.
4Adapty.identify("YOUR_USER_ID").onSuccess { ... }.onError { ... }Después del paso 3 (o el paso 2 si no hay MMP), antes del paso 5 — solo en la ruta 2b con autenticaciónEspera a onSuccess antes de cualquier llamada de acción del usuario. Las llamadas concurrentes durante identify pueden asociarse al perfil anónimo.
5getPaywall (getFlow en SDK v4), getPaywallProducts, restorePurchases, makePurchase, updateAttribution, updateProfileDespués del paso 4 si llamas a identify; en caso contrario, después del paso 3 (o el paso 2 si no hay MMP)Estas llamadas necesitan un perfil estable.

Omitir estos pasos provoca que los usuarios que regresan pierdan el acceso premium, que falte el appsflyer_id en los perfiles y que se devuelvan paywalls para la audiencia incorrecta.

Instalaciones web2app y de embudo web

Si los usuarios compran en un checkout web (Stripe, Paddle) e instalan la app nativa después, el primer activate() del dispositivo crea un nuevo perfil anónimo. Este perfil no está vinculado al perfil web. Si puedes resolver el customer user ID antes del lanzamiento de la app (desde tu flujo de autenticación o el referrer de instalación), pásalo directamente al AdaptyConfig.Builder. De lo contrario, la compra web será invisible en el dispositivo hasta que llames a identify("YOUR_USER_ID") y luego a restorePurchases.

Para los metadatos que debes enviar con cada checkout web, consulta:

ÿÿÿÿ