Dengan Firebase App Distribution iOS dan Android SDK opsional, Anda dapat menampilkan pemberitahuan dalam aplikasi kepada penguji ketika build baru aplikasi sudah tersedia untuk diinstal. Panduan ini menjelaskan cara menggunakan App Distribution iOS dan Android SDK untuk membuat dan menyesuaikan pemberitahuan build baru untuk penguji Anda.
Sebelum memulai
Tambahkan Firebase ke project Android jika Anda belum melakukannya.
Step 1: Mengaktifkan App Distribution Tester API
Pilih project Anda di konsol Google Cloud.
Di bagian Firebase App Testers API, klik Enable.
Langkah 2: Menambahkan App Distribution ke aplikasi Anda
App Distribution Android SDK terdiri dari dua library:
firebase-appdistribution-api
- Library khusus API, yang dapat Anda sertakan di semua varian build.firebase-appdistribution
- Implementasi SDK lengkap (opsional).
Dengan library khusus API, kode Anda dapat melakukan panggilan ke SDK. Panggilan tidak akan berpengaruh jika implementasi SDK yang lengkap tidak ada.
Deklarasikan dependensi untuk App Distribution Android SDK dalam file Gradle modul (level aplikasi) (biasanya <project>/<app-module>/build.gradle.kts
atau <project>/<app-module>/build.gradle
). Agar tidak menyertakan fungsionalitas update mandiri implementasi SDK lengkap di build Play, tambahkan dependensi library khusus API ke semua varian build. Hanya tambahkan implementasi SDK lengkap ke varian yang ditujukan khusus untuk pengujian pra-rilis:
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")
}
Mencari modul library khusus Kotlin? Mulai rilis Oktober 2023, developer Kotlin dan Java dapat bergantung pada modul library utama (untuk mengetahui detailnya, lihat FAQ tentang inisiatif ini).
Langkah 3: Konfigurasi pemberitahuan dalam aplikasi
App Distribution Android SDK menyediakan cara berikut untuk menyiapkan pemberitahuan build dalam aplikasi bagi penguji:
- Konfigurasi pemberitahuan dasar yang dilengkapi dengan update aplikasi dan dialog login bawaan untuk ditampilkan kepada penguji.
- Konfigurasi pemberitahuan lanjutan yang memungkinkan Anda menyesuaikan antarmuka pengguna Anda sendiri.
Jika Anda menggunakan App Distribution Android SDK untuk pertama kalinya, sebaiknya gunakan Konfigurasi Dasar.
Konfigurasi dasar
Gunakan updateIfNewReleaseAvailable
untuk menampilkan dialog pemberitahuan pengaktifan bawaan kepada penguji yang belum mengaktifkan pemberitahuan, lalu periksa apakah build baru tersedia. Saat dipanggil, metode tersebut akan menerapkan urutan berikut:
Memeriksa apakah penguji telah mengaktifkan pemberitahuan. Jika penguji belum mengaktifkan pemberitahuan, metode ini akan meminta penguji untuk login ke App Distribution dengan Akun Google-nya.
Memeriksa build yang baru tersedia agar dapat diinstal oleh penguji.
Menampilkan pemberitahuan bawaan yang meminta penguji untuk melakukan update.
Jika build barunya merupakan Android App Bundle (AAB), mengalihkan penguji ke Google Play untuk menyelesaikan proses update.
Jika build barunya merupakan Paket Aplikasi Android (APK), SDK akan mendownload build baru di latar belakang dan meminta penguji untuk menginstal saat download selesai. SDK mengirimkan notifikasi progres download kepada pengguna menggunakan
NotificationManager
. Anda juga dapat menambahkan indikator progres sendiri dengan melampirkan pengendalionProgressUpdate
ke TugasupdateIfNewReleaseAvailable
.
Anda dapat memanggil updateIfNewReleaseAvailable
kapan saja di aplikasi. Misalnya, Anda dapat memanggil updateIfNewReleaseAvailable
selama metode onResume
dalam aktivitas utama aplikasi.
Contoh berikut memeriksa apakah penguji mengaktifkan pemberitahuan dan memiliki akses ke build baru. Jika kondisi ini terpenuhi, dialog akan ditampilkan saat build tersedia untuk diinstal:
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;
}
}
});
Konfigurasi lanjutan
Konfigurasi login lanjutan
Metode signInTester
dan isTesterSignedIn
membuat Anda lebih fleksibel dalam menyesuaikan pengalaman login penguji, sehingga pengalaman penguji tersebut lebih cocok dengan tampilan dan nuansa aplikasi Anda.
Contoh berikut memeriksa apakah penguji telah login ke akun penguji App Distribution-nya. Dengan begitu, Anda dapat menampilkan antarmuka pengguna (UI) login hanya kepada penguji yang belum login. Setelah penguji login, Anda dapat memanggil updateIfNewReleaseAvailable
untuk memeriksa apakah penguji memiliki akses ke build baru.
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.
});
}
Dari UI login Anda, saat penguji memilih untuk melanjutkan, panggil 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.
});
Konfigurasi update lanjutan
Metode checkForNewRelease
dan updateApp
membuat Anda lebih fleksibel dalam menentukan kapan penguji akan diminta untuk melakukan update. Anda juga dapat menyesuaikan dialog update bawaan dan indikator progres download, sehingga lebih cocok dengan tampilan dan nuansa aplikasi Anda.
Perhatikan bahwa updateApp
tidak memberikan indikasi progres download. Artinya, Anda harus menerapkan indikasi progres sendiri menggunakan NotificationManager
, jenis tampilan status dalam aplikasi tertentu, atau pendekatan lainnya.
Contoh berikut memeriksa apakah rilis baru sudah tersedia, lalu menampilkan UI kustom. Sebelum memanggil checkForNewRelease
dan updateApp
, pastikan penguji login dengan menggunakan konfigurasi login lanjutan.
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.
});
Saat penguji memilih untuk melanjutkan update dari UI update Anda, panggil
updateApp()
:
Kotlin+KTX
firebaseAppDistribution.updateApp()
.addOnProgressListener { updateState ->
// Use updateState to show update progress.
}
Java
firebaseAppDistribution.updateApp()
.addOnProgressListener(updateState -> {
// Use updateState to show update progress.
});
Langkah 4: Build dan uji implementasi Anda
Build aplikasi dan uji implementasi Anda dengan mendistribusikan build kepada penguji menggunakan Firebase console.
Buka panduan Pemecahan masalah App Distribution untuk mendapatkan bantuan terkait masalah umum, seperti:
- Penguji yang tidak menerima pemberitahuan dalam aplikasi
- Penguji yang diminta untuk login ke Google lebih dari sekali