Funciona con cualquier agente compatible con skills. Para actualizar, ejecuta npx skills update.
npx skills add adaptyteam/adapty-skills --all
Las skills cubren la integración del SDK, la creación de flows y paywalls, las auditorías previas a la publicación, la migración de placements y mucho más. Describe la tarea en lenguaje natural y tu agente elegirá la skill adecuada.
Para habilitar las compras in-app, necesitas entender tres conceptos clave:
Products – todo lo que los usuarios pueden comprar (suscripciones, consumibles, acceso de por vida)
Flows – secuencias de pantallas que presentan productos a los usuarios, creadas con el Flow & Paywall Builder sin código. El SDK las obtiene mediante getFlow. Si prefieres construir la interfaz en tu propio código, usa un paywall en su lugar — consulta Implementar paywalls manualmente.
Placements – dónde y cuándo mostrar flows en tu app (como main, onboarding, settings). Asocias flows a placements en el dashboard y luego los solicitas por ID de placement en tu código. Esto facilita ejecutar pruebas A/B y mostrar flows distintos a diferentes usuarios.
Adapty te ofrece tres formas de habilitar compras en tu aplicación. Selecciona la que mejor se adapte a tus requisitos:
Implementas la UI de tu paywall en el código de tu app, pero sigues obteniendo el objeto flow de Adapty para mantener flexibilidad en la oferta de productos. Consulta la guía.
Modo Observer
🔴 Difícil
Ya tienes tu propia infraestructura de gestión de compras y quieres seguir usándola. Ten en cuenta que el modo Observer tiene limitaciones en Adapty. Consulta el artículo.
Important
Los pasos a continuación muestran cómo implementar un flow creado en el Adapty Flow & Paywall Builder.
Para mostrar un flow creado en el Adapty Flow & Paywall Builder, en el código de tu app solo necesitas:
Obtén el flow: Obtenlo desde Adapty.
Muéstralo y Adapty gestionará las compras por ti: Muestra la vista en tu app.
Gestiona las acciones de los botones: Asocia las interacciones del usuario con la respuesta de tu app. Por ejemplo, abre enlaces o cierra el flow cuando los usuarios pulsen botones.
Instala y activa el SDK en el código de tu app. Esta guía usa las APIs del SDK de Adapty para iOS v4.
1. Obtén el flow
Tus flows están asociados a placements configurados en el dashboard. Los placements te permiten ejecutar distintos flows para diferentes audiencias o realizar pruebas A/B.
Para obtener un flow creado en el Adapty Flow & Paywall Builder, necesitas:
Obtener el objeto flow por el ID del placement usando el método getFlow y comprobar si tiene una configuración de vista.
Obtener la configuración de vista usando el método getFlowConfiguration. Esta contiene los elementos de UI y el estilo necesarios para mostrar el flow.
func loadFlow() async { let flow = try await Adapty.getFlow(placementId: "YOUR_PLACEMENT_ID") guard flow.hasViewConfiguration else { print("Flow doesn't have a view configuration") return } flowConfiguration = try await AdaptyUI.getFlowConfiguration(forFlow: flow)}
2. Mostrar el flow
Ahora que tienes la configuración del flow, basta con añadir unas pocas líneas para mostrarlo.
En SwiftUI, al mostrar el flow, también necesitas gestionar los eventos. didFinishPurchase, didFailPurchase, didFinishRestore, didFailRestore y didReceiveError son obligatorios. Durante las pruebas, puedes copiar el código del fragmento de abajo para registrar estos eventos.
Tip
El flow no se cierra automáticamente tras una compra exitosa. En didFinishPurchase, establece tu binding de presentación en false para cerrarlo, o no hagas nada para que el flow continúe a sus siguientes pantallas.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didFinishPurchase: { product, purchaseResult in print("Purchase finished successfully") flowPresented = false // or do nothing to let the flow continue }, didFailPurchase: { product, error in print("Purchase failed: \(error)") }, didFinishRestore: { profile in print("Restore finished successfully") }, didFailRestore: { error in print("Restore failed: \(error)") }, didReceiveError: { error in flowPresented = false print("Flow error: \(error)") })
Implementa AdaptyFlowControllerDelegate para gestionar eventos. Como mínimo, implementa los cuatro métodos que no tienen implementación por defecto. Ten en cuenta que el controlador no se cierra automáticamente tras una compra exitosa — ciérralo en didFinishPurchase, o no hagas nada para dejar que el flow continúe a sus siguientes pantallas:
Para más detalles sobre cómo mostrar un flow, consulta nuestra guía.
3. Gestionar las acciones de los botones
Cuando los usuarios pulsan botones, el SDK de iOS gestiona automáticamente las compras, la restauración, el cierre del flow y la apertura de enlaces.
Sin embargo, otros botones tienen IDs personalizados o predefinidos y requieren que gestiones las acciones en tu código. O puede que quieras sobreescribir su comportamiento por defecto.
Por ejemplo, así es como gestionar el botón de cierre. En UIKit, el SDK descarta el controlador automáticamente cuando se dispara .close — sobreescríbelo solo si quieres un comportamiento personalizado. En SwiftUI, debes establecer tu binding isPresented a false tú mismo.
Tip
Lee nuestras guías sobre cómo gestionar acciones y eventos de los botones.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didPerformAction: { action in switch action { case .close: flowPresented = false // dismiss the flow when the user taps close default: break } }, didFinishPurchase: { product, purchaseResult in flowPresented = false }, didFailPurchase: { product, error in /* handle the error */ }, didFinishRestore: { profile in /* check access level and dismiss */ }, didFailRestore: { error in /* handle the error */ }, didReceiveError: { error in flowPresented = false })
¿Tienes preguntas o estás teniendo algún problema? Consulta nuestro foro de soporte donde encontrarás respuestas a preguntas frecuentes o podrás plantear las tuyas. ¡Nuestro equipo y la comunidad están aquí para ayudarte!
Tu paywall está listo para mostrarse en la app. Prueba tus compras en modo sandbox para asegurarte de que puedes completar una compra de prueba desde el paywall.