Cómo funcionan los perfiles

Cada usuario de tu app tiene un perfil de Adapty que registra sus compras, eventos y estado de suscripción. Entender cómo se crean y vinculan los perfiles te ayuda a prevenir errores de integración, evitar la fragmentación de datos e interpretar correctamente la información en la sección Perfiles.

Creación de perfil

Adapty crea automáticamente un perfil la primera vez que un usuario abre tu app.

Sin un Customer User ID, el perfil es anónimo. Se crea un nuevo perfil anónimo cada vez que:

  • Un usuario reinstala la app
  • Un usuario cierra sesión en tu app (cuando tu app llama a Adapty.logout())

Las compras están vinculadas a la instalación de la app, no a una identidad de usuario persistente.

Con un Customer User ID, el perfil persiste entre reinstalaciones y dispositivos. Usar un Customer User ID te permite:

  1. Rastrea a un usuario en reinstalaciones y múltiples dispositivos.
  2. Busca usuarios por su customer user ID en la sección Profiles.
  3. Usa el customer user ID en la API server-side.
  4. Adapty envía el customer user ID a todas las integraciones.

El comportamiento del perfil con un customer user ID depende de cuándo lo configures:

  • Al activar el SDK: Adapty usa el perfil existente con ese customer user ID (para usuarios que regresan) o crea un nuevo perfil (para usuarios nuevos).
  • Después de activar el SDK: Adapty crea un perfil anónimo al activarse. Cuando identificas al usuario más adelante, Adapty vincula el customer user ID al perfil anónimo (para usuarios nuevos) o cambia al perfil existente con ese ID (para usuarios que regresan).

Qué enfoque usar:

  • ID de usuario disponible al iniciar la app (por ejemplo, guardado de una sesión anterior): pásalo a activate() al inicializar el SDK.
  • Los usuarios inician sesión después de abrir la app: llama a identify() tras la autenticación. Adapty vincula el ID al perfil actual (si el ID es nuevo) o cambia al perfil existente (si el ID ya existe).
  • Los usuarios pueden comprar antes de iniciar sesión: llama a identify() después del login. Si el customer user ID ya existe en Adapty, recupera el perfil a continuación para sincronizar el nivel de acceso actual. Para más detalles de implementación, consulta la guía del SDK sobre identificación de usuarios.

Si un usuario que regresa usaba tu app anteriormente sin un customer user ID, esos perfiles anónimos no se fusionan automáticamente cuando empiezas a identificar en la activación del SDK. Para mantener el historial completo de esos usuarios, usa identify() después del inicio de sesión.

Perfiles padre e hijo

Cuando la misma suscripción de la store está asociada a más de un perfil de Adapty, Adapty trata esos perfiles como una cadena: un perfil padre y uno o más perfiles herederos que comparten el acceso de la misma compra.

Esto ocurre cuando:

  • El acceso de pago compartido entre cuentas de usuario está habilitado y un usuario inicia sesión en un dispositivo donde un perfil diferente realizó previamente la compra.
  • Un usuario reinstala la app sin customer_user_id, y el nuevo perfil recoge la compra de la instalación anterior.
  • Diferentes usuarios identificados restauran compras en el mismo dispositivo.
  • Una app se transfiere entre Team IDs de Apple y la nueva app recoge las compras realizadas con el antiguo Team ID.

Cómo se selecciona el perfil principal. El perfil padre es el primer perfil en registrar la compra — determinado por el orden de los recibos de compra en Adapty, no por el orden de creación del perfil. Por ejemplo: instalas la app y no realizas ninguna compra, luego la reinstales y compras una suscripción. El segundo perfil se convierte en el padre porque realizó la compra. El primer perfil se convierte en el heredero y obtiene acceso a través del uso compartido.

Cómo se distribuyen los eventos:

  • Eventos transaccionales (compras, renovaciones, cancelaciones, problemas de facturación, períodos de gracia, reembolsos): Aparecen únicamente en el perfil principal que realizó la compra. Todas las renovaciones y actualizaciones de suscripción siguen apareciendo en ese perfil.
  • Eventos access_level_updated: Aparecen en el perfil principal y en los perfiles herederos cada vez que cambia el estado del nivel de acceso. Esto mantiene todos los perfiles vinculados al día sobre su estado de acceso actual. El perfil padre muestra el historial completo de transacciones. Los perfiles herederos solo muestran sus actualizaciones de nivel de acceso y un enlace al perfil padre en la sección Access level.
98d0dad-non-original_profile.webp

Seguimiento de la misma suscripción en varios perfiles. Cada perfil heredero tiene su propio profile_id, por lo que este no es estable a lo largo de una cadena. Para identificar la misma suscripción en varios perfiles —por ejemplo, al reconciliar eventos de webhook o relacionar perfiles del dashboard con un mismo usuario subyacente— utiliza el identificador del lado del store.

CampoUsar para
store_original_transaction_idIdentificar una cadena de suscripciones entre perfiles. Único por suscripción de Apple.
profiles_sharing_access_level (campo de webhook)Todos los perfiles con nivel de acceso activo gracias a la suscripción, cuando el uso compartido está habilitado.
profile_idNo es adecuado para el seguimiento entre perfiles: cada heredero tiene el suyo propio.

Compartir acceso de pago entre cuentas de usuario

Para configurar tu política de compartición de nivel de acceso, en la página de configuración General, selecciona una opción de sharing. Puedes establecer una política separada para el entorno sandbox.

Habilitado (predeterminado)

Los usuarios identificados (aquellos con un Customer User ID) pueden compartir el mismo nivel de acceso proporcionado por Adapty si su dispositivo está vinculado al mismo Apple/Google ID. Esto es útil cuando un usuario reinstala la app e inicia sesión con un correo diferente: seguirá teniendo acceso a su compra anterior. Con esta opción, varios usuarios identificados pueden compartir el mismo nivel de acceso.

Aunque el nivel de acceso se comparte, todas las transacciones pasadas y futuras se registran como eventos en el Customer User ID original para mantener análisis coherentes y conservar un historial completo de transacciones, incluyendo períodos de prueba, compras de suscripción, renovaciones y más, vinculados al mismo perfil.

Transferir acceso al nuevo usuario

Los usuarios identificados pueden seguir accediendo al nivel de acceso proporcionado por Adapty, incluso si inician sesión con un Customer User ID diferente o reinstalan la app, siempre que el dispositivo esté vinculado al mismo Apple/Google ID.

A diferencia de la opción anterior, Adapty transfiere la compra entre usuarios identificados. Esto garantiza que el contenido adquirido esté disponible, pero solo un usuario puede tener acceso a la vez. Por ejemplo, si UserA compra una suscripción y UserB inicia sesión en el mismo dispositivo y restaura las transacciones, UserB obtendrá acceso a la suscripción y se le revocará a UserA.

Si uno de los usuarios (ya sea el nuevo o el anterior) no está identificado, el nivel de acceso seguirá compartiéndose entre esos perfiles en Adapty.

Aunque el nivel de acceso se transfiere, todas las transacciones pasadas y futuras se registran como eventos en el Customer User ID original para mantener análisis coherentes y conservar un historial completo de transacciones, incluyendo períodos de prueba, compras de suscripción, renovaciones y más, vinculados al mismo perfil.

Después de cambiar a Transferir acceso al nuevo usuario, los niveles de acceso no se transferirán entre perfiles de inmediato. El proceso de transferencia para cada nivel de acceso específico se activa solo cuando Adapty recibe un evento del store, como la renovación de una suscripción, una restauración o al validar una transacción.

Deshabilitado

El primer perfil de usuario identificado que obtenga un nivel de acceso lo conservará para siempre. Esta es la mejor opción si la lógica de negocio de tu app requiere que las compras estén vinculadas a un único Customer User ID.

Ten en cuenta que los niveles de acceso siguen compartiéndose entre usuarios anónimos.

Puedes “desvincular” una compra eliminando el perfil del usuario propietario. Tras la eliminación, el nivel de acceso queda disponible para el primer perfil de usuario que lo reclame, ya sea anónimo o identificado.

Deshabilitar el uso compartido solo afecta a los nuevos usuarios. Las suscripciones que ya se comparten entre usuarios seguirán compartiéndose incluso después de deshabilitar esta opción.

Apple y Google exigen que las compras in-app se compartan o transfieran entre usuarios porque se basan en el Apple/Google ID para asociar la compra. Sin el uso compartido, restaurar compras podría no funcionar tras reinstalaciones posteriores.

Deshabilitar el uso compartido puede impedir que los usuarios recuperen el acceso al iniciar sesión.

Recomendamos deshabilitar el uso compartido solo si tus usuarios deben iniciar sesión antes de realizar una compra. De lo contrario, un usuario identificado podría comprar una suscripción, iniciar sesión en otra cuenta y perder el acceso de forma permanente.

¿Qué opción debo elegir?

Mi app…Opción a elegir
No tiene sistema de inicio de sesión y solo usa los IDs de perfil anónimos de Adapty.Usa la opción predeterminada, ya que los niveles de acceso siempre se comparten entre IDs de perfil anónimos en las tres opciones.
Tiene un sistema de inicio de sesión opcional y permite a los clientes realizar compras antes de crear una cuenta.Elige Transferir acceso al nuevo usuario para garantizar que los clientes que compren sin una cuenta puedan restaurar sus transacciones más adelante.
Requiere que los clientes creen una cuenta antes de comprar, pero permite que las compras estén vinculadas a varios Customer User IDs.Elige Transferir acceso al nuevo usuario para garantizar que solo un Customer User ID tenga acceso a la vez, permitiendo a los usuarios iniciar sesión con un Customer User ID diferente sin perder su acceso de pago.
Requiere que los clientes creen una cuenta antes de comprar, con reglas estrictas que vinculan las compras a un único Customer User ID.Elige Deshabilitado para garantizar que las transacciones nunca se transfieran entre cuentas.

Marcas de tiempo de eventos con fechas futuras (Apple/iOS)

Este comportamiento es exclusivo de la App Store de Apple. El sistema de notificaciones de Google Play no envía eventos con antelación.

Las marcas de tiempo de eventos en los perfiles e integraciones pueden mostrar fechas futuras porque Apple envía los eventos de renovación por adelantado.

  • Por qué ocurre: Apple hace esto para garantizar que las suscripciones se renueven automáticamente antes de que expiren, evitando interrupciones en el servicio del usuario. Para más detalles, consulta el Apple Developer Forum: Server Notifications for Subscriptions.
  • Tipos de eventos afectados: Por lo general, esto aplica a las renovaciones de suscripción y las conversiones de prueba a pago. Estos eventos pueden tener marcas de tiempo futuras porque Apple notifica a los sistemas con antelación.
  • Otros tipos de eventos: Las compras in-app adicionales y los cambios de plan de suscripción se registran con sus marcas de tiempo reales, ya que estos eventos no se pueden predecir con antelación.
  • Impacto en Analytics y el Event Feed: Estos eventos solo aparecerán en Analytics y el Event Feed una vez que sus marcas de tiempo hayan pasado. Los eventos con marcas de tiempo futuras no se muestran en ninguna de las dos secciones.
  • Impacto en las integraciones: Adapty envía los eventos a las integraciones en cuanto los recibe. Si un evento tiene una marca de tiempo futura, Adapty lo envía a tu integración con esa marca de tiempo futura sin modificar.

Pasos siguientes