Notificar a los probadores sobre nuevas compilaciones

Los SDK opcionales de Firebase App Distribution para iOS y Android te permiten mostrar alertas en la aplicación a tus evaluadores cuando hay nuevas compilaciones de tu aplicación disponibles para instalar. Esta guía explica cómo utilizar los SDK de App Distribution para iOS y Android para crear y personalizar alertas de nuevas compilaciones para sus evaluadores.

Antes de que empieces

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

Paso 1 : habilite la API del probador de distribución de aplicaciones

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

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

Paso 2 : agregue distribución de aplicaciones a su aplicación

El SDK de Android de distribución de aplicaciones consta de dos bibliotecas:

  • firebase-appdistribution-api : la biblioteca exclusiva de API, que puedes incluir en todas las variantes de compilación .
  • firebase-appdistribution : la implementación completa del SDK (opcional).

La biblioteca exclusiva de API permite que su código realice llamadas al SDK. Las llamadas no tendrán ningún efecto si no está presente la implementación completa del SDK.

Declare la dependencia del SDK de Android de distribución de aplicaciones en el archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ). Para evitar incluir la funcionalidad de actualización automática de la implementación completa del SDK en sus compilaciones de Play, agregue la dependencia de la biblioteca solo API a todas las variantes de compilación . Agregue la implementación completa del SDK solo 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-beta12")

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

¿Busca 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 biblioteca principal (para obtener más detalles, consulte las preguntas frecuentes sobre esta iniciativa ).

Paso 3 : configurar alertas en la aplicación

El SDK de Android de distribución de aplicaciones proporciona las siguientes formas de configurar alertas de compilación en la aplicación para sus evaluadores:

  • Una configuración de alerta básica que viene con actualizaciones de aplicaciones prediseñadas y cuadros de diálogo de inicio de sesión para mostrar a los evaluadores.
  • Una configuración de alerta avanzada que le permite personalizar su propia interfaz de usuario.

Si está utilizando el SDK de Android de distribución de aplicaciones por primera vez, le recomendamos utilizar la Configuración básica .

Configuracion basica

Utilice updateIfNewReleaseAvailable para mostrar un cuadro de diálogo de alertas de habilitación prediseñado para los evaluadores que aún no han habilitado las alertas y luego verifique si hay una nueva compilación disponible. Cuando se llama, el método representa la siguiente secuencia:

  1. Comprueba si un probador ha habilitado las alertas. Si el evaluador aún no ha habilitado las alertas, el método le solicita que inicie sesión en App Distribution con su cuenta de Google.

  2. Comprueba si hay compilaciones nuevas disponibles para que las instale el probador.

  3. Muestra una alerta prediseñada que solicita al evaluador que actualice.

  4. Si la nueva compilación es un paquete de aplicaciones de Android (AAB), redirige al evaluador a Google Play para completar el proceso de actualización.

    Si la nueva compilación es un paquete de aplicación de Android (APK), el SDK descarga la nueva compilación en segundo plano y solicita al evaluador que la instale cuando se completa la descarga. El SDK envía notificaciones de progreso de descarga al usuario mediante NotificationManager . También puede agregar su propio indicador de progreso adjuntando un controlador onProgressUpdate a la tarea updateIfNewReleaseAvailable .

Puede llamar updateIfNewReleaseAvailable en cualquier punto de su aplicación. Por ejemplo, puedes llamar updateIfNewReleaseAvailable durante el método onResume de la actividad principal de la aplicación.

El siguiente ejemplo comprueba si el evaluador habilitó las alertas y tiene acceso a una nueva compilación. Si se cumplen estas condiciones, se muestra un cuadro de diálogo cuando la compilación está disponible para instalar:

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 inicio de sesión avanzada

Los métodos signInTester e isTesterSignedIn le brindan más flexibilidad para personalizar la experiencia de inicio de sesión del evaluador, de modo que la experiencia del evaluador pueda coincidir mejor con la apariencia de su aplicación.

El siguiente ejemplo comprueba si el evaluador ya ha iniciado sesión en su cuenta de evaluador de App Distribution. Esto le permite elegir mostrar su interfaz de usuario (UI) de inicio de sesión solo a los evaluadores que aún no han iniciado sesión. Después de que el evaluador inicie sesión, puede llamar a updateIfNewReleaseAvailable para verificar si tiene acceso a una nueva compilación.

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 su interfaz de usuario de inicio de sesión, cuando el evaluador decida continuar, llame 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 le brindan más flexibilidad para personalizar cuándo se le solicita al probador que actualice. También puede personalizar el cuadro de diálogo de actualización prediseñado y el indicador de progreso de descarga para que coincidan mejor con la apariencia de su aplicación.

Tenga en cuenta que updateApp no ​​proporciona indicación del progreso de la descarga. Esto significa que debe implementar su propia indicación de progreso mediante NotificationManager , algún tipo de visualización de estado en la aplicación o algún otro enfoque.

El siguiente ejemplo comprueba si hay una nueva versión disponible y luego muestra una interfaz de usuario personalizada. Antes de llamar a checkForNewRelease y updateApp , asegúrese de que el evaluador haya iniciado sesión mediante la configuración de inicio de sesión 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 evaluador elija continuar con la actualización desde su interfaz de usuario de actualización, llame 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 : cree y pruebe su implementación

Compile su aplicación y pruebe su implementación distribuyéndola a los evaluadores mediante Firebase console.

Visita la guía de solución de problemas de distribución de aplicaciones para obtener ayuda con problemas comunes, como:

  • El probador no recibe alertas en la aplicación
  • Se le solicita al evaluador que inicie sesión en Google más de una vez