Gli SDK facoltativi per iOS e Android di Firebase App Distribution ti consentono di mostrare avvisi in-app ai tuoi tester quando sono disponibili nuove build della tua app per l'installazione. Questa guida spiega come usare gli SDK iOS e Android di App Distribution per creare e personalizzare gli avvisi di nuova build per i tuoi tester.
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android .
Passaggio 1 : abilita l'API App Distribution Tester
Seleziona il tuo progetto in Google Cloud Console .
In API Firebase App Testers, fai clic su Abilita .
Passaggio 2 : aggiungi App Distribution alla tua app
L'SDK Android di 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 (opzionale).
La libreria solo API consente al tuo codice di effettuare chiamate all'SDK. Le chiamate non avranno effetto se non è presente l'implementazione completa dell'SDK.
Dichiara la dipendenza per l'SDK Android di 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 di 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-rilascio:
Kotlin+KTX
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta10")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta10")
}
Java
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta10")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta10")
}
Passaggio 3 : configura gli avvisi in-app
L'SDK di App Distribution per Android fornisce i seguenti modi per impostare avvisi di compilazione in-app per i tuoi tester:
- Una configurazione di avviso di base fornita con l'aggiornamento dell'app predefinito e le finestre di dialogo di accesso da mostrare ai tester.
- Una configurazione avanzata degli avvisi che consente di personalizzare la propria interfaccia utente.
Se stai utilizzando l'SDK Android di App Distribution per la prima volta, ti consigliamo di utilizzare la configurazione di base .
Configurazione di base
Usare updateIfNewReleaseAvailable
per visualizzare una finestra di dialogo di abilitazione predefinita per gli avvisi ai tester che non hanno ancora abilitato gli avvisi e quindi controllare se è disponibile una nuova build. Quando viene chiamato, il metodo esegue la seguente sequenza:
Verifica se un tester ha abilitato gli avvisi. Se il tester non ha ancora abilitato gli avvisi, il metodo richiede al tester di accedere ad App Distribution con il proprio account Google.
Verifica la presenza di nuove build disponibili per l'installazione da parte del tester.
Visualizza un avviso predefinito che richiede al tester di eseguire l'aggiornamento.
Se la nuova build è un Android App Bundle (AAB), reindirizza il tester a Google Play per completare il processo di aggiornamento.
Se la nuova build è un'applicazione Android PacKage (APK), l'SDK scarica la nuova build in background e chiede al tester di installarla al termine del download. L'SDK invia notifiche sull'avanzamento del download all'utente tramite
NotificationManager
. Puoi anche aggiungere il tuo indicatore di avanzamento collegando un gestoreonProgressUpdate
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 abilitato 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
offrono maggiore flessibilità per personalizzare l'esperienza di accesso del tester, in modo che l'esperienza del tester possa corrispondere meglio all'aspetto della tua app.
L'esempio seguente verifica se il tester ha già eseguito l'accesso al proprio account di tester di App Distribution. In questo modo puoi scegliere di visualizzare l'interfaccia utente (UI) di accesso solo ai tester che non hanno ancora effettuato 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+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 avanzata dell'aggiornamento
I metodi checkForNewRelease
e updateApp
offrono maggiore flessibilità per la personalizzazione quando al tester viene richiesto di eseguire l'aggiornamento. Puoi anche personalizzare la finestra di dialogo di aggiornamento predefinita e l'indicatore di avanzamento del download in modo che possano corrispondere meglio all'aspetto della tua app.
Tieni presente che updateApp
non fornisce indicazioni sull'avanzamento del download. Ciò significa che devi implementare la tua indicazione di avanzamento utilizzando NotificationManager
, una sorta di visualizzazione dello stato in-app o qualche altro approccio.
L'esempio seguente controlla se è disponibile una nuova versione e quindi visualizza un'interfaccia utente personalizzata. Prima di chiamare checkForNewRelease
e updateApp
, assicurati che il tester abbia effettuato l'accesso usando 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 la tua implementazione
Crea la tua app e testa la tua implementazione distribuendo la build ai tester tramite la console Firebase.
Visita la guida alla risoluzione dei problemi di distribuzione delle app per ricevere assistenza su problemi comuni, ad esempio:
- Il tester non riceve avvisi in-app
- Al tester viene richiesto di accedere a Google più di una volta