Opcjonalne p0/ pakiety SDK na iOS i Androida umożliwiają wyświetlanie testerom alertów w aplikacji, gdy dostępne są nowe wersje aplikacji do instalacji.Firebase App Distribution Z tego przewodnika dowiesz się, jak za pomocą pakietów SDK App Distribution na iOS i Androida tworzyć i dostosowywać alerty o nowych wersjach dla testerów.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu aplikacji na Androida.
Krok 1. Włącz interfejs App Distribution Tester API
W konsoli Google Cloud wybierz swój projekt.
W sekcji Firebase App Testers API kliknij Włącz.
Krok 2. Dodaj App Distribution do aplikacji
Pakiet SDK App Distribution na Androida składa się z 2 bibliotek:
firebase-appdistribution-api– biblioteka zawierająca tylko interfejs API, którą możesz uwzględnić we wszystkich wariantach kompilacji.firebase-appdistribution– pełna implementacja pakietu SDK (opcjonalna).
Biblioteka zawierająca tylko interfejs API umożliwia kodowi wywoływanie pakietu SDK. Wywołania nie będą miały żadnego efektu, jeśli nie będzie pełnej implementacji pakietu SDK.
Zadeklaruj zależność od pakietu SDK na Androida w pliku Gradle modułu
(aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub
<project>/<app-module>/build.gradle). Aby uniknąć uwzględniania w kompilacjach na potrzeby Play funkcji automatycznej aktualizacji pełnej implementacji pakietu SDK
, dodaj zależność od biblioteki zawierającej tylko interfejs API do wszystkich
wariantów kompilacji.App Distribution
Pełną implementację pakietu SDK dodaj tylko do wariantów przeznaczonych wyłącznie do testów przedpremierowych.
dependencies {
// ADD the API-only library to all variants
implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta19")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta19")
}
Szukasz modułu biblioteki przeznaczonego specjalnie dla Kotlina? Od wersji z października 2023 r. deweloperzy korzystający z Kotlina i Javy mogą korzystać z głównego modułu biblioteki (więcej informacji znajdziesz w sekcji Najczęstsze pytania dotyczące tej inicjatywy).
Krok 3. Skonfiguruj alerty w aplikacji
Pakiet SDK na Androida App Distribution umożliwia skonfigurowanie alertów o nowych wersjach w aplikacji dla testerów na 2 sposoby:
- Podstawowa konfiguracja alertów, która zawiera gotowe okna dialogowe aktualizacji aplikacji i logowania wyświetlane testerom.
- Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.
Jeśli używasz pakietu App Distribution Android SDK po raz pierwszy, zalecamy użycie konfiguracji podstawowej.
Podstawowa konfiguracja
Użyj updateIfNewReleaseAvailable, aby wyświetlić gotowe okno dialogowe włączania alertów testerom, którzy jeszcze nie włączyli alertów, a następnie sprawdzić, czy dostępna jest nowa wersja. Po wywołaniu metoda wykonuje te czynności:
Sprawdza, czy tester włączył alerty. Jeśli tester nie włączył jeszcze alertów, metoda wyświetla prośbę o zalogowanie się w App Distribution za pomocą konta Google.
Sprawdza, czy są dostępne nowe wersje, które tester może zainstalować.
Wyświetla gotowy alert z prośbą o aktualizację.
Jeśli nowa wersja to pakiet aplikacji na Androida (AAB), przekierowuje testera do Google Play aby dokończyć proces aktualizacji.
Jeśli nowa wersja to pakiet aplikacji na Androida (APK), pakiet SDK pobiera nową wersję w tle i wyświetla testerowi prośbę o instalację po zakończeniu pobierania. Pakiet SDK wysyła powiadomienia o postępie pobierania do użytkownika za pomocą
NotificationManager. Możesz też dodać własny wskaźnik postępu, dołączając obsługęonProgressUpdatedo zadaniaupdateIfNewReleaseAvailable.
Metodę updateIfNewReleaseAvailable możesz wywołać w dowolnym momencie w aplikacji. Możesz na przykład wywołać ją w metodzie onResume głównej aktywności aplikacji.updateIfNewReleaseAvailable
Ten przykład sprawdza, czy tester włączył alerty i ma dostęp do nowej wersji. Jeśli te warunki są spełnione, gdy wersja jest gotowa do zainstalowania, wyświetla się okno dialogowe:
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;
}
}
});
Konfiguracja zaawansowana
Zaawansowana konfiguracja logowania
Metody signInTester i isTesterSignedIn dają większą elastyczność w dostosowywaniu logowania testera, dzięki czemu może ono lepiej pasować do wyglądu i działania aplikacji.
Ten przykład sprawdza, czy tester zalogował się już na swoje
App Distribution konto testera. Dzięki temu możesz wyświetlać interfejs logowania tylko testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać metodę updateIfNewReleaseAvailable, aby sprawdzić, czy tester ma dostęp do nowej wersji.
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.
});
}
Gdy tester zdecyduje się kontynuować w interfejsie logowania, wywołaj metodę 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.
});
Zaawansowana konfiguracja aktualizacji
Metody checkForNewRelease i updateApp dają większą elastyczność w dostosowywaniu momentu, w którym tester jest proszony o aktualizację. Możesz też dostosować gotowe okno dialogowe aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu i działania aplikacji.
Pamiętaj, że metoda updateApp nie wskazuje postępu pobierania. Oznacza to, że musisz zaimplementować własny wskaźnik postępu za pomocą NotificationManager, jakiegoś wyświetlacza stanu w aplikacji lub innego rozwiązania.
Ten przykład sprawdza, czy dostępna jest nowa wersja, a następnie wyświetla niestandardowy interfejs. Zanim wywołasz metody checkForNewRelease i updateApp, upewnij
się, że tester jest zalogowany za pomocą
zaawansowanej konfiguracji logowania.
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.
});
Gdy tester zdecyduje się kontynuować aktualizację w interfejsie aktualizacji, wywołaj metodę updateApp():
Kotlin
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Krok 4. Skompiluj i przetestuj implementację
Skompiluj aplikację i przetestuj implementację, rozpowszechniając kompilację wśród testerów za pomocą Firebase konsoli.
Więcej informacji o typowych problemach, takich jak:App Distribution
- tester nie otrzymuje alertów w aplikacji,
- tester jest proszony o zalogowanie się w Google więcej niż raz