Optimizar la obtención de flows y paywalls en el SDK de Flutter
Una obtención fiable de un flow o paywall en Flutter hace tres cosas: se renderiza rápido, devuelve la variación dirigida a la audiencia correspondiente y tiene un respaldo elegante cuando la red es lenta. Las reglas que se describen a continuación cubren los patrones de temporización, caché y respaldo necesarios para lograrlo.
Las reglas asumen que Adapty().activate() y Adapty().identify() ya se han resuelto. Consulta Orden de llamadas en el SDK de Flutter.
Reglas y errores comunes
| Haz esto | No hagas esto | Por qué |
|---|---|---|
| Obtén el placement que estás a punto de mostrar. | Precarga todos los placements de forma concurrente al iniciar. | La precarga masiva bloquea el hilo principal y produce una pantalla en negro durante el pico de carga. |
Llama a getFlow después de que la atribución haya tenido tiempo de resolverse — por ejemplo, 1–2 segundos después de activate o tras que didUpdateProfileStream se dispare. | Llama a getFlow en main() antes de runApp. | La atribución aún no ha llegado. El flow se resuelve contra la audiencia predeterminada y omite silenciosamente los segmentos y la personalización de ASA. |
Establece un loadTimeout y configura un paywall de respaldo para cada placement. | Esperar getFlow indefinidamente. | Sin un tiempo de espera, los usuarios con mala conectividad ven una pantalla en blanco hasta que se resuelve la red — o cierran la app. |
Consulta Obtener paywalls y productos para la referencia de los parámetros fetchPolicy y loadTimeout, y Placements para elegir el placement adecuado.
Mostrar el contenido multimedia de la primera pantalla desde el bundle de la app
Un flow descarga sus imágenes y vídeos desde Adapty. Para mostrar el contenido multimedia de la primera pantalla al instante, sírvelo desde el bundle de la app. Es una buena forma de reutilizar recursos que ya incluyes en la app, como los visuales de un onboarding nativo existente.
- En el Flow & Paywall Builder, asigna un ID de medio personalizado a la imagen o el vídeo. El archivo que subas ahí se usará como respaldo.
- Añade el archivo a los assets de Flutter y regístralo en
assetsdentro depubspec.yaml. - Al crear la vista del flow, pasa el archivo incluido para ese ID en
customAssets:
// "welcome_video" is the custom media ID set in the Flow & Paywall Builder
final bundledAssets = {
'welcome_video': AdaptyCustomAsset.localVideoAsset(
assetId: 'assets/videos/welcome.mp4',
),
};
try {
final view = await AdaptyUI().createFlowView(
flow: flow,
customAssets: bundledAssets,
);
} on AdaptyError catch (e) {
// handle the error
}
Los archivos incluidos aumentan el tamaño de descarga de tu app, así que incluye solo los recursos que el usuario ve primero.
Los archivos multimedia que no incluyas en el bundle aparecerán igualmente de inmediato: el layout del flow incluye una copia en baja resolución de cada imagen, incluyendo el fotograma estático de los vídeos, y la muestra hasta que se cargue el archivo completo.
Para la referencia completa de customAssets, consulta Personalizar assets.
Ajusta para conectividad deficiente
Para mercados con conectividad consistentemente deficiente (zonas rurales, transporte, regiones afectadas por enrutamiento):
- Establece
fetchPolicy: AdaptyFlowFetchPolicy.returnCacheDataElseLoaden cada llamada excepto la primera. - Configura un paywall de respaldo para cada placement en el Adapty Dashboard.
- Establece
loadTimeoutentre 3 y 5 segundos y acepta el respaldo cuando se agote el tiempo. - No bloquees la visualización del flow esperando
getProfile(). Llama agetFlowde forma independiente para que un perfil lento no bloquee la interfaz.