Avvisare i tester in merito alle nuove build


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

Prima di iniziare

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

Passaggio 1: attiva l'API Tester App Distribution

  1. Seleziona il tuo progetto nella Google Cloud console.

  2. In API Tester di Firebase App, fai clic su Attiva.

Passaggio 2: aggiungi App Distribution alla tua app

L'SDK Android di App Distribution è composto 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 (facoltativa).

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

Dichiara la dipendenza per l'SDK Android App Distribution nel file Gradle del modulo (a livello di app) (in genere <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle). Per evitare di includere la funzionalità di aggiornamento automatico dell'implementazione completa dell'SDK nelle build Play, aggiungi la dipendenza della libreria solo API a tutte le varianti di build. 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-beta18")

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

Cerchi un modulo di libreria specifico per Kotlin? A partire dalla release di ottobre 2023, gli sviluppatori Kotlin e Java possono dipendere dal modulo della libreria principale (per i dettagli, consulta le 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 build in-app per i tester:

  • Una configurazione di avviso di base con finestre di dialogo predefinite di aggiornamento dell'app e di accesso da mostrare ai tester.
  • Una configurazione di avviso avanzata che ti consente di personalizzare la tua interfaccia utente.

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

Configurazione di base

Utilizza updateIfNewReleaseAvailable per mostrare una finestra di dialogo predefinita di attivazione degli avvisi ai tester che non li hanno ancora attivati e poi verifica se è disponibile una nuova build. Quando viene chiamato, il metodo esegue la seguente sequenza:

  1. Verifica se un tester ha attivato gli avvisi. Se il tester non ha ancora attivato gli avvisi, il metodo gli chiede di accedere a App Distribution con il suo Account Google.

  2. Verifica la presenza di nuove build disponibili da installare per il tester.

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

  4. Se la nuova build è un Android App Bundle (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 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 punto della tua app. Ad esempio, puoi chiamare updateIfNewReleaseAvailable durante il metodo onResume dell'attività principale dell'app.

L'esempio seguente 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

// 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 ti offrono maggiore flessibilità per personalizzare l'esperienza di accesso del tester, in modo che possa corrispondere meglio all'aspetto della tua app.

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

Kotlin

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

Dalla UI di accesso, quando il tester sceglie di procedere, chiama signInTester():

Kotlin

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 di aggiornamento avanzata

I metodi checkForNewRelease e updateApp ti offrono maggiore flessibilità per personalizzare il momento in cui viene chiesto al tester di eseguire l'aggiornamento. Puoi anche personalizzare la finestra di dialogo di aggiornamento predefinita e l'indicatore di avanzamento del download in modo che corrispondano meglio all'aspetto della tua app.

Tieni presente che updateApp non fornisce un'indicazione dell'avanzamento del download. Ciò significa che devi implementare la tua indicazione di avanzamento utilizzando NotificationManager, una sorta di visualizzazione dello stato in-app o un altro approccio.

L'esempio seguente verifica se è disponibile una nuova uscita e poi 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

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 dalla UI di aggiornamento, chiama updateApp():

Kotlin

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 distribuendo la build ai tester utilizzando la Firebase console.

Consulta la App Distribution Guida alla risoluzione dei problemi per ricevere assistenza in caso di problemi comuni, ad esempio:

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