Memberi tahu penguji tentang build baru


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

  1. Pilih project Anda di konsol Google Cloud.

  2. 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:

  1. 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.

  2. Memeriksa build yang baru tersedia agar dapat diinstal oleh penguji.

  3. Menampilkan pemberitahuan bawaan yang meminta penguji untuk melakukan update.

  4. 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 pengendali onProgressUpdate ke Tugas updateIfNewReleaseAvailable.

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

// 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

// 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

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

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

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