Mostrar flows y paywalls - iOS
Si has creado un flow o paywall, no necesitas preocuparte por renderizarlo en el código de tu app móvil para mostrárselo al usuario. Tanto el contenido como la forma en que debe presentarse ya están definidos dentro del propio flow o paywall.
Para obtener el objeto AdaptyUI.FlowConfiguration que se usa a continuación, consulta Obtener flows y paywalls.
Presentar flows y paywalls en SwiftUI
Mostrar como vista modal
Para mostrar un flow o paywall en la pantalla del dispositivo como una vista modal, usa el modificador .flow en SwiftUI. La llamada mínima requiere isPresented, flowConfiguration y los cuatro callbacks obligatorios:
.flow(
isPresented: $flowPresented,
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didFailPurchase: { _, _ in /* handle the error */ },
didFinishRestore: { _ in /* check access level and dismiss */ },
didFailRestore: { _ in /* handle the error */ },
didReceiveError: { _ in flowPresented = false }
)Para mayor control, añade callbacks opcionales como didPerformAction para gestionar las pulsaciones de botones y didFinishPurchase para reaccionar a las compras realizadas con éxito:
@State var flowPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the flow or paywall
var body: some View {
Text("Hello, AdaptyUI!")
.flow(
isPresented: $flowPresented,
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didPerformAction: { action in
switch action {
case .close:
flowPresented = false
default:
// Handle other actions
break
}
},
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 }
)
}Parámetros:
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| isPresented | obligatorio | Un binding que gestiona si la pantalla del flow o del paywall se muestra. |
| flowConfiguration | obligatorio | Un objeto AdaptyUI.FlowConfiguration que contiene los detalles visuales del flow o del paywall. Usa el método AdaptyUI.getFlowConfiguration(forFlow:). Consulta Obtener flows y paywalls para más detalles. |
| didFailPurchase | obligatorio | Se invoca cuando Adapty.makePurchase() falla. |
| didFinishRestore | obligatorio | Se invoca cuando Adapty.restorePurchases() se completa correctamente. |
| didFailRestore | obligatorio | Se invoca cuando Adapty.restorePurchases() falla. |
| didReceiveError | obligatorio | Se invoca ante un error de renderizado o un error en tiempo de ejecución del script del flow (por ejemplo, una excepción de JavaScript, código AdaptyUIError 4105). Para errores de renderizado, contacta con el soporte de Adapty. |
| fullScreen | opcional | Determina si el flow o el paywall aparece en modo de pantalla completa o como una hoja. Por defecto es true. |
| didAppear | opcional | Se invoca cuando la vista del flow o del paywall fue presentada. |
| didDisappear | opcional | Se invoca cuando la vista del flow o del paywall fue descartada. |
| didPerformAction | opcional | Se invoca cuando el usuario hace clic en un botón. Hay dos IDs de acción predefinidos: close y openURL; el resto son personalizados y se pueden configurar en el builder. |
| didSelectProduct | opcional | Se invoca cuando el usuario o el sistema selecciona un producto para su compra. |
| didStartPurchase | opcional | Se invoca cuando el usuario inicia el proceso de compra. |
| didFinishPurchase | opcional | Se invoca cuando Adapty.makePurchase() se completa correctamente. |
| didFinishWebPaymentNavigation | opcional | Se invoca cuando finaliza la navegación del pago web. |
| didStartRestore | opcional | Se invoca cuando el usuario inicia el proceso de restauración. |
| didFailLoadingProducts | opcional | Se invoca cuando se producen errores durante la carga de productos. Devuelve true para reintentar la carga. |
| didPartiallyLoadProducts | opcional | Se invoca cuando los productos se cargan parcialmente. |
| showAlertItem | opcional | Un binding que gestiona la visualización de elementos de alerta sobre el flow o el paywall. |
| showAlertBuilder | opcional | Una función para renderizar la vista de alerta. |
| placeholderBuilder | opcional | Una función para renderizar la vista de marcador de posición mientras se carga el flow o el paywall. Por defecto es un ProgressView. |
| Consulta el tema iOS - Gestión de eventos para obtener más detalles sobre los parámetros. |
Presentar como una vista no modal
También puedes presentar flows y paywalls como destinos de navegación o vistas en línea dentro del flujo de navegación de tu app. Usa AdaptyFlowView directamente en tus vistas SwiftUI:
AdaptyFlowView(
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didFailPurchase: { product, error in
// Handle purchase failure
},
didFinishRestore: { profile in
// Handle successful restore
},
didFailRestore: { error in
// Handle restore failure
},
didReceiveError: { error in
// Handle the error (rendering or JS exception from the flow script).
}
)Presentar flows y paywalls en UIKit
Para mostrar el flow o el paywall en la pantalla del dispositivo, sigue estos pasos:
-
Inicializa el flow visual que quieres mostrar usando el método
AdaptyUI.flowController(with:delegate:):import AdaptyUI let visualFlow = try AdaptyUI.flowController( with: <AdaptyUI.FlowConfiguration>, delegate: <AdaptyFlowControllerDelegate> )Parámetros de la solicitud: | Parámetro | Presencia | Descripción | | :----------------------- | :------- | :---------- | | flowConfiguration | obligatorio | Un objeto
AdaptyUI.FlowConfigurationque contiene los detalles visuales del flow o paywall. Usa el métodoAdaptyUI.getFlowConfiguration(forFlow:). Consulta el tema Obtener flows y paywalls para más detalles. | | delegate | obligatorio | UnAdaptyFlowControllerDelegatepara escuchar los eventos del flow y del paywall. Consulta el tema Gestionar eventos de flow y paywall para más detalles. |
Devuelve:
| Objeto | Descripción |
|---|---|
| AdaptyFlowController | Objeto que representa el flow o la pantalla de paywall solicitados. |
-
Una vez creado el objeto correctamente, puedes mostrarlo en la pantalla del dispositivo:
present(visualFlow, animated: true)
¿Quieres ver un ejemplo real de cómo se integra el SDK de Adapty en una app móvil? Consulta nuestras apps de ejemplo, que demuestran la configuración completa, incluyendo la visualización de paywalls, la realización de compras y otras funcionalidades básicas.
Si has personalizado un paywall con el Paywall Builder, no tienes que preocuparte por renderizarlo en el código de tu app móvil para mostrárselo al usuario. Este tipo de paywall contiene tanto lo que se debe mostrar en el paywall como la forma en que debe mostrarse.
Para obtener el objeto AdaptyUI.PaywallConfiguration que se usa a continuación, consulta Obtener paywalls del Paywall Builder y su configuración.
Presenta paywalls en SwiftUI
Presentar como vista modal
Para mostrar el paywall visual en la pantalla del dispositivo como una vista modal, usa el modificador .paywall en SwiftUI:
@State var paywallPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the paywall
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishPurchase: { product, profile in paywallPresented = false },
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false }
)
}Parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
| isPresented | requerido | Un binding que controla si se muestra la pantalla del paywall. |
| paywallConfiguration | requerido | Un objeto AdaptyUI.PaywallConfiguration que contiene los detalles visuales del paywall. Usa el método AdaptyUI.paywallConfiguration(for:products:viewConfiguration:observerModeResolver:tagResolver:timerResolver:). Consulta el tema Obtener paywalls del Paywall Builder y su configuración para más detalles. |
| didFailPurchase | requerido | Se invoca cuando Adapty.makePurchase() falla. |
| didFinishRestore | requerido | Se invoca cuando Adapty.restorePurchases() se completa correctamente. |
| didFailRestore | requerido | Se invoca cuando Adapty.restorePurchases() falla. |
| didFailRendering | requerido | Se invoca si ocurre un error al renderizar la interfaz. En ese caso, contacta con el soporte de Adapty. |
| fullScreen | opcional | Determina si el paywall se muestra en modo pantalla completa o como modal. Por defecto es true. |
| didAppear | opcional | Se invoca cuando la vista del paywall se ha presentado. |
| didDisappear | opcional | Se invoca cuando la vista del paywall se ha cerrado. |
| didPerformAction | opcional | Se invoca cuando el usuario pulsa un botón. Cada botón tiene un ID de acción diferente. Hay dos IDs predefinidos: close y openURL; el resto son personalizados y se pueden definir en el builder. |
| didSelectProduct | opcional | Se invoca cuando se selecciona un producto para la compra (por el usuario o por el sistema). |
| didStartPurchase | opcional | Se invoca cuando el usuario inicia el proceso de compra. |
| didFinishPurchase | opcional | Se invoca cuando Adapty.makePurchase() se completa correctamente. |
| didFinishWebPaymentNavigation | opcional | Se invoca cuando finaliza la navegación del pago web. |
| didStartRestore | opcional | Se invoca cuando el usuario inicia el proceso de restauración. |
| didFailLoadingProducts | opcional | Se invoca cuando ocurren errores durante la carga de productos. Devuelve true para reintentar la carga. |
| didPartiallyLoadProducts | opcional | Se invoca cuando los productos se cargan de forma parcial. |
| showAlertItem | opcional | Un binding que gestiona la visualización de elementos de alerta sobre el paywall. |
| showAlertBuilder | opcional | Una función para renderizar la vista de alerta. |
| placeholderBuilder | opcional | Una función para renderizar la vista de marcador de posición mientras se carga el paywall. |
| Consulta el tema iOS - Gestión de eventos para más detalles sobre los parámetros. |
Presentar como una vista no modal
También puedes presentar paywalls como destinos de navegación o vistas en línea dentro del flujo de navegación de tu app. Usa AdaptyPaywallView directamente en tus vistas SwiftUI:
AdaptyPaywallView(
paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
didFailPurchase: { product, error in
// Handle purchase failure
},
didFinishRestore: { profile in
// Handle successful restore
},
didFailRestore: { error in
// Handle restore failure
},
didFailRendering: { error in
// Handle rendering error
}
)Mostrar paywalls en UIKit
Para mostrar el paywall visual en la pantalla del dispositivo, sigue estos pasos:
-
Inicializa el paywall visual que quieres mostrar usando el método
.paywallController(for:products:viewConfiguration:delegate:):import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )Parámetros de la solicitud:
Parámetro Presencia Descripción paywall configuration requerido Un objeto AdaptyUI.PaywallConfigurationque contiene los detalles visuales del paywall. Usa el métodoAdaptyUI.getPaywallConfiguration(forPaywall:locale:). Consulta el tema Obtener paywalls del Paywall Builder y su configuración para más detalles.delegate requerido Un AdaptyPaywallControllerDelegatepara escuchar los eventos del paywall. Consulta el tema Gestión de eventos del paywall para más detalles.
Retorna:
| Objeto | Descripción |
|---|---|
| AdaptyPaywallController | Un objeto que representa la pantalla del paywall solicitado |
-
Una vez creado correctamente el objeto, puedes mostrarlo en la pantalla del dispositivo:
present(visualPaywall, animated: true)
¿Quieres ver un ejemplo real de cómo se integra el SDK de Adapty en una aplicación móvil? Echa un vistazo a nuestras aplicaciones de ejemplo, que muestran la configuración completa, incluyendo la visualización de paywalls, la realización de compras y otras funciones básicas.