Obtener flows y paywalls - Unity

Lo que devuelve GetFlow
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

Después de diseñar tu flow o paywall con el Paywall Builder, puedes mostrarlo en tu aplicación móvil. El primer paso es obtener el flow o paywall asociado al placement y su configuración de vista, tal como se describe a continuación.

¿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 flows en tu aplicación móvil (haz clic para expandir)
  1. Crea tus productos en el Adapty Dashboard.
  2. Crea un flow/paywall e incorpora productos en él en el Adapty Dashboard.
  3. Crea placements e incorpora tu flow/paywall en ellos en el Adapty Dashboard.
  4. Instala el SDK de Adapty en tu aplicación móvil.

Obtener un flow/paywall

Si has diseñado un flow o paywall con el Flow Builder o el Paywall Builder, no tienes que preocuparte por renderizarlo en el código de tu app para mostrárselo al usuario. Ese flow o paywall incluye tanto qué mostrar como cómo mostrarlo. Aun así, necesitas obtener su ID a través del placement, su configuración de vista, y luego presentarlo en tu app.

Para garantizar un rendimiento óptimo, es fundamental obtener el flow o paywall y su configuración de vista lo antes posible, dejando tiempo suficiente para que las imágenes se descarguen antes de mostrárselas al usuario.

Para obtener un flow o paywall, usa el método GetFlow:

Adapty.GetFlow(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    TimeSpan.FromSeconds(5),
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow/paywall
    }
);

Parámetros:

ParámetroPresenciaDescripción
placementIdobligatorioEl identificador del Placement deseado. Es el valor que especificaste al crear un placement en el Adapty Dashboard.
fetchPolicypredeterminado: AdaptyPlacementFetchPolicy.Default

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 obtengan los datos más actualizados.

Sin embargo, si crees que tus usuarios tienen una conexión a internet inestable, considera usar AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad para devolver los datos en caché si existen. En este caso, es posible que los usuarios no obtengan los datos más recientes, pero experimentarán tiempos de carga más rápidos, independientemente de lo irregular que sea su conexión. La caché se actualiza con regularidad, por lo que es seguro usarla durante la sesión para evitar peticiones de red.

Ten en cuenta que la caché permanece intacta al reiniciar la app y solo se borra cuando se desinstala la app o mediante una limpieza manual.

El SDK de Adapty almacena flows y paywalls localmente en dos capas: la caché de actualización periódica descrita anteriormente y los paywalls de respaldo. También usamos CDN para cargarlos 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, garantizando la fiabilidad incluso cuando la conexión a internet es escasa.

loadTimeoutpredeterminado: 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 loadTimeout, ya que la operación puede constar de distintas solicitudes internamente.

ParámetroDescripción
FlowUn objeto AdaptyFlow que contiene el placement, los identificadores (InstanceIdentity, VariationId), el nombre, las variaciones de paywall (Paywalls — una lista de AdaptyFlowPaywall) y los Remote Configs (RemoteConfigs — una lista con una entrada por idioma). Para obtener los productos reales con fines de precarga, interfaz personalizada o comprobaciones programáticas, llama a GetPaywallProducts(flow).

Obtener la configuración de la vista

Tras obtener el flow o el paywall, carga su configuración de vista y crea la vista en un solo paso con el método CreateFlowView. No hay ninguna marca separada que comprobar: si el placement se diseñó en el Flow Builder (un flow) o en el Paywall Builder (un paywall), CreateFlowView devuelve la vista lista para su presentación. Si el placement es un paywall personalizado sin interfaz de Builder, CreateFlowView devuelve un error — trátalo como un paywall de Remote Config.

Asegúrate de activar el toggle Show on device en el Flow Builder. Si esta opción no está habilitada, la configuración de la vista no estará disponible para recuperar.

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetPreloadProducts(true)
    .SetLoadTimeout(TimeSpan.FromSeconds(5));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    if (error != null) {
        // the flow has no view configured, or view creation failed
        return;
    }

    // use view
});
ParámetroPresenciaDescripción
flowobligatorioUn objeto AdaptyFlow obtenido mediante Adapty.GetFlow.
LocaleopcionalEl identificador de la localización del Builder con la que se renderizará el flow o paywall, por ejemplo en o pt-br. El flow se localiza al crear su vista, por lo que este es el único lugar donde elegir la localización. El SDK no lee el idioma del dispositivo: si omites este parámetro, el flow se renderiza en en, o en su idioma predeterminado si el flow no tiene localización en. El código debe coincidir exactamente con un código de localización del flow. Consulta Usar localizaciones y códigos de idioma.
LoadTimeoutopcionalEste valor limita el tiempo de espera de este método. Si se supera el tiempo de espera, se devolverán los datos en caché o el respaldo local. Ten en cuenta que en casos raros este método puede superar ligeramente el tiempo especificado en LoadTimeout, ya que la operación puede constar de distintas solicitudes internamente.
PreloadProductsopcionalEstablécelo en true para precargar productos y mejorar el rendimiento. Cuando está activado, los productos se cargan con antelación, reduciendo el tiempo necesario para mostrar el flow o paywall.
ProductPurchaseParametersopcionalSolo en Android (se ignora en iOS). Un diccionario de AdaptyProductIdentifier a AdaptyPurchaseParameters. Úsalo para configurar parámetros específicos de compra, como ofertas personalizadas o parámetros de actualización de suscripción para productos individuales del flow o paywall.
EnableSafeAreaPaddingsopcionalSolo en Android (se ignora en iOS). Cuando es true, la vista del flow aplica rellenos de área segura. Valor predeterminado: true. El valor predeterminado es adecuado para la mayoría de los casos.

Si usas varios idiomas, aprende cómo añadir una localización en el Builder.

Una vez cargado, presenta el flow o el paywall.

Obtén un flow o paywall para la audiencia predeterminada y cárgalo más rápido

Por lo general, los flows y paywalls se obtienen casi al instante, por lo que no necesitas preocuparte por acelerar este proceso. Sin embargo, si tienes muchas audiencias y placements, y tus usuarios tienen una conexión a internet lenta, obtener un flow o paywall puede tardar más de lo que quisieras. En esas situaciones, puede que prefieras mostrar un flow o paywall predeterminado para garantizar una experiencia de usuario fluida, en lugar de no mostrar nada.

Para abordar esto, puedes usar el método GetFlowForDefaultAudience, que obtiene el flow o paywall del placement especificado para la audiencia All Users. Sin embargo, es fundamental entender que el enfoque recomendado es obtener el flow o paywall con el método GetFlow, tal como se detalla en la sección Obtener flow/paywall anterior.

Por qué recomendamos usar GetFlow

El método GetFlowForDefaultAudience tiene algunas desventajas importantes:

  • Posibles problemas de compatibilidad con versiones anteriores: Si necesitas mostrar diferentes flows para distintas versiones de la app (la actual y las futuras), puede que te encuentres con dificultades. Tendrás que diseñar flows compatibles con la versión actual (heredada) o asumir que los usuarios con esa versión podrían tener problemas con flows que no se rendericen correctamente.
  • Pérdida de segmentación: Todos los usuarios verán el mismo flow diseñado para la audiencia All Users, lo que significa que pierdes la segmentación personalizada (incluyendo por país, atribución de marketing o tus propios atributos personalizados).

Si estás dispuesto a aceptar estas desventajas para beneficiarte de una recuperación más rápida del flow o del paywall, usa el método GetFlowForDefaultAudience de la siguiente manera. De lo contrario, utiliza GetFlow descrito anteriormente.

Adapty.GetFlowForDefaultAudience(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow
    }
);
ParámetroPresenciaDescripción
placementIdobligatorioEl identificador del Placement. Es el valor que especificaste al crear un placement en tu Adapty Dashboard.
fetchPolicypor defecto: AdaptyPlacementFetchPolicy.Default

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 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad para devolver los datos en caché si existen. En este caso, puede que los usuarios no obtengan los datos más recientes, pero experimentarán tiempos de carga más rápidos independientemente de lo intermitente que sea su conexión. La caché se actualiza con regularidad, por lo que es seguro usarla durante la sesión para evitar solicitudes de red.

Ten en cuenta que la caché permanece intacta al reiniciar la app y solo se borra cuando se reinstala la app o mediante una limpieza manual.

Personalizar assets

Para personalizar imágenes y vídeos en tu flow o paywall, implementa los assets personalizados.

Las imágenes y vídeos hero tienen IDs predefinidos: hero_image y hero_video. En un bundle de assets personalizado, te diriges a estos elementos por sus IDs y personalizas su comportamiento.

Para otras imágenes y vídeos, necesitas establecer 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 la imagen principal remota.
  • Mostrar una imagen de vista previa antes de reproducir un vídeo.

Aquí tienes un ejemplo de cómo puedes proporcionar recursos personalizados mediante un simple diccionario:

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 AdaptyUICreateFlowViewParameters()
    .SetCustomAssets(customAssets)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});

Si no se encuentra un asset o falla al cargarse, el flow o paywall volverá a su apariencia predeterminada configurada en el Builder.

Configurar temporizadores definidos por el desarrollador

Para usar temporizadores personalizados en tu app de Unity, pasa un diccionario de IDs de temporizador y sus fechas de finalización 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(2026, 1, 1) }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomTimers(customTimers)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});

En este ejemplo, CUSTOM_TIMER_NY y CUSTOM_TIMER_6H son los Timer ID 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 final del temporizador, como el Año Nuevo.
  • CUSTOM_TIMER_6H: El tiempo restante en un período de 6 horas que comenzó cuando el usuario abrió el flow o paywall.

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 en este proceso es obtener el paywall asociado al placement y su configuración de vista, como se describe a continuación.

El nuevo Paywall Builder requiere la versión 3.3.0 o superior del SDK de Unity.

Por favor, ten en cuenta que este tema hace referencia a paywalls personalizados con Paywall Builder. Si estás implementando tus paywalls manualmente, 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)
  1. Crea tus productos en el Adapty Dashboard.
  2. Crea un paywall e incorpora los productos en él en el Adapty Dashboard.
  3. Crea placements e incorpora tu paywall en ellos en el Adapty Dashboard.
  4. Instala el SDK de Adapty en tu app móvil.

Obtener el paywall diseñado con Paywall Builder

Si has diseñado un paywall con el Paywall Builder, no necesitas preocuparte por renderizarlo en el código de tu app para mostrárselo al usuario. Ese tipo de paywall contiene tanto lo que se debe mostrar 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 recuperar el paywall y su configuración de vista lo antes posible, dando suficiente tiempo para que las imágenes se descarguen antes de presentarlas 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ámetroPresenciaDescripción
placementIdobligatorioEl identificador del Placement deseado. Es el valor que especificaste al crear un placement en el Adapty Dashboard.
locale

opcional

por defecto: en

El identificador de la localización del paywall. Se espera que este parámetro sea un código de idioma compuesto de uno o dos subetiquetas separadas por el carácter menos (-). La primera subetiqueta es para el idioma y la segunda para la región.

Ejemplo: en significa inglés, pt-br representa el portugués de Brasil.

Consulta Localizaciones y códigos de idioma para más información sobre los códigos de idioma y cómo recomendamos usarlos.

fetchPolicypor 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 obtengan los datos más actualizados.

Sin embargo, si crees que tus usuarios tienen una conexión a internet inestable, considera usar .returnCacheDataElseLoad para devolver los datos en caché si existen. En este caso, los usuarios puede que no obtengan los datos más recientes, pero disfrutarán de tiempos de carga más rápidos, independientemente de lo inestable que sea su conexión. La caché se actualiza regularmente, por lo que es seguro usarla durante la sesión para evitar solicitudes de red.

Ten en cuenta que la caché permanece intacta al reiniciar la app y solo se borra cuando se desinstala la app o mediante una limpieza manual.

El SDK de Adapty almacena los paywalls localmente en dos capas: la caché actualizada regularmente 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 en caso de que 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.

loadTimeoutpor defecto: 5 seg

Este valor limita el tiempo de espera para este método. Si se alcanza el tiempo de espera, se devolverán los datos en caché o el respaldo 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 consistir en diferentes solicitudes internamente.

Parámetros de respuesta:

ParámetroDescripción
PaywallUn objeto AdaptyPaywall con una lista de IDs de productos, el identificador del paywall, el Remote Config y otras propiedades.

Obtener la configuración de vista del 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.

Después de obtener el paywall, comprueba si incluye un ViewConfiguration, lo que indica que fue creado con el 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, trátalo como un paywall de Remote Config.

En el SDK de Unity, llama directamente al método CreatePaywallView sin necesidad de obtener primero la configuración de vista de forma manual.

El resultado del método CreatePaywallView solo puede usarse una vez. Si necesitas usarlo de nuevo, vuelve a llamar al método CreatePaywallView. Llamarlo dos veces sin recrearlo puede provocar 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ámetroPresenciaDescripción
paywallobligatorioUn objeto AdaptyPaywall para obtener un controlador del paywall deseado.
loadTimeoutpor defecto: 5 segEste valor limita el tiempo de espera para este método. Si se alcanza el tiempo de espera, se devolverán los datos en caché o el respaldo 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 consistir en diferentes solicitudes internamente.
PreloadProductsopcionalProporciona un array de AdaptyPaywallProducts para optimizar el tiempo de visualización de los productos en pantalla. Si se pasa nil, AdaptyUI obtendrá automáticamente los productos necesarios.
CustomTagsopcionalDefine un diccionario de etiquetas personalizadas y sus valores resueltos. Las etiquetas personalizadas actúan como marcadores de posición en el contenido del paywall, reemplazados dinámicamente por cadenas específicas para personalizar el contenido. Consulta el tema sobre etiquetas personalizadas en el Paywall Builder para más detalles.
CustomTimersopcionalDefine 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 al 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 y vídeos destacados tienen IDs predefinidos: hero_image y hero_video. En un bundle de recursos personalizados, apuntas a estos elementos por sus IDs y personalizas su comportamiento.

Para otras imágenes y vídeos, necesitas establecer un ID personalizado en el dashboard de Adapty.

Por ejemplo, puedes:

  • Mostrar una imagen o vídeo diferente a algunos usuarios.
  • Mostrar una imagen de vista previa local mientras se carga la 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 proporcionar recursos personalizados mediante un diccionario simple:

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 usará su apariencia predeterminada.

Configurar temporizadores definidos por el desarrollador

Para usar temporizadores personalizados en tu app de Unity, puedes pasar un diccionario de IDs de 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 ID de los temporizadores definidos por el desarrollador que configuraste en el Adapty Dashboard. El resolvedor de temporizadores garantiza que tu app actualice dinámicamente cada temporizador con el valor correcto. Por ejemplo:

  • CUSTOM_TIMER_NY: El tiempo restante hasta que finalice el 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.

Acelerar la obtención del paywall con el paywall de la audiencia predeterminada

Normalmente, los paywalls se obtienen casi al instante, por lo que no necesitas preocuparte por acelerar este proceso. Sin embargo, en casos en que tienes muchas audiencias y paywalls, y tus usuarios tienen una conexión a internet lenta, obtener un paywall puede tardar más de lo deseable. En esas situaciones, puede que quieras mostrar un paywall predeterminado para garantizar una experiencia de usuario fluida en lugar de no mostrar ningún paywall.

Para abordar 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 mediante el método getPaywall, como se detalla en la sección Obtener paywall anterior.

Considera usar GetPaywall en lugar de GetPaywallForDefaultAudience, ya que este último tiene limitaciones importantes:

  • Problemas de compatibilidad: Puede generar problemas al mantener varias versiones de la app, lo que obliga a diseños retrocompatibles o a aceptar que las versiones antiguas puedan 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 obtención más rápida 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ámetroPresenciaDescripción
placementIdobligatorioEl identificador del Placement deseado. Es el valor que especificaste al crear un placement en el Adapty Dashboard.
locale

opcional

por defecto: en

El identificador de la localización del paywall. Se espera que este parámetro sea un código de idioma compuesto de una o dos subetiquetas separadas por el carácter menos (-). La primera subetiqueta corresponde al idioma y la segunda a la región.

Ejemplo: en significa inglés, pt-br representa el portugués de Brasil.

fetchPolicypor 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 .returnCacheDataElseLoad para devolver los datos en caché si existen. En ese caso, puede que los usuarios no obtengan los datos más recientes, pero experimentarán tiempos de carga más rápidos, independientemente de lo intermitente que sea su conexión. La caché se actualiza con regularidad, por lo que es seguro usarla durante la sesión para evitar peticiones de red.

Ten en cuenta que la caché permanece intacta al reiniciar la app y solo se borra al reinstalarla 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 en caso de que el CDN sea inaccesible. 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.