Avvisare i tester in merito alle nuove build


Gli SDK facoltativi Firebase App Distribution per iOS e Android ti consentono di visualizzare avvisi in-app per i tester quando sono disponibili nuove build della tua app installare l'app. Questa guida spiega come utilizzare gli SDK App Distribution per iOS e Android per creare e personalizzare nuovi avvisi di compilazione per i tester.

Prima di iniziare

Se non lo hai già fatto, aggiungi Firebase al tuo progetto Android.

Passaggio 1: abilita l'API App Distribution Tester

  1. Seleziona il progetto nella console Google Cloud.

  2. In API Firebase App Testers, fai clic su Attiva.

Passaggio 2: aggiungi App Distribution alla tua app

L'SDK Android App Distribution è costituito da due librerie:

  • firebase-appdistribution-api: la libreria solo API, che puoi includere in tutte le varianti di build.
  • firebase-appdistribution: l'implementazione completa dell'SDK (facoltativo).

La libreria solo API consente al codice di effettuare chiamate all'SDK. Le chiamate non avranno alcun effetto se non è presente l'implementazione completa dell'SDK.

Dichiara la dipendenza per l'SDK Android App Distribution nel tuo modulo (a livello di app) file Gradle (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle). Per evitare di includere l'SDK completo la funzionalità di aggiornamento autonomo dell'implementazione nelle tue Play build, aggiungi la dipendenza della libreria solo API a tutti creare varianti. Aggiungi l'implementazione completa dell'SDK solo alle varianti destinate esclusivamente ai test pre-release.

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

Cerchi un modulo della libreria specifico per Kotlin? A partire dal Release di ottobre 2023, gli sviluppatori Kotlin e Java possono dipendere dal modulo della libreria principale (per i dettagli, consulta Domande frequenti su questa iniziativa).

Passaggio 3: configura gli avvisi in-app

L'SDK Android App Distribution offre i seguenti modi per configurare gli avvisi di compilazione in-app per i tester:

  • Una configurazione di base degli avvisi fornita con l'aggiornamento predefinito dell'app e di accesso da mostrare ai tester.
  • Una configurazione di avvisi avanzata che ti consente di personalizzare la tua interfaccia dell'utente.

Se utilizzi l'SDK App Distribution per Android per la prima volta, ti consigliamo utilizzando la configurazione di base.

Configurazione di base

Utilizza updateIfNewReleaseAvailable per visualizzare avvisi di attivazione predefiniti ai tester che non hanno ancora attivato gli avvisi, quindi controlla se è la build sia disponibile. Quando viene chiamato, il metodo applica la seguente sequenza:

  1. Controlla se un tester ha attivato gli avvisi. Se il tester non ha ancora attivato gli avvisi, il metodo lo invita ad accedere a App Distribution con il suo Account Google.

  2. Verifica la presenza di nuove build disponibili che il tester può installare.

  3. Viene visualizzato un avviso predefinito che chiede al tester di eseguire l'aggiornamento.

  4. Se la nuova build è un app bundle Android (AAB), reindirizza il tester a Google Play per completare la procedura di aggiornamento.

    Se la nuova build è un pacchetto di applicazioni Android (APK), l'SDK scarica la nuova build in background e chiede al tester di installarla al termine del download. L'SDK invia notifiche relative allo stato di avanzamento del download all'utente utilizzando NotificationManager. Puoi anche aggiungere il tuo indicatore di avanzamento collegando un gestore onProgressUpdate all'attività updateIfNewReleaseAvailable.

Puoi chiamare updateIfNewReleaseAvailable in qualsiasi momento nell'app. Per ad esempio, puoi chiamare updateIfNewReleaseAvailable durante il campo onResume dell'attività principale dell'app.

Il seguente esempio verifica se il tester ha attivato gli avvisi e ha accesso a una nuova build. Se queste condizioni sono soddisfatte, viene visualizzata una finestra di dialogo quando la build è disponibile per l'installazione:

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

Configurazione avanzata

Configurazione di accesso avanzata

I metodi signInTester e isTesterSignedIn offrono maggiore flessibilità personalizzare l'esperienza di accesso del tester in modo che possa che si adattano meglio all'aspetto e al design della tua app.

L'esempio seguente verifica se il tester ha già eseguito l'accesso al suo account testerApp Distribution. In questo modo puoi scegliere di mostrare la tua interfaccia utente (UI) di accesso solo ai tester che non hanno ancora eseguito l'accesso. Dopo il giorno il tester accede, quindi puoi chiamare updateIfNewReleaseAvailable per controllare se il tester ha accesso a una nuova build.

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

Dall'interfaccia utente di accesso, quando il tester sceglie di procedere, chiama 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.
});

Configurazione dell'aggiornamento avanzato

I metodi checkForNewRelease e updateApp ti offrono maggiore flessibilità per personalizzare il momento in cui viene richiesto all'utente di eseguire l'aggiornamento. Puoi anche personalizzare finestra di dialogo di aggiornamento predefinita e indicatore di avanzamento del download per poter meglio e in linea con l'aspetto e il design della tua app.

Tieni presente che updateApp non fornisce un'indicazione dell'avanzamento del download. Ciò significa che è necessario implementare una propria indicazione di avanzamento utilizzando NotificationManager, visualizzazione dello stato in-app o altro l'importanza di un approccio umile.

L'esempio seguente verifica se è disponibile una nuova release mostra una UI personalizzata. Prima di chiamare checkForNewRelease e updateApp, assicurati che il tester abbia eseguito l'accesso utilizzando la configurazione di accesso avanzata.

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

Quando il tester sceglie di procedere con l'aggiornamento dall'interfaccia utente di aggiornamento, chiama updateApp():

Kotlin+KTX

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

Java

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

Passaggio 4: crea e testa l'implementazione

Crea la tua app e testa l'implementazione la distribuzione della build ai tester usando la console Firebase.

Consulta la App Distribution Guida alla risoluzione dei problemi per assistenza in merito a problemi comuni, ad esempio:

  • Il tester non riceve avvisi in-app
  • Al tester viene chiesto più volte di accedere a Google