Kotlin Multiplatform - Presentar paywalls del nuevo Paywall Builder

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 se debe mostrar como la forma en que debe mostrarse.

Esta guía es exclusivamente para paywalls del nuevo Paywall Builder. El proceso de presentación de paywalls es diferente para los paywalls diseñados con Remote Config y para el modo Observer.

Para presentar paywalls con Remote Config, consulta Renderizar paywalls diseñados con Remote Config.

El SDK de Adapty para Kotlin Multiplatform ofrece dos formas de presentar paywalls:

  • Con Compose Multiplatform
  • Sin Compose Multiplatform

Con Compose Multiplatform

Para mostrar un paywall, usa el método view.present() sobre el view creado por el método createPaywallView. Cada view solo puede usarse una vez. Si necesitas mostrar el paywall de nuevo, llama a createPaywallView otra vez para crear una nueva instancia de view.

Reutilizar el mismo view sin recrearlo puede provocar un error.


viewModelScope.launch {
    AdaptyUI.createPaywallView(paywall = paywall).onSuccess { view ->
        view.present()
    }.onError { error ->
        // handle the error
    }
}

Mostrar diálogo

Usa este método en lugar de los diálogos de alerta nativos cuando se presenta una vista de paywall en Android. En Android, las alertas normales aparecen detrás de la vista del paywall, lo que las hace invisibles para los usuarios. Este método garantiza que el diálogo se muestre correctamente por encima del paywall en todas las plataformas.


viewModelScope.launch {
    view.showDialog(
        title = "Close paywall?",
        content = "You will lose access to exclusive offers.",
        primaryActionTitle = "Stay",
        secondaryActionTitle = "Close"
    ).onSuccess { action ->
        if (action == AdaptyUIDialogActionType.SECONDARY) {
            // User confirmed - close the paywall
            view.dismiss()
        }
        // If primary - do nothing, user stays
    }.onError { error ->
        // handle the error
    }
}

Configurar el estilo de presentación en iOS

Configura cómo se presenta el paywall en iOS pasando el parámetro iosPresentationStyle al método present(). El parámetro acepta los valores AdaptyUIIOSPresentationStyle.FULLSCREEN (por defecto) o AdaptyUIIOSPresentationStyle.PAGESHEET.


viewModelScope.launch {
    val view = AdaptyUI.createPaywallView(paywall = paywall).getOrNull()
    view?.present(iosPresentationStyle = AdaptyUIIOSPresentationStyle.PAGESHEET)
}

Sin Compose Multiplatform

createNativePaywallView forma parte del módulo principal io.adapty:adapty-kmp. Si tu proyecto no usa Compose Multiplatform, no necesitas la dependencia io.adapty:adapty-kmp-ui.

Para embeber un paywall sin Compose Multiplatform, llama a createNativePaywallView. Devuelve un AdaptyNativePaywallView que puedes añadir a tu layout:

Eliminar la vista

Llama a dispose() cuando vayas a retirar la vista de tu layout. Esto cancela el registro del listener de eventos y libera los recursos internos.

nativeView.dispose()

Etiquetas personalizadas

Las etiquetas personalizadas te permiten evitar crear paywalls separados para distintos escenarios. Imagina un único paywall que se adapta dinámicamente según los datos del usuario. Por ejemplo, en lugar de un genérico “¡Hola!”, podrías saludar al usuario por su nombre: “¡Hola, Juan!” o “¡Hola, Ana!”.

Algunos casos de uso de las etiquetas personalizadas:

  • Mostrar el nombre o email del usuario en el paywall.
  • Mostrar el día de la semana para impulsar las ventas (p. ej., “Feliz jueves”).
  • Añadir detalles personalizados sobre los productos que vendes (como el nombre de un programa de fitness o un número de teléfono en una app VoIP).

Las etiquetas personalizadas te ayudan a crear un paywall flexible que se adapta a distintas situaciones, haciendo la interfaz de tu app más personalizada y atractiva.

En algunos casos, tu app puede no saber con qué reemplazar una etiqueta personalizada, especialmente si los usuarios están en una versión antigua del SDK de AdaptyUI. Para evitarlo, añade siempre un texto de respaldo que sustituya las líneas que contengan etiquetas personalizadas desconocidas. Sin esto, los usuarios podrían ver las etiquetas como código (<USERNAME/>).

Para usar etiquetas personalizadas en tu paywall, pásalas al crear la vista del paywall:

Temporizadores personalizados

El temporizador del paywall es una herramienta excelente para promocionar ofertas especiales y de temporada con un límite de tiempo. Sin embargo, es importante tener en cuenta que este temporizador no está vinculado a la validez de la oferta ni a la duración de la campaña. Es simplemente una cuenta atrás independiente que comienza desde el valor que establezcas y disminuye hasta cero. Cuando el temporizador llega a cero, no ocurre nada: simplemente se queda en cero.

Puedes personalizar el texto antes y después del temporizador para crear el mensaje deseado, por ejemplo: “La oferta termina en: 10:00 seg.”

Para usar temporizadores personalizados en tu paywall, pásalos al crear la vista del paywall: