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. Jeśli pełna implementacja pakietu SDK nie jest obecna, wywołania nie przyniosą żadnego efektu.
Zadeklaruj zależność z pakietem Android SDK 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ść 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-beta18")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta18")
}
Szukasz modułu biblioteki przeznaczonego specjalnie dla języka Kotlin? Od wersji z października 2023 r., deweloperzy korzystający z języków Kotlin i Java mogą korzystać z głównego modułu biblioteki (szczegóły 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 kompilacjach 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 Android SDK App Distribution po raz pierwszy, zalecamy użycie podstawowej konfiguracji.
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 zainstalowanie 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
Poniższy 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.
Poniższy 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 wybierze opcję kontynuowania 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.
Poniższy 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 wybierze opcję kontynuowania aktualizacji 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,