Presentar onboardings en el SDK de Flutter
Los onboardings están obsoletos en el SDK v4 y se eliminarán en una versión futura. Ya no reciben correcciones ni mejoras. Usa flows en su lugar: a diferencia de los onboardings, que se ejecutan dentro de un WebView, los flows se renderizan de forma nativa en el dispositivo, lo que ofrece animaciones más fluidas, una apariencia nativa consistente, tiempos de carga más rápidos y sin dependencia del runtime de WebView. Consulta Obtener flows y paywalls y Mostrar flows y paywalls para empezar.
Si has personalizado un onboarding con el builder, no necesitas preocuparte por renderizarlo en el código de tu app Flutter para mostrárselo al usuario. Ese onboarding contiene tanto lo que debe mostrarse como la forma en que debe mostrarse.
Antes de empezar, asegúrate de que:
- Has instalado Adapty Flutter SDK 3.8.0 o posterior.
- Has creado un onboarding.
- Has añadido el onboarding a un placement.
El SDK de Adapty para Flutter ofrece dos formas de presentar onboardings:
-
Pantalla independiente
-
Widget embebido
Mostrar como pantalla independiente
Para mostrar un onboarding como pantalla independiente, usa el método onboardingView.present() en el onboardingView creado por el método createOnboardingView. Cada view solo puede usarse una vez. Si necesitas mostrar el onboarding de nuevo, llama a createOnboardingView otra vez para crear una nueva instancia de onboardingView.
Reutilizar el mismo onboardingView sin recrearlo puede provocar un error AdaptyUIError.viewAlreadyPresented.
try {
await onboardingView.present();
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Cerrar el onboarding
Cuando necesites cerrar el onboarding por código, usa el método dismiss():
try {
await onboardingView.dismiss();
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Configurar el estilo de presentación en iOS
Configura cómo se presenta el onboarding en iOS pasando el parámetro iosPresentationStyle al método present(). El parámetro acepta los valores AdaptyUIIOSPresentationStyle.fullScreen (predeterminado) o AdaptyUIIOSPresentationStyle.pageSheet.
try {
await onboardingView.present(iosPresentationStyle: AdaptyUIIOSPresentationStyle.pageSheet);
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Integrar en la jerarquía de widgets
Para integrar un onboarding dentro de tu árbol de widgets existente, usa el widget AdaptyUIOnboardingPlatformView directamente en tu jerarquía de widgets de Flutter.
AdaptyUIOnboardingPlatformView(
onboarding: onboarding, // The onboarding object you fetched
onDidFinishLoading: (meta) {
},
onDidFailWithError: (error) {
},
onCloseAction: (meta, actionId) {
},
onPaywallAction: (meta, actionId) {
},
onCustomAction: (meta, actionId) {
},
onStateUpdatedAction: (meta, elementId, params) {
},
onAnalyticsEvent: (meta, event) {
},
)
Para que la platform view de Android funcione, asegúrate de que tu MainActivity extienda FlutterFragmentActivity:
class MainActivity : FlutterFragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
} Cargador durante el onboarding
Al presentar un onboarding, puede que notes una breve pantalla de carga entre tu pantalla de presentación y el onboarding mientras se inicializa la vista subyacente. Puedes gestionar esto de distintas formas según tus necesidades.
Controla la pantalla de presentación con onDidFinishLoading
Este enfoque solo está disponible al incrustar el onboarding como widget. No está disponible para la presentación en pantalla independiente.
El enfoque multiplataforma recomendado es mantener visible la pantalla de carga o superposición personalizada hasta que el onboarding esté completamente cargado, y luego ocultarla manualmente.
Al usar el widget embebido, superpón tu propio widget sobre él y ocúltalo cuando se dispare onDidFinishLoading:
AdaptyUIOnboardingPlatformView(
onboarding: onboarding,
onDidFinishLoading: (meta) {
// Hide your custom splash screen or overlay here
},
// ... other callbacks
)
Personalizar el loader nativo
Este enfoque es específico de plataforma y requiere mantener código de UI nativo. No se recomienda a menos que ya mantengas capas nativas separadas en tu app.
Si necesitas personalizar el loader predeterminado, puedes reemplazarlo con layouts específicos de cada plataforma. Este enfoque requiere implementaciones separadas para Android e iOS:
- iOS: Añade
AdaptyOnboardingPlaceholderView.xiba tu proyecto de Xcode - Android: Crea
adapty_onboarding_placeholder_view.xmlenres/layouty define ahí un placeholder
Personalizar cómo se abren los enlaces en los onboardings
La personalización de cómo se abren los enlaces en los onboardings es compatible a partir de Adapty SDK v3.15.1.
Por defecto, los enlaces en los onboardings se abren en un navegador integrado en la app. Esto ofrece una experiencia fluida al mostrar las páginas web dentro de tu aplicación, sin que el usuario tenga que cambiar de app.
Si prefieres abrir los enlaces en un navegador externo, puedes personalizar este comportamiento estableciendo el parámetro externalUrlsPresentation en AdaptyWebPresentation.externalBrowser:
Desactivar los márgenes de área segura (Android)
Por defecto, en dispositivos Android, la vista de onboarding aplica automáticamente márgenes de área segura para evitar elementos de la interfaz del sistema como la barra de estado y la barra de navegación. Sin embargo, si quieres desactivar este comportamiento y tener control total sobre el diseño, puedes hacerlo añadiendo un recurso booleano a tu app:
-
Ve a
android/app/src/main/res/values. Si no existe el archivobools.xml, créalo. -
Añade el siguiente recurso:
<resources>
<bool name="adapty_onboarding_enable_safe_area_paddings">false</bool>
</resources>
Ten en cuenta que los cambios se aplican globalmente a todos los onboardings de tu app.