Gli SDK Firebase App Distribution per iOS e Android facoltativi ti consentono di mostrare ai tester avvisi in-app quando sono disponibili nuove build dell'app da installare. 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: attiva l'API App Distribution Tester
Seleziona il progetto nella console Google Cloud.
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 (facoltativa).
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 file Gradle del modulo (a livello di app) (di solito <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-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 dalla release di ottobre 2023, sia gli sviluppatori Kotlin che quelli Java possono fare affidamento sul modulo della libreria principale (per maggiori 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 compilazione in-app per i tester:
- Una configurazione di avviso di base che include finestre di dialogo di aggiornamento e accesso precompilate da mostrare ai tester.
- Una configurazione di avvisi avanzata che ti consente di personalizzare la tua interfaccia dell'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 visualizzare una finestra di dialogo predefinita per attivare gli avvisi
per i tester che non li hanno ancora attivati, quindi controlla se è disponibile una nuova
build. Quando viene chiamato, il metodo esegue la seguente sequenza:
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.
Verifica la presenza di build di nuova disponibilità da installare per il tester.
Viene visualizzato un avviso predefinito che chiede al tester di eseguire l'aggiornamento.
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 gestoreonProgressUpdate
all'attivitàupdateIfNewReleaseAvailable
.
Puoi chiamare updateIfNewReleaseAvailable
in qualsiasi punto dell'app. Ad esempio, puoi chiamare updateIfNewReleaseAvailable
durante il metodo 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 avanzata dell'accesso
I metodi signInTester
e isTesterSignedIn
ti offrono maggiore flessibilità per personalizzare l'esperienza di accesso del tester, in modo che possa essere più in linea con l'aspetto e il 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 che il tester ha eseguito l'accesso, puoi chiamare updateIfNewReleaseAvailable
per verificare se 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 una maggiore flessibilità per personalizzare il momento in cui viene richiesto all'utente di eseguire l'aggiornamento. Puoi anche personalizzare la dialoga di aggiornamento predefinita e l'indicatore di avanzamento del download in modo che si adattino 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
, un qualche tipo di visualizzazione dello stato in-app o un altro
approccio.
L'esempio seguente verifica se è disponibile una nuova release e poi visualizza un'interfaccia utente 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 l'app e testa l'implementazione distribuendo la build ai tester utilizzando la console Firebase.
Consulta la App DistributionGuida alla risoluzione dei problemi per assistenza in merito a problemi comuni, ad esempio:
- Il tester non riceve avvisi in-app
- Al tester viene chiesto di accedere a Google più di una volta