Mostrar flows y paywalls - iOS

Display flows and paywalls
Flows Creados en el Flow Builder — se renderizan de forma nativa en el dispositivo, sin WebView
Paywalls de Paywall Builder Todo el contenido existente de Paywall Builder

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

Presentar 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 cinco callbacks obligatorios:

.flow(
    isPresented: $flowPresented,
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFinishPurchase: { _, _ in /* dismiss, or do nothing to let the flow continue */ },
    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 los toques de botón:

@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
              }
          },
          didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
          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 paywall se muestra.
flowConfigurationobligatorioUn objeto AdaptyUI.FlowConfiguration que contiene los detalles visuales del flow o paywall. Usa el método AdaptyUI.getFlowConfiguration(forFlow:). Consulta Obtener flows y paywalls para más detalles.
didFinishPurchaseobligatorioSe invoca cuando Adapty.makePurchase() se completa con éxito. El flow no se cierra automáticamente — establece tu binding de presentación en false aquí, o no hagas nada para dejar que el flow continúe tras la compra.
didFailPurchaseobligatorioSe invoca cuando Adapty.makePurchase() falla.
didFinishRestoreobligatorioSe invoca cuando Adapty.restorePurchases() se completa con éxito.
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 JavaScript, código AdaptyUIError 4105). Para errores de renderizado, contacta con el soporte de Adapty.
fullScreenopcionalDetermina si el flow o paywall aparece en modo pantalla completa o como una hoja. Por defecto es true.
didAppearopcionalSe invoca cuando la vista del flow o paywall fue presentada.
didDisappearopcionalSe invoca cuando la vista del flow o paywall fue cerrada.
didPerformActionopcionalSe invoca cuando el usuario pulsa un botón. Dos IDs de acción están predefinidos: close y openURL; los demás son personalizados y pueden configurarse 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.
didFinishWebPaymentNavigationopcionalSe invoca cuando la navegación de pago web finaliza.
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 parcialmente.
showAlertItemopcionalUn binding que gestiona la visualización de elementos de alerta encima del flow o paywall.
showAlertBuilderopcionalUna función para renderizar la vista de alerta.
placeholderBuilderopcionalUna función para renderizar la vista de marcador de posición mientras el flow o paywall se carga. 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>,
    didFinishPurchase: { product, purchaseResult in
        // Dismiss the view, or do nothing to let the flow continue
    },
    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).
    }
)

Presenta flows y paywalls en UIKit

Para mostrar el flow o paywall en la pantalla del dispositivo, sigue estos pasos:

  1. Inicializa el flow visual que quieres mostrar utilizando 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
AdaptyFlowControllerUn objeto que representa la pantalla de flow o paywall solicitada.
  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
    }
)

Presentar 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.

Devuelve:

ObjetoDescripción
AdaptyPaywallControllerUn objeto que representa la pantalla del paywall solicitada
  1. Una vez creado el objeto correctamente, 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.