Notificar a los probadores sobre nuevas compilaciones

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

Antes de que empieces

Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .

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

  1. Seleccione su proyecto en Google Cloud Console .

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

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

El SDK de Android App Distribution consta de dos bibliotecas:

  • firebase-appdistribution-api : la biblioteca solo de API, que puede 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 efecto si no está presente la implementación completa del SDK.

Declare la dependencia para el SDK de Android de distribución de aplicaciones en el archivo Gradle de su módulo (nivel de aplicación) (generalmente app/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 de API a todas las variantes de compilación . Solo agregue la implementación completa del SDK a las variantes destinadas exclusivamente a las pruebas previas al lanzamiento:

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta03'

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

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta03'

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

Paso 3 : configurar alertas en la aplicación

El SDK de Android App Distribution 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 diálogos de inicio de sesión y actualización de aplicaciones preconstruidos 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 App Distribution por primera vez, le recomendamos que utilice la configuración básica .

Configuracion basica

Utilice updateIfNewReleaseAvailable para mostrar un cuadro de diálogo de activación de alertas preconstruido a 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 ejecuta la siguiente secuencia:

  1. Comprueba si un probador ha habilitado alertas. Si el probador 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 disponibles recientemente para que las instale el probador.

  3. Muestra una alerta preconstruida que solicita al probador que actualice.

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

    Si la nueva compilación es una aplicación de Android PacKage (APK), el SDK descarga la nueva compilación en segundo plano y solicita al probador 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 a updateIfNewReleaseAvailable en cualquier punto de su aplicación. Por ejemplo, puede llamar a updateIfNewReleaseAvailable durante el método onResume de la actividad principal de la aplicación.

El siguiente ejemplo verifica si el probador habilitó 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:

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;
        }
      }
    });

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

Configuración avanzada

Configuración avanzada de inicio de sesión

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

El siguiente ejemplo verifica si el probador ya ha iniciado sesión en su cuenta de probador de distribución de aplicaciones. Esto le permite optar por 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 el evaluador tiene acceso a una nueva compilación.

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.
    });
}

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

Desde la interfaz de usuario de inicio de sesión, cuando el evaluador decida continuar, llama a signInTester() :

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

Configuración de actualización avanzada

Los métodos checkForNewRelease y updateApp le brindan más flexibilidad para personalizar cuando se le solicita a su probador que actualice. También puede personalizar el cuadro de diálogo de actualización prediseñado y el indicador de progreso de la descarga para que coincidan mejor con la apariencia de su aplicación.

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

El siguiente ejemplo verifica 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 .

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.
});

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

Cuando el probador elige continuar con la actualización desde su interfaz de usuario de actualización, llame a updateApp() :

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

Paso 4 : Cree y pruebe su implementación

Cree su aplicación y pruebe su implementación mediante la distribución de la compilación a los probadores mediante la consola de Firebase.

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

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