Opcjonalne pakiety SDK Firebase App Distribution na iOS i Androida pozwalają wyświetlać testerom alerty o nowych kompilacjach aplikacji do zainstalowania. Z tego przewodnika dowiesz się, jak używać pakietów SDK App Distribution na iOS i Androida do tworzenia i dostosowywania nowych alertów kompilacji dla testerów.
Zanim zaczniesz
Dodaj Firebase do swojego projektu Android, chyba że masz to już za sobą.
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 Rozpowszechnianie aplikacji do swojej aplikacji
Pakiet App Distribution na Androida SDK składa się z 2 bibliotek:
firebase-appdistribution-api
– biblioteka służąca tylko do interfejsu API, którą możesz uwzględnić we wszystkich wariantach kompilacji.firebase-appdistribution
– pełna implementacja pakietu SDK (opcjonalnie).
Biblioteka wyłącznie z interfejsem API umożliwia kodowi wywoływanie pakietu SDK. Bez pełnej implementacji pakietu SDK wywołania nie będą działać.
Zadeklaruj zależność z pakietem 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ąć dodawania pełnej implementacji pakietu SDK do kompilacji Play, dodaj do wszystkich wariantów kompilacji zależność biblioteki Tylko API.
Dodaj pełną implementację pakietu SDK 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-beta13")
// ADD the full SDK implementation to the "beta" variant only (example)
betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta13")
}
Szukasz modułu biblioteki korzystającego z usługi Kotlin? Od wersji z października 2023 r. zarówno deweloperzy aplikacji Kotlin, jak i języki Java mogą korzystać z modułu głównej biblioteki (szczegółowe informacje znajdziesz w odpowiedziach na najczęstsze pytania na temat tej inicjatywy).
Krok 3. Skonfiguruj alerty w aplikacji
Pakiet Android SDK App Distribution pozwala skonfigurować dla testerów alerty dotyczące kompilacji w aplikacji na te sposoby:
- Podstawowa konfiguracja alertów z gotowymi oknami logowania i aktualizacjami aplikacji, które wyświetlają się testerom.
- Zaawansowana konfiguracja alertów, która umożliwia dostosowanie własnego interfejsu użytkownika.
Jeśli używasz pakietu SDK App Distribution na Androida po raz pierwszy, zalecamy użycie konfiguracji podstawowej.
Podstawowa konfiguracja
Użyj updateIfNewReleaseAvailable
, aby wyświetlić gotowe okno włączania alertów dla testerów, którzy nie włączyli jeszcze alertów. Gdy to zrobisz, sprawdź, czy jest dostępna nowa kompilacja. Po wywołaniu metoda wywołuje tę sekwencję:
Sprawdza, czy tester włączył alerty. Jeśli tester nie włączył jeszcze alertów, metoda poprosi go o zalogowanie się w usłudze Rozpowszechnianie aplikacji przy użyciu konta Google.
Sprawdza, czy są dostępne nowe kompilacje, które może zainstalować tester.
Wyświetla gotowy alert z prośbą o aktualizację.
Jeśli nowa kompilacja to pakiet Android App Bundle, przekierowuje testera do Google Play, aby dokończyć proces aktualizacji.
Jeśli nową kompilacją jest pakiet APK aplikacji na Androida, pakiet SDK pobierze ją w tle i poprosi testera o jej zainstalowanie po zakończeniu pobierania. Pakiet SDK wysyła do użytkownika powiadomienia o postępach pobierania za pomocą interfejsu
NotificationManager
. Możesz też dodać własny wskaźnik postępu, dołączając moduł obsługionProgressUpdate
do zadaniaupdateIfNewReleaseAvailable
.
Możesz wywołać funkcję updateIfNewReleaseAvailable
w dowolnym momencie w aplikacji. Możesz na przykład wywołać funkcję updateIfNewReleaseAvailable
podczas głównej aktywności aplikacji onResume
.
Poniższy przykład pokazuje, czy tester włączył alerty i ma dostęp do nowej kompilacji. Jeśli te warunki zostaną spełnione, pojawi się okno, gdy kompilacja będzie dostępna do zainstalowania:
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
dają Ci większą elastyczność w zakresie dostosowywania sposobu logowania się testera, tak by można było lepiej dopasować go do wyglądu i stylu Twojej aplikacji.
Poniższy przykład pokazuje, czy tester zalogował się już na konto testera usługi Rozpowszechniania aplikacji. Dzięki temu możesz wyświetlać interfejs logowania tylko tym testerom, którzy jeszcze się nie zalogowali. Gdy tester się zaloguje, możesz wywołać updateIfNewReleaseAvailable
, aby sprawdzić, czy ma on dostęp do nowej kompilacji.
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ć, zadzwoń pod numer signInTester()
w interfejsie logowania:
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
dają więcej możliwości dostosowywania, kiedy tester jest proszony o aktualizację. Możesz też dostosować gotowe okno aktualizacji i wskaźnik postępu pobierania, aby lepiej pasowały do wyglądu i stylu aplikacji.
Pamiętaj, że updateApp
nie podaje postępu pobierania. Oznacza to, że musisz wdrożyć własne wskaźniki postępu za pomocą NotificationManager
, jakiegoś sposobu wyświetlania stanu w aplikacji lub innej metody.
Poniższy przykład pokazuje, czy jest dostępna nowa wersja, a następnie wyświetla niestandardowy interfejs. Przed wywołaniem funkcji checkForNewRelease
i updateApp
sprawdź, czy tester jest zalogowany, korzystając z konfiguracji logowania zaawansowanego.
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ę kontynuować aktualizację z poziomu interfejsu aktualizacji, 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ę, przekazując kompilację testerom za pomocą konsoli Firebase.
Zapoznaj się z przewodnikiem po rozwiązywaniu problemów z rozpowszechnianiem aplikacji, aby uzyskać pomoc dotyczącą typowych problemów, takich jak:
- Tester nie otrzymuje alertów w aplikacji
- Tester jest pytany o zalogowanie się w Google więcej niż raz