
El componente Flows de SAP BTP SDK para Android tiene como objetivo facilitar el proceso de incorporación de SAP Mobile Services para los desarrolladores móviles. Lanzamos la versión basada en vistas hace 3 años y muchos equipos la están usando ahora.
Ahora el Jetpack Compose versión del componente de flujos de SAP BTP SDK para Android se lanza en la versión 6.0. Lo mejoramos mucho y lo hacemos más flexible y fácil de usar. Aquí hay algunas capturas de pantalla de la aplicación de demostración.
En comparación con la versión basada en vistas de Flows, la versión Compose tiene el mismo concepto, por lo que la estructura de su proyecto actual no necesita ningún cambio, por ejemplo:
También realizamos muchas mejoras en la versión Compose de Flows.
fun startFlow(
context: Context,
flowContext: FlowContext,
updateIntent: ((Intent) -> Unit)? = null,
callback: FlowActivityResultCallback = { _, _ -> }
) { ... }
Esta es la API para iniciar un flujo, tiene 2 diferencias en comparación con los flujos basados en vistas.
FlowUtil.startFlow(
this,
flowContext = DemoApplication.getOnboardingFlowContext(this),
updateIntent = { intent ->
intent.addFlags(
Intent.FLAG_ACTIVITY_NEW_TASK
)
FlowUtil.prepareCustomBundle(intent) {
forceLogoutWhenRestore(true)
}
}
) { resultCode, _ ->
logger.debug("Back from restore flow to DeviceAuthorizationGrantActivity.")
if (resultCode == Activity.RESULT_OK) {
val intent = Intent(this, MainActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}
startActivity(intent)
}
finishAffinity()
}
Tenga en cuenta que el administrar tareas de una aplicación de Android podría ser complicado, tenga cuidado al usar esto para agregar indicadores de intención.
data class FlowOptions(
val fullScreen: Boolean = false,
val activationOption: ActivationOption = ActivationOption.QR_ONLY,
val useDefaultEulaScreen: Boolean = true,
val requireQRCodeConfirmScreen: Boolean = true,
val orientation: OnboardingOrientation = OnboardingOrientation.UNSPECIFIED,
val oAuthOption: OAuthOption = OAuthOption(),
val screenSettings: CustomScreenSettings = CustomScreenSettings(),
val qrCodeSecureOption: QRCodeSecureOption = QRCodeSecureOption.UNSPECIFIED,
val customStyles: CustomStyles = CustomStyles(),
val skipRestoreFlowScreens: Boolean = false,
val resetOnTimeoutSignInScreen: Boolean = false
) { ... }
Esta es la nueva clase ‘FlowOptions’, es mucho más simple que en la versión basada en vistas. Con la ayuda de la función ‘copiar’ de las clases de datos de Kotlin, es mucho más fácil de usar. Y también eliminamos algunos campos duplicados en los flujos basados en vista sin afectar la extensibilidad y las características existentes.
Las funciones de devolución de llamada en ‘FlowStateListener’ y las secuencias de ejecución son las mismas que antes, pero todas están marcadas como ‘suspendidas’ en la versión Compose de Flows. Esto hará que el código del cliente sea más fácil de ejecutar en diferentes Dispatchers y también hará que la secuencia de ejecución sea más fácil de administrar.
class DemoFlowStateListener(private val context: Context) : FlowStateListener() {
override suspend fun onHostTokenRenewed() {
super.onHostTokenRenewed()
UserSecureStoreDelegate.getInstance().getOAuthToken()?.also { token ->
logger.debug("Sending OAuth2 token to wearable...")
dataClientSender.sendOAuth2TokenToWearable(token.toString())
}
}
...
}
Por ejemplo, el código anterior enviará el token de OAuth a la aplicación portátil complementaria cuando se recupera un nuevo token en la aplicación del teléfono.
La migración a la versión Jetpack Compose del componente Flows desde la versión basada en vistas NO afectará a la aplicación existente. Después de la migración, se puede acceder a la aplicación haciendo un inicio de sesión normal, todos los datos existentes seguirán allí. Pero para el proceso de desarrollo, hay algunos cambios que debe realizar:
implementation "com.sap.cloud.android:flows-compose:<sdk_version>"
implementation "com.sap.cloud.android:onboarding-compose:<sdk_version>"
implementation "com.sap.cloud.android:fiori-composable-theme:${version}",
implementation "com.sap.cloud.android:fiori-compose-customization:${version}"
implementation "com.sap.cloud.android:fiori-compose-ui:${version}"
La versión de Jetpack Compose del componente Flows es un módulo completamente nuevo que hace que su experiencia de incorporación sea mucho más fluida y eficiente. También es más elegante, flexible y fácil de usar. Si quieres saber más sobre este nuevo módulo, consulta el documento aquí.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073