Presentar flows en modo Observer - Kotlin Multiplatform
Si usas el modo Observer, tú eres responsable de tu propia lógica de compras. Pero puedes delegar la UI del paywall al Flow & Paywall Builder.
Diseña la pantalla en el builder, y el SDK de Adapty la renderiza de forma nativa. Actualiza el texto, el diseño y los precios cuando quieras, sin necesidad de publicar una nueva versión de la app.
Esta guía muestra cómo presentar un flow y gestionar los callbacks de compra. Si Adapty gestiona las compras por ti, consulta Mostrar flows y paywalls en su lugar.
Antes de empezar
Necesitas:
- Adapty Kotlin Multiplatform SDK 4.0 (beta) o posterior: Las versiones anteriores no pueden renderizar flows. Para migrar una aplicación existente, consulta la guía de migración.
withObserverMode(true)llamado en el configuration builder: Consulta la guía de instalación del SDK para Kotlin Multiplatform.- Integración inicial con el store: Configura Adapty con App Store y con Google Play.
- Un flow publicado con productos: Créalo en el Flow & Paywall Builder y asígnale productos.
- Un placement para el flow: Crea un placement y asígnale tu flow.
- El flow obtenido en tu app: Obtén el flow y su configuración antes de mostrarlo.
Implementación
En el modo Observer, el SDK no realiza compras por ti. Cuando un usuario pulsa el botón de compra o restauración en un flow renderizado por Adapty, el SDK llama a tu AdaptyUIObserverModeResolver en su lugar — realiza la compra o restauración con tu propio código allí.
-
Implementa la interfaz
AdaptyUIObserverModeResolver:import com.adapty.kmp.AdaptyUIObserverModeResolver import com.adapty.kmp.models.AdaptyPaywallProduct import com.adapty.kmp.models.AdaptyUIFlowView class MyObserverModeResolver : AdaptyUIObserverModeResolver { override fun observerModeDidInitiatePurchase( view: AdaptyUIFlowView, product: AdaptyPaywallProduct, onStartPurchase: () -> Unit, onFinishPurchase: () -> Unit ) { onStartPurchase() // the view shows its loading indicator // make the purchase with your own code, // then report the transaction to Adapty and call: onFinishPurchase() // the view hides the loading indicator } override fun observerModeDidInitiateRestore( view: AdaptyUIFlowView, onStartRestore: () -> Unit, onFinishRestore: () -> Unit ) { onStartRestore() // restore purchases with your own code, then: onFinishRestore() } }
El método observerModeDidInitiatePurchase te informa de que el usuario ha iniciado una compra, y observerModeDidInitiateRestore, de que el usuario ha iniciado una restauración. Activa tu flow de compra o restauración personalizado en respuesta.
Además, recuerda invocar los siguientes callbacks para notificar a AdaptyUI sobre el proceso de compra o restauración. Esto es necesario para el comportamiento correcto del flow, como mostrar el indicador de carga, entre otras cosas:
| Callback | Description |
|---|---|
| onStartPurchase() | Este callback debe invocarse para notificar a AdaptyUI que la compra ha comenzado. |
| onFinishPurchase() | Este callback debe invocarse para notificar a AdaptyUI que la compra ha finalizado. |
| onStartRestore() | Este callback debe invocarse para notificar a AdaptyUI que la restauración ha comenzado. |
| onFinishRestore() | Este callback debe invocarse para notificar a AdaptyUI que la restauración ha finalizado. |
El flow permanece abierto mientras se ejecuta tu código; ciérralo tú mismo tras una compra o restauración exitosa.
-
Registra el resolver antes de presentar cualquier pantalla:
import com.adapty.kmp.AdaptyUI AdaptyUI.setObserverModeResolver(MyObserverModeResolver())Sin un resolver registrado, la vista del flow no tiene manera de transferir la compra a tu código, y no ocurre nada cuando el usuario pulsa el botón de compra.
-
Crea y presenta la vista del flow como de costumbre: obtén el flow y crea su vista, luego preséntala. No se necesitan parámetros adicionales — una vez que el resolver está registrado, todo flow renderizado por Adapty enruta las compras y restauraciones a través de él.
No olvides reportar la transacción y asociarla con el paywall. De lo contrario, Adapty no reconocerá la transacción ni determinará el paywall de origen de la compra.