Obtener paywalls del Paywall Builder y su configuración en el SDK de Unity
Fetching paywalls and their configuration from the Paywall Builder is the first step to displaying them in your Unity app. Once you have the paywall and its view configuration, you can render it on the device (covered in the next step).
This guide is for the new Paywall Builder, which requires iOS SDK v3.0+ or Android SDK v3.0+. For the legacy Paywall Builder (iOS SDK v2.x or Android SDK v2.x), refer to the separate guide.
Fetch paywall designed with Paywall Builder
If you’ve customized a paywall using the Paywall Builder, fetch it with the GetPaywall method:
const string placementId = "YOUR_PLACEMENT_ID";
Adapty.GetPaywall(placementId, null, (paywall, error) => {
if (error != null) {
// handle the error
return;
}
// the requested paywall
});
Request parameters:
| Parameter | Presence | Description |
|---|---|---|
| placementId | required | The identifier of the desired placement. This is the value you specified when creating a placement in your Adapty Dashboard. |
| locale | optional | The identifier of the paywall localization. This parameter is expected to be a language code composed of one or two subtags separated by the minus (-) sign. The first subtag is for the language, the second one is for the region. Examples: en, en-US, pt-BR. Learn more about localizations. |
| fetchPolicy | optional | By default, SDK will try to load data from the server and will return cached data in case of failure. We recommend this variant because it ensures your users always see the most up-to-date data. However, if you want to ensure responses are received as quickly as possible, you might opt for .returnCacheDataElseLoad. |
Fetch View Configuration
Once you have the paywall, fetch the view configuration for it with the GetPaywallConfiguration method:
Adapty.GetPaywallConfiguration(paywall, (configuration, error) => {
if (error != null) {
// handle the error
return;
}
// use the configuration
});
After fetching the view configuration, you can render the paywall.
¿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.
Speed up paywall fetching with default audience paywall
Typically, paywalls are fetched as part of a placement, which means the SDK needs to determine the user’s audience and then retrieve the paywall. This process can take a bit of time, especially on the first run.
To speed things up, you can fetch the paywall for the Default Audience using the GetPaywallForDefaultAudience method. This method is faster because it skips the audience determination step.
There’s a chance this method may return a different paywall than the one shown to the user (since the user may belong to a different audience). Therefore, it should only be used to warm up the cache and not as the primary method for fetching paywalls.
Adapty.GetPaywallForDefaultAudience(placementId, null, (paywall, error) => {
if (error != null) {
// handle the error
return;
}
// the requested paywall for default audience
});
Después de diseñar la parte visual de tu paywall con el nuevo Paywall Builder en el Adapty Dashboard, puedes mostrarlo en tu aplicación móvil. El primer paso es obtener el paywall asociado al placement y su configuración de vista, tal como se describe a continuación.
El nuevo Paywall Builder funciona con la versión 3.3.0 o superior del SDK de Unity.
Por favor, ten en cuenta que este tema hace referencia a paywalls personalizadas con Paywall Builder. Si estás implementando tus paywalls de forma manual, consulta el tema Obtener paywalls y productos para paywalls con Remote Config en tu app móvil.
¿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.
Antes de empezar a mostrar paywalls en tu app móvil (haz clic para expandir)
- Crea tus productos en el Adapty Dashboard.
- Crea un paywall e incorpora los productos en él en el Adapty Dashboard.
- Crea placements e incorpora tu paywall en ellos en el Adapty Dashboard.
- Instala el SDK de Adapty en tu aplicación móvil.
Obtener un paywall diseñado con Paywall Builder
Si has diseñado 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 debe mostrarse como la forma en que debe mostrarse. Aun así, necesitas obtener su ID a través del placement, su configuración de vista y luego presentarlo en tu app móvil. Para garantizar un rendimiento óptimo, es fundamental obtener el paywall y su configuración de vista lo antes posible, dando tiempo suficiente para que las imágenes se descarguen antes de mostrárselas al usuario.
Para obtener un paywall, usa el método GetPaywall:
Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});
Parámetros:
| Parámetro | Presencia | Descripción |
|---|---|---|
| placementId | requerido | El identificador del Placement deseado. Es el valor que especificaste al crear un placement en el Adapty Dashboard. |
| locale | opcional por defecto: | El identificador de la localización del paywall. Se espera que este parámetro sea un código de idioma compuesto por uno o dos subetiquetas separadas por el carácter menos (-). La primera subetiqueta corresponde al idioma y la segunda a la región. Ejemplo: Consulta Localizaciones y códigos de idioma para más información sobre los códigos de idioma y cómo recomendamos usarlos. |
| fetchPolicy | por defecto: .reloadRevalidatingCacheData | Por defecto, el SDK intentará cargar los datos desde el servidor y devolverá los datos en caché en caso de fallo. Recomendamos esta opción porque garantiza que tus usuarios siempre reciban los datos más actualizados. Sin embargo, si crees que tus usuarios tienen una conexión a internet inestable, considera usar Ten en cuenta que la caché permanece intacta al reiniciar la aplicación y solo se borra cuando se reinstala la app o mediante limpieza manual. El SDK de Adapty almacena los paywalls localmente en dos capas: la caché de actualización regular descrita arriba y los paywalls de respaldo. También usamos CDN para obtener los paywalls más rápido y un servidor de respaldo independiente en caso de que el CDN no sea accesible. Este sistema está diseñado para asegurarse de que siempre obtengas la versión más reciente de tus paywalls, garantizando la fiabilidad incluso cuando la conexión a internet es escasa. |
| loadTimeout | por defecto: 5 seg | Este valor limita el tiempo de espera para este método. Si se alcanza el tiempo límite, se devolverán los datos en caché o el fallback local. Ten en cuenta que en casos excepcionales este método puede superar ligeramente el tiempo de espera especificado en |
| Parámetros de respuesta: |
| Parámetro | Descripción |
|---|---|
| Paywall | Un objeto AdaptyPaywall con una lista de IDs de productos, el identificador del paywall, Remote Config y otras propiedades. |
Obtener la configuración de vista de un paywall diseñado con Paywall Builder
Asegúrate de activar el botón Show on device en el Paywall Builder. Si esta opción no está activada, la configuración de vista no estará disponible para recuperar.
Tras obtener el paywall, comprueba si incluye un ViewConfiguration, lo que indica que fue creado con Paywall Builder. Esto te guiará sobre cómo mostrar el paywall. Si el ViewConfiguration está presente, trátalo como un paywall del Paywall Builder; si no, gestiónalo como un paywall de Remote Config.
En el SDK de Unity, llama directamente al método CreatePaywallView sin necesidad de obtener la configuración de la vista manualmente.
El resultado del método CreatePaywallView solo puede usarse una vez. Si necesitas volver a usarlo, llama de nuevo al método CreatePaywallView. Llamarlo dos veces sin recrearlo puede producir el error AdaptyUIError.viewAlreadyPresented.
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetPreloadProducts(preloadProducts)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
Parámetros:
| Parámetro | Presencia | Descripción |
|---|---|---|
| paywall | obligatorio | Un objeto AdaptyPaywall para obtener un controlador del paywall deseado. |
| loadTimeout | por defecto: 5 seg | Este valor limita el tiempo de espera para este método. Si se alcanza el timeout, se devolverán datos en caché o el fallback local. Ten en cuenta que en casos excepcionales este método puede superar ligeramente el tiempo especificado en loadTimeout, ya que la operación puede componerse de diferentes solicitudes internamente. |
| PreloadProducts | opcional | Proporciona un array de AdaptyPaywallProducts para optimizar el momento en que se muestran los productos en pantalla. Si se pasa nil, AdaptyUI obtendrá automáticamente los productos necesarios. |
| CustomTags | opcional | Define un diccionario de etiquetas personalizadas y sus valores resueltos. Las etiquetas personalizadas actúan como marcadores de posición en el contenido del paywall y se reemplazan dinámicamente con cadenas específicas para personalizar el contenido. Consulta el tema Custom tags in paywall builder para más detalles. |
| CustomTimers | opcional | Define un diccionario de temporizadores personalizados y sus fechas de finalización. Los temporizadores personalizados te permiten mostrar cuentas atrás en tu paywall. |
Si usas varios idiomas, aprende cómo añadir una localización en Paywall Builder y cómo usar los códigos de idioma correctamente aquí.
Una vez que tengas la vista, presenta el paywall.
Personalizar recursos
Para personalizar imágenes y vídeos en tu paywall, implementa los recursos personalizados.
Las imágenes hero y los vídeos tienen IDs predefinidos: hero_image y hero_video. En un bundle de recursos personalizados, puedes hacer referencia a estos elementos por sus IDs y personalizar su comportamiento.
Para otras imágenes y vídeos, necesitas asignar un ID personalizado en el Adapty Dashboard.
Por ejemplo, puedes:
- Mostrar una imagen o vídeo diferente a algunos usuarios.
- Mostrar una imagen de vista previa local mientras se carga una imagen principal remota.
- Mostrar una imagen de vista previa antes de reproducir un vídeo.
Para usar esta función, actualiza el SDK de Adapty para Unity a la versión 3.8.0 o superior.
Aquí tienes un ejemplo de cómo puedes proporcionar assets personalizados mediante un diccionario sencillo:
var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
{ "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
{ "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetCustomAssets(customAssets)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
Si no se encuentra un recurso, el paywall volverá a su apariencia predeterminada.
Configurar temporizadores definidos por el desarrollador
Para usar temporizadores personalizados en tu aplicación Unity, puedes pasar un diccionario con los IDs de los temporizadores y sus fechas de finalización directamente al método SetCustomTimers. Aquí tienes un ejemplo:
var customTimers = new Dictionary<string, DateTime> {
{ "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
{ "CUSTOM_TIMER_NY", new DateTime(2025, 1, 1) }
};
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetCustomTimers(customTimers)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
En este ejemplo, CUSTOM_TIMER_NY y CUSTOM_TIMER_6H son los Timer IDs de los temporizadores definidos por el desarrollador que configuraste en el Adapty Dashboard. El resolver de temporizadores garantiza que tu app actualice dinámicamente cada temporizador con el valor correcto. Por ejemplo:
CUSTOM_TIMER_NY: El tiempo restante hasta el fin del temporizador, como el día de Año Nuevo.CUSTOM_TIMER_6H: El tiempo restante en un período de 6 horas que comenzó cuando el usuario abrió el paywall.
Acelera la carga del paywall con el paywall de audiencia predeterminada
Normalmente, los paywalls se cargan casi al instante, así que no tienes que preocuparte por optimizar este proceso. Sin embargo, si tienes muchas audiencias y paywalls, y tus usuarios tienen una conexión a internet lenta, la carga del paywall puede tardar más de lo deseable. En esos casos, puede que quieras mostrar un paywall predeterminado para garantizar una experiencia fluida en lugar de no mostrar ningún paywall.
Para solucionar esto, puedes usar el método GetPaywallForDefaultAudience, que obtiene el paywall del placement especificado para la audiencia All Users. Sin embargo, es fundamental entender que el enfoque recomendado es obtener el paywall con el método getPaywall, tal como se describe en la sección Obtener el paywall más arriba.
Considera usar GetPaywall en lugar de GetPaywallForDefaultAudience, ya que este último tiene limitaciones importantes:
- Problemas de compatibilidad: Puede generar inconvenientes al dar soporte a varias versiones de la app, lo que requiere diseños compatibles con versiones anteriores o asumir que las versiones más antiguas podrían mostrarse incorrectamente.
- Sin personalización: Solo muestra contenido para la audiencia “All Users”, eliminando la segmentación por país, atribución o atributos personalizados.
Si para tu caso de uso la mayor velocidad de obtención compensa estos inconvenientes, usa GetPaywallForDefaultAudience como se muestra a continuación. De lo contrario, usa GetPaywall como se describe arriba.
Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});
Parámetros:
| Parámetro | Presencia | Descripción |
|---|---|---|
| placementId | obligatorio | El identificador del Placement deseado. Es el valor que especificaste al crear un placement en el Adapty Dashboard. |
| locale | opcional por defecto: | El identificador de la localización del paywall. Se espera que este parámetro sea un código de idioma compuesto por uno o dos subetiquetas separadas por el carácter menos (-). La primera subetiqueta corresponde al idioma y la segunda a la región. Ejemplo: |
| fetchPolicy | por defecto: .reloadRevalidatingCacheData | Por defecto, el SDK intentará cargar los datos desde el servidor y devolverá los datos en caché en caso de error. Recomendamos esta opción porque garantiza que tus usuarios siempre reciban los datos más actualizados. Sin embargo, si crees que tus usuarios tienen una conexión a internet inestable, considera usar Ten en cuenta que la caché permanece intacta al reiniciar la app y solo se borra al desinstalarla o mediante una limpieza manual. El SDK de Adapty almacena los paywalls localmente en dos capas: la caché de actualización regular descrita anteriormente y los paywalls de respaldo. También usamos CDN para obtener los paywalls más rápido y un servidor de respaldo independiente por si el CDN no está disponible. Este sistema está diseñado para garantizar que siempre obtengas la versión más reciente de tus paywalls, asegurando la fiabilidad incluso cuando la conexión a internet es escasa. |