Presentar paywalls del nuevo Paywall Builder en el SDK de iOS

Si has personalizado un paywall con el Paywall Builder, no necesitas preocuparte por renderizarlo en el código de tu app para mostrárselo al usuario. Ese paywall ya contiene tanto lo que debe mostrarse como la forma en que debe hacerlo.

Esta guía es para paywalls del nuevo Paywall Builder. El proceso para presentar paywalls varía según la versión del Paywall Builder con la que se diseñaron, si son paywalls de Remote Config o si usas el modo Observer.

Para obtener el objeto AdaptyUI.PaywallConfiguration que se usa a continuación, consulta Obtener paywalls del Paywall Builder y su configuración.

Presentar paywalls en SwiftUI

Presentar como vista modal

Para mostrar el paywall visual en la pantalla del dispositivo como 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 la pantalla del paywall está visible.
paywallConfigurationrequeridoUn objeto AdaptyUI.PaywallConfiguration con los detalles visuales del paywall. Usa el método AdaptyUI.paywallConfiguration(for:products:viewConfiguration:observerModeResolver:tagResolver:timerResolver:). Consulta Obtener paywalls del Paywall Builder y su configuración para más detalles.
didFailPurchaserequeridoSe invoca cuando Adapty.makePurchase() falla.
didFinishRestorerequeridoSe invoca cuando Adapty.restorePurchases() finaliza 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 pantalla completa o como modal. Por defecto es true.
didAppearopcionalSe invoca cuando la vista del paywall se presenta.
didDisappearopcionalSe invoca cuando la vista del paywall se descarta.
didPerformActionopcionalSe invoca cuando el usuario pulsa un botón. Cada botón tiene un ID de acción distinto. Hay dos IDs predefinidos: close y openURL; los demás son personalizados y se pueden configurar 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() finaliza 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 al cargar los 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 alertas 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 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 Adapty
    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 con los detalles visuales del paywall. Usa el método AdaptyUI.getPaywallConfiguration(forPaywall:locale:). Consulta 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 solicitado
  2. 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 app móvil? Echa un vistazo a nuestras apps de ejemplo, que muestran la configuración completa, incluyendo la visualización de paywalls, la realización de compras y otras funcionalidades básicas.