Opcjonalne pakiety SDK dla iOS i Androida (Firebase App Distribution) umożliwiają wyświetlanie testerom alertów w aplikacji, gdy nowe wersje aplikacji staną się dostępne do zainstalowania. Z tego przewodnika dowiesz się, jak korzystać z pakietów SDK App Distribution na iOS i Androida, aby tworzyć i dostosowywać alerty o nowych wersjach dla testerów.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Krok 1. Włącz interfejs App Distribution Tester API
Wybierz swój projekt w konsoli Google Cloud.
W sekcji Firebase App Testers API kliknij Włącz.
Krok 2. Dodaj do aplikacji App Distribution
Pakiet Android SDK App Distribution składa się z 2 bibliotek:
firebase-appdistribution-api
– biblioteka tylko dla interfejsu API, którą możesz uwzględnić we wszystkich wariantach kompilacji.firebase-appdistribution
– pełna implementacja pakietu SDK (opcjonalnie).
Biblioteka tylko do interfejsu API umożliwia wywoływanie pakietu SDK przez kod. Jeśli nie jest dostępna pełna implementacja pakietu SDK, wywołania nie będą miały żadnego wpływu.
Zadeklaruj zależność od pakietu SDK App Distribution na Androida w pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts
lub <project>/<app-module>/build.gradle
). Aby uniknąć dołączania do kompilacji Play pełnej implementacji pakietu SDK, która zawiera funkcję automatycznej aktualizacji, dodaj do wszystkich wariantów kompilacji zależność od biblioteki zawierającej tylko interfejs API.
Pełną implementację pakietu SDK dodaj tylko do wariantów przeznaczonych wyłącznie do testowania przedpremierowego.
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")
}
Szukasz modułu biblioteki dla Kotlina? Od wersji z października 2023 roku zarówno deweloperzy Kotlina, jak i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w często zadawanych pytaniach dotyczących tej inicjatywy).
Krok 3. Skonfiguruj alerty w aplikacji
Pakiet Android SDK App Distribution udostępnia te sposoby konfigurowania alertów o kompilacji aplikacji dla testerów:
- podstawowa konfiguracja alertów, która zawiera gotowe dialogi dotyczące aktualizacji aplikacji i logowania, wyświetlane testerom;
- Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.
Jeśli po raz pierwszy używasz pakietu SDK Androida App Distribution, zalecamy skorzystanie z konfiguracji podstawowej.
Podstawowa konfiguracja
Użyj opcji updateIfNewReleaseAvailable
, aby wyświetlić gotowy dialog włączania alertów testerom, którzy nie włączyli jeszcze alertów, a potem sprawdzić, czy jest dostępna nowa wersja. Po wywołaniu metoda wykonuje tę sekwencję:
Sprawdzanie, czy tester ma włączone alerty. Jeśli tester nie ma jeszcze włączonych alertów, metoda poprosi go o zalogowanie się na konto Google w usłudze App Distribution.
Sprawdzanie, czy dostępne są nowe wersje, które tester może zainstalować.
Wyświetla gotowy alert, który prosi testera o zaktualizowanie.
Jeśli nowa kompilacja to pakiet aplikacji na Androida (AAB), przekierowuje testera do strony Google Play, aby dokończyć proces aktualizacji.
Jeśli nowa wersja jest pakietem aplikacji na Androida (APK), pakiet SDK pobiera nową wersję w tle i po zakończeniu pobierania prosi testera o jej zainstalowanie. 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 do zadaniaonProgressUpdate
element obsługiupdateIfNewReleaseAvailable
.
Funkcję updateIfNewReleaseAvailable
możesz wywołać w dowolnym momencie w aplikacji. Możesz to zrobić na przykład w metodie onResume
głównej aktywności aplikacji.updateIfNewReleaseAvailable
Ten przykład sprawdza, czy tester włączył alerty i czy ma dostęp do nowej kompilacji. Jeśli są spełnione te warunki, gdy wersja jest dostępna do zainstalowania, wyświetla się okno:
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;
}
}
});
Konfiguracja zaawansowana
Zaawansowana konfiguracja logowania
Metody signInTester
i isTesterSignedIn
zapewniają większą elastyczność w dostosowywaniu logowania testera, dzięki czemu może ono lepiej pasować do wyglądu i stylu aplikacji.
Ten przykład sprawdza, czy tester jest już zalogowany na swoje konto.App Distribution Dzięki temu możesz wyświetlać interfejs logowania tylko testerom, którzy nie zalogowali się jeszcze w aplikacji. Gdy tester się zaloguje, możesz wywołać funkcję updateIfNewReleaseAvailable
, aby sprawdzić, czy ma on dostęp do nowej wersji.
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.
});
}
Gdy tester zdecyduje się kontynuować, w interfejsie logowania wywołaj funkcję 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.
});
Zaawansowana konfiguracja aktualizacji
Metody checkForNewRelease
i updateApp
zapewniają większą elastyczność w dostosowywaniu momentu wyświetlenia prośby o aktualizację testerowi. Możesz też dostosować gotowe okno aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu i działania aplikacji.
Pamiętaj, że updateApp
nie wyświetla informacji o postępie pobierania. Oznacza to, że musisz zaimplementować własny wskaźnik postępu za pomocą elementu NotificationManager
, wyświetlania stanu w aplikacji lub innego podejścia.
W tym przykładzie sprawdzamy, czy jest dostępna nowa wersja, a potem wyświetlamy niestandardowy interfejs. Zanim wywołasz metody checkForNewRelease
i updateApp
, sprawdź, czy tester jest zalogowany, korzystając z zaawansowanej konfiguracji logowania.
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.
});
Gdy tester zdecyduje się na przeprowadzenie aktualizacji w interfejsie użytkownika, wywołaj:
updateApp()
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Krok 4. Utwórz i przetestuj implementację
Utwórz aplikację i przetestuj jej implementację, rozpowszechniając kompilację wśród testerów za pomocą konsoli Firebase.
Aby uzyskać pomoc w rozwiązywaniu typowych problemów, takich jak:App Distribution
- Tester nie otrzymuje alertów w aplikacji
- Testerowi wyświetla się prośba o zalogowanie się w Google więcej niż raz