Migración desde Superwall

La mayoría de las migraciones desde Superwall a Adapty llevan unas dos horas. Cambias el SDK, apuntas las notificaciones del servidor de la store a Adapty y publicas una nueva versión de la app. Tus suscriptores de pago conservan su acceso — Adapty lo restaura desde los recibos de App Store y Google Play en el primer arranque.

Tus suscriptores migrarán automáticamente

Todos los usuarios que alguna vez hayan activado una suscripción pasan a Adapty en cuanto abran una nueva versión de tu app con el SDK de Adapty. La validación del estado de la suscripción y el acceso premium se restauran automáticamente.

Cómo está organizada esta guía

La migración tiene seis pasos:

  1. Mapea los conceptos de Superwall a Adapty
  2. Instala el SDK de Adapty
  3. Reemplaza las llamadas al SDK
  4. Cambia las notificaciones del servidor de App Store y Google Play
  5. Prueba y publica
  6. (Opcional) Importa datos históricos

Mapea los conceptos de Superwall a Adapty

La mayoría de los conceptos de Superwall tienen un equivalente directo en Adapty:

SuperwallAdaptyQué cambia
CampaignPlacement + AudienceLa lógica de la campaña se divide en un placement (la ubicación) y una audiencia (la regla).
PlacementPlacementMismo concepto, mismo nombre.
Audience filterAudienceLos conjuntos de reglas viven dentro de un placement.
EntitlementNivel de accesoIdentificador con nombre (por ejemplo, premium).
WebView paywallPaywall de Paywall BuilderRenderizado por el SDK de Adapty de forma nativa en lugar de un WKWebView.
PurchaseControllerIntegradoNo hay protocolo que implementar — Adapty gestiona las compras.
Feature gatingComprobación de nivel de accesoComprueba profile.accessLevels["premium"]?.isActive.

Hay dos cambios conceptuales que vale la pena tener en cuenta antes de tocar el código:

  • Obtener y presentar son pasos separados: El método register de Superwall obtiene el paywall, evalúa la campaña y presenta la interfaz en una sola llamada. Adapty divide estos pasos — obtienes el paywall, su configuración de vista y luego lo presentas. Esto añade unas pocas líneas, pero te permite precargar configuraciones, mostrar un estado de carga personalizado o cancelar la presentación según tu propia lógica.
  • El estado de la suscripción es por nivel de acceso: Superwall expone una sola propiedad publicada subscriptionStatus. Adapty devuelve un AdaptyProfile con niveles de acceso con nombre, de modo que un usuario puede tener los niveles de acceso sports y science de forma independiente. Para lecturas síncronas, guarda en caché el perfil del AdaptyDelegate en lugar de llamar a getProfile() en cada carga de vista.

Instala el SDK de Adapty

Instala el SDK de Adapty para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor — y elimina SuperwallKit de tu proyecto al mismo tiempo.

Reemplaza las llamadas al SDK

Revisa cada área de tu integración y sustituye la llamada de Superwall por su equivalente en Adapty. Los enlaces al final de cada subsección cubren los siete SDKs de plataforma — sigue el que corresponda a tu app.

Inicializa el SDK

Reemplaza Superwall.configure con Adapty.activate.

Consulta la guía de instalación para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Identifica y desconecta usuarios

Reemplaza Superwall.shared.identify con Adapty.identify y Superwall.shared.reset con Adapty.logout. Ambos SDKs generan un perfil anónimo en el primer arranque, por lo que estas llamadas solo son necesarias cuando un usuario inicia o cierra sesión. Vuelve a obtener los paywalls después de identificar — el nuevo usuario puede resolverse a una audiencia diferente.

Consulta la guía de identificación para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Obtén y presenta un paywall

Reemplaza Superwall.shared.register con un flujo de dos pasos: obtén el paywall con Adapty.getPaywall, carga su configuración de vista con AdaptyUI.getPaywallConfiguration y luego preséntalo.

Dos diferencias a destacar:

  • El feature gating reemplaza el closure feature:: Después de que se cierre el paywall, comprueba el nivel de acceso activo en el perfil devuelto (o en Adapty.getProfile) y ramifica desde ahí.
  • Los paywalls son renderizados por el SDK: Superwall renderiza los paywalls dentro de un WKWebView. Adapty renderiza los paywalls del Paywall Builder de forma nativa — las fuentes, la información del producto y los botones los dibuja el SDK.

Consulta la guía de inicio rápido de paywalls para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Comprueba el estado de la suscripción

Reemplaza Superwall.shared.subscriptionStatus con una comprobación del nivel de acceso con nombre en el perfil: profile.accessLevels["premium"]?.isActive. Observa los cambios mediante AdaptyDelegate.didLoadLatestProfile(_:) en lugar del patrón de propiedad @Published, y guarda el perfil en caché en tu lado para lecturas síncronas.

Consulta la guía de estado de suscripción para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Gestiona compras y restauraciones

Con el Paywall Builder, ambos SDKs procesan las compras automáticamente dentro de la interfaz del paywall — puedes saltarte este paso.

Para paywalls personalizados, Superwall requiere una implementación de PurchaseController. Adapty no: reemplaza PurchaseController.purchase con Adapty.makePurchase y PurchaseController.restorePurchases con Adapty.restorePurchases. El SDK gestiona la validación por su cuenta.

Consulta la guía de inicio rápido de paywall personalizado para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Configura atributos de usuario

Reemplaza Superwall.shared.setUserAttributes con Adapty.updateProfile.

Consulta la guía de atributos de usuario para tu plataforma — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity o Capacitor.

Cambia las notificaciones del servidor de App Store y Google Play

Apunta las notificaciones del servidor de la store a Adapty. Adapty funciona sin ellas, pero las analíticas, las integraciones de terceros y las métricas de pruebas A/B dependen de ellas:

Si quieres ejecutar Superwall y Adapty en paralelo durante el lanzamiento, usa el reenvío de eventos sin procesar — Adapty reenvía los eventos de la store a Superwall mientras verificas la nueva integración.

Prueba y publica

Antes de publicar, comprueba cada elemento:

  • Configurado el Adapty Dashboard (productos, paywalls, placements, niveles de acceso)
  • Instalado el SDK de Adapty
  • Reemplazadas las llamadas al SDK de Superwall por sus equivalentes en Adapty
  • Apuntadas las notificaciones del servidor de App Store y Google Play a Adapty
  • Realizada una compra en sandbox
  • Enviada una nueva versión de la app

Revisa el checklist de lanzamiento para una validación final.

(Opcional) Importa datos históricos

Superwall no es dueño de tu estado de suscripción — lo son App Store y Google Play. Adapty valida los recibos en el primer arranque, por lo que los usuarios de pago conservan su acceso sin necesidad de ninguna importación.

Si quieres que las transacciones históricas queden registradas en las analíticas de Adapty, sigue Importar datos históricos a Adapty. Espera al menos una semana después del lanzamiento del SDK para que tenga tiempo de recopilar precios de compra actualizados.

Preguntas frecuentes

¿Qué pasa con los suscriptores que no actualizan la app?

La mayoría de los usuarios actualizan sus apps automáticamente durante la noche, por lo que la proporción de usuarios en la versión anterior disminuye rápidamente. Los suscriptores en la versión antigua conservan su acceso directamente a través de App Store o Google Play — no es necesario forzar una actualización.

¿Las audiencias de mis campañas de Superwall se migran?

No. Los filtros de audiencia de Superwall y las audiencias de Adapty se configuran en dashboards diferentes y usan identificadores distintos. Recrea tu segmentación como audiencias dentro de los placements de Adapty. La mayoría de las apps tienen uno o dos placements (onboarding y un trigger general dentro de la app), por lo que la reconstrucción suele ser rápida.

¿Tiene Adapty un equivalente a getPresentationResult?

No como una sola llamada. Para comprobar si un placement mostraría un paywall, llama a Adapty.getPaywall(placementId:) y ramifica según el resultado. Si la llamada tiene éxito, hay un paywall asignado para la audiencia de ese usuario. Si falla porque no hay ningún paywall configurado, omite la presentación y ejecuta tu lógica de respaldo.