Notificar a los verificadores sobre compilaciones nuevas

Los SDK de Android y de iOS opcionales para Firebase App Distribution te permiten mostrar alertas en las apps a tus verificadores cuando hay nuevas compilaciones disponibles para instalar. En esta guía, se explica cómo usar los SDK de Android y de iOS para Firebase App Distribution a fin de crear y personalizar alertas de compilaciones nuevas para tus verificadores.

Antes de comenzar

Si aún no lo hiciste, agrega Firebase a tu proyecto de Android.

Paso 1: Habilita la API de App Distribution Tester

  1. Selecciona tu proyecto en la consola de Google Cloud.

  2. En API de Firebase App Testers, haz clic en Habilitar.

Paso 2: Agrega App Distribution a tu app

El SDK de Android para App Distribution se compone de 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 solo 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:

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta10")

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta10")
}

Java

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta10")

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta10")
}

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:

  1. 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.

  2. Busca compilaciones disponibles recientemente para que las instale el verificador.

  3. Muestra una alerta compilada previamente que le solicita al verificador una actualización.

  4. 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 controlador onProgressUpdate a la tarea updateIfNewReleaseAvailable.

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 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 sobre 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