Los SDK opcionales de iOS y Android de Firebase App Distribution te permiten mostrar alertas en la app para los verificadores cuando haya nuevas compilaciones disponibles para instalar. En esta guía, se explica cómo usar los SDK de Android y de iOS para App Distribution para crear y personalizar alertas de compilaciones nuevas para tus verificadores.
Antes de comenzar
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.
Paso 1: Habilita la API de App Distribution Tester
Selecciona tu proyecto en la Consola de Google Cloud.
En API de Firebase App Testers, haz clic en Habilitar.
Paso 2: Agrega App Distribution a tu app
El SDK de Android de App Distribution se compone de las siguientes dos bibliotecas:
firebase-appdistribution-api
es la biblioteca única de API, que puedes incluir en todas las variantes de compilación.firebase-appdistribution
es la implementación del SDK completa (opcional).
La biblioteca única de API permite que el código haga llamadas al SDK. Las llamadas no tendrán efecto si la implementación completa del SDK no está presente.
Declara la dependencia del SDK de Android para App Distribution en el archivo Gradle (generalmente, <project>/<app-module>/build.gradle.kts
o <project>/<app-module>/build.gradle
) del módulo (a nivel de app). Para evitar incluir la funcionalidad completa de actualización automática del SDK en tus compilaciones de Play, agrega la dependencia de biblioteca única de API a todas las variantes de compilación. Solo agrega la implementación del SDK completa a las variantes destinadas exclusivamente a pruebas previas al lanzamiento.
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta14")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta14")
}
¿Buscas un módulo de biblioteca específico de Kotlin? A partir de la versión de octubre de 2023, tanto los desarrolladores de Kotlin como los de Java pueden depender del módulo de la biblioteca principal (para obtener más información, consulta las Preguntas frecuentes sobre esta iniciativa).
Paso 3: Configura alertas en la app
El SDK de Android para App Distribution dispone de las siguientes formas de configurar las alertas de compilación en la app para los verificadores:
- Una configuración básica de alertas, que incluye actualizaciones de apps compiladas previamente y diálogos de acceso que se mostrarán a los verificadores
- Una configuración avanzada de alertas, que te permite personalizar la interfaz de usuario
Si usas el SDK de Android para App Distribution por primera vez, te recomendamos elegir la configuración básica.
Configuración básica
Usa updateIfNewReleaseAvailable
para mostrar un diálogo de alerta de habilitación compilado previamente
a los verificadores que aún no activaron las alertas y, luego, comprueba si hay compilaciones nuevas
disponibles. Cuando se llama al método, este invoca la siguiente secuencia:
Comprueba si un verificador habilitó las alertas. Si aún no lo ha hecho, el método le pedirá al verificador que acceda a App Distribution con su Cuenta de Google.
Busca compilaciones disponibles recientemente para que las instale el verificador.
Muestra una alerta compilada previamente que le solicita al verificador una actualización.
Si la nueva compilación es un Android App Bundle (AAB), redirecciona al verificador a Google Play para completar el proceso de actualización.
Si la nueva compilación es un Paquete de aplicación para Android (APK), el SDK descarga la nueva compilación en segundo plano y le pide al verificador que la instale cuando se complete la descarga. El SDK envía notificaciones del progreso de descarga al usuario mediante
NotificationManager
. También puedes agregar tu propio indicador de progreso. Para ello, adjunta un controladoronProgressUpdate
a la tareaupdateIfNewReleaseAvailable
.
Puedes llamar a updateIfNewReleaseAvailable
en cualquier momento desde tu app. Por ejemplo, puedes llamar a updateIfNewReleaseAvailable
durante el método onResume
de la actividad principal de la app.
En el siguiente ejemplo, se comprueba si el verificador habilitó las alertas y si tiene acceso a una compilación nueva. Si se cumplen estas condiciones, se mostrará un diálogo cuando la compilación esté disponible para su instalación:
Kotlin+KTX
// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
firebaseAppDistribution.updateIfNewReleaseAvailable()
.addOnProgressListener { updateProgress ->
// (Optional) Implement custom progress updates in addition to
// automatic NotificationManager updates.
}
.addOnFailureListener { e ->
// (Optional) Handle errors.
if (e is FirebaseAppDistributionException) {
when (e.errorCode) {
Status.NOT_IMPLEMENTED -> {
// SDK did nothing. This is expected when building for Play.
}
else -> {
// Handle other errors.
}
}
}
}
Java
// Copy and paste this into any part of your app - for example, in your main
// activity's onResume method.
FirebaseAppDistribution firebaseAppDistribution = FirebaseAppDistribution.getInstance();
firebaseAppDistribution.updateIfNewReleaseAvailable()
.addOnProgressListener(updateProgress -> {
// (Optional) Implement custom progress updates in addition to
// automatic NotificationManager updates.
})
.addOnFailureListener(e -> {
// (Optional) Handle errors.
if (e instanceof FirebaseAppDistributionException) {
switch (((FirebaseAppDistributionException)e).getErrorCode()) {
case NOT_IMPLEMENTED:
// SDK did nothing. This is expected when building for Play.
break;
default:
// Handle other errors.
break;
}
}
});
Configuración avanzada
Configuración de acceso avanzada
Los métodos signInTester
y isTesterSignedIn
te ofrecen más flexibilidad para
personalizar la experiencia de acceso de los verificadores a fin de que
coincida mejor con el estilo de tu app.
En el siguiente ejemplo, se comprueba si el verificador ya accedió a su cuenta de verificador de
App Distribution. Esto te permite mostrar la
interfaz de usuario (IU) de acceso solo a los verificadores que aún no accedieron. Después
de que el verificador haya accedido, puedes llamar a updateIfNewReleaseAvailable
para comprobar
si tiene acceso a una compilación nueva.
Kotlin+KTX
// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn) {
// Start your sign-in UI here.
}
// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn) {
firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener {
// Handle failed update.
}
}
Java
// Only show sign-in UI if this is the "beta" variant (example).
if (BuildConfig.BUILD_TYPE == "beta" && !firebaseAppDistribution.isTesterSignedIn()) {
// Start your sign-in UI here.
}
// Only check for updates if the tester is already signed in (do not prompt).
if (firebaseAppDistribution.isTesterSignedIn()) {
firebaseAppDistribution.updateIfNewReleaseAvailable().addOnFailureListener( e -> {
// Handle failed update.
});
}
Desde la IU de acceso, cuando el verificador decida continuar, llama a signInTester()
:
Kotlin+KTX
firebaseAppDistribution.signInTester().addOnSuccessListener {
// Handle successful sign-in.
}.addOnFailureListener {
// Handle failed sign-in.
});
Java
firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
// Handle successful sign-in.
}).addOnFailureListener(e -> {
// Handle failed sign-in.
});
Configuración de actualización avanzada
Los métodos checkForNewRelease
y updateApp
te ofrecen más flexibilidad para
personalizar el momento en que se solicita que se actualice tu verificador. También puedes personalizar el
diálogo de actualización compilado previamente y el indicador de progreso de descarga a fin de que
coincidan mejor con el estilo de tu app.
Ten en cuenta que updateApp
no proporciona un indicador de progreso de descarga. Por lo tanto,
debes implementarlo tú mediante
NotificationManager
, algún tipo de visualización de estado en la app o
con un enfoque diferente.
En el siguiente ejemplo, se verifica si hay una versión nueva disponible y, luego,
se muestra una IU personalizada. Antes de llamar a checkForNewRelease
y updateApp
, asegúrate
de que el verificador haya accedido mediante la
configuración de acceso avanzada.
Kotlin+KTX
firebaseAppDistribution.checkForNewRelease().addOnSuccessListener { release ->
if (release != null) {
// New release available. Start your update UI here.
}
}.addOnFailureListener {
// Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
// if built for Play.
}
Java
firebaseAppDistribution.checkForNewRelease().addOnSuccessListener(release -> {
if (release != null) {
// New release available. Start your update UI here.
}
}).addOnFailureListener(e -> {
// Handle failed check for new release. Fails with Status#NOT_IMPLEMENTED
// if built for Play.
});
Cuando el verificador decida continuar con la actualización desde la IU de actualización, llama a
updateApp()
:
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Paso 4: Compila y prueba tu implementación
Distribuye la compilación a los verificadores con Firebase console para compilar la app y probar la implementación.
Visita la guía de solución de problemas de App Distribution para obtener ayuda con problemas habituales, como los siguientes:
- El verificador no recibe alertas en la app.
- Al verificador se le solicita que acceda a Google más de una vez