Mostrar flows y paywalls - iOS

Display flows and paywalls
Flows BETA Built in Flow builder — renders natively on device, no WebView
Paywall Builder paywalls All existing Paywall Builder content

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ámetroObligatorioDescripción
isPresentedobligatorioUn binding que gestiona si la pantalla del flow o del paywall se muestra.
flowConfigurationobligatorioUn 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.
didFailPurchaseobligatorioSe invoca cuando Adapty.makePurchase() falla.
didFinishRestoreobligatorioSe invoca cuando Adapty.restorePurchases() se completa correctamente.
didFailRestoreobligatorioSe invoca cuando Adapty.restorePurchases() falla.
didReceiveErrorobligatorioSe 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.
fullScreenopcionalDetermina si el flow o el paywall aparece en modo de pantalla completa o como una hoja. Por defecto es true.
didAppearopcionalSe invoca cuando la vista del flow o del paywall fue presentada.
didDisappearopcionalSe invoca cuando la vista del flow o del paywall fue descartada.
didPerformActionopcionalSe 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.
didSelectProductopcionalSe invoca cuando el usuario o el sistema selecciona un producto para su compra.
didStartPurchaseopcionalSe invoca cuando el usuario inicia el proceso de compra.
didFinishPurchaseopcionalSe invoca cuando Adapty.makePurchase() se completa correctamente.
didFinishWebPaymentNavigationopcionalSe invoca cuando finaliza la navegación del pago web.
didStartRestoreopcionalSe invoca cuando el usuario inicia el proceso de restauración.
didFailLoadingProductsopcionalSe invoca cuando se producen errores durante la carga de productos. Devuelve true para reintentar la carga.
didPartiallyLoadProductsopcionalSe invoca cuando los productos se cargan parcialmente.
showAlertItemopcionalUn binding que gestiona la visualización de elementos de alerta sobre el flow o el paywall.
showAlertBuilderopcionalUna función para renderizar la vista de alerta.
placeholderBuilderopcionalUna 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:

  1. 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.FlowConfiguration que contiene los detalles visuales del flow o paywall. Usa el método AdaptyUI.getFlowConfiguration(forFlow:). Consulta el tema Obtener flows y paywalls para más detalles. | | delegate | obligatorio | Un AdaptyFlowControllerDelegate para escuchar los eventos del flow y del paywall. Consulta el tema Gestionar eventos de flow y paywall para más detalles. |

Devuelve:

ObjetoDescripción
AdaptyFlowControllerObjeto que representa el flow o la pantalla de paywall solicitados.
  1. 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ámetroRequeridoDescripción
isPresentedrequeridoUn binding que controla si se muestra la pantalla del paywall.
paywallConfigurationrequeridoUn 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.
didFailPurchaserequeridoSe invoca cuando Adapty.makePurchase() falla.
didFinishRestorerequeridoSe invoca cuando Adapty.restorePurchases() se completa correctamente.
didFailRestorerequeridoSe invoca cuando Adapty.restorePurchases() falla.
didFailRenderingrequeridoSe invoca si ocurre un error al renderizar la interfaz. En ese caso, contacta con el soporte de Adapty.
fullScreenopcionalDetermina si el paywall se muestra en modo pantalla completa o como modal. Por defecto es true.
didAppearopcionalSe invoca cuando la vista del paywall se ha presentado.
didDisappearopcionalSe invoca cuando la vista del paywall se ha cerrado.
didPerformActionopcionalSe 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.
didSelectProductopcionalSe invoca cuando se selecciona un producto para la compra (por el usuario o por el sistema).
didStartPurchaseopcionalSe invoca cuando el usuario inicia el proceso de compra.
didFinishPurchaseopcionalSe invoca cuando Adapty.makePurchase() se completa correctamente.
didFinishWebPaymentNavigationopcionalSe invoca cuando finaliza la navegación del pago web.
didStartRestoreopcionalSe invoca cuando el usuario inicia el proceso de restauración.
didFailLoadingProductsopcionalSe invoca cuando ocurren errores durante la carga de productos. Devuelve true para reintentar la carga.
didPartiallyLoadProductsopcionalSe invoca cuando los productos se cargan de forma parcial.
showAlertItemopcionalUn binding que gestiona la visualización de elementos de alerta sobre el paywall.
showAlertBuilderopcionalUna función para renderizar la vista de alerta.
placeholderBuilderopcionalUna 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:

  1. 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ámetroPresenciaDescripción
    paywall configurationrequeridoUn objeto AdaptyUI.PaywallConfiguration que contiene los detalles visuales del paywall. Usa el método AdaptyUI.getPaywallConfiguration(forPaywall:locale:). Consulta el tema Obtener paywalls del Paywall Builder y su configuración para más detalles.
    delegaterequeridoUn AdaptyPaywallControllerDelegate para escuchar los eventos del paywall. Consulta el tema Gestión de eventos del paywall para más detalles.

Retorna:

ObjetoDescripción
AdaptyPaywallControllerUn objeto que representa la pantalla del paywall solicitado
  1. 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.