通知測試人員有關新版本的信息

可選的 Firebase App Distribution iOS 和 Android SDK 可讓您在應用程式的新版本可供安裝時向測試人員顯示應用程式內提醒。本指南介紹如何使用 App Distribution iOS 和 Android SDK 為測試人員建立和自訂新的建置警報。

在你開始之前

如果您尚未將 Firebase 新增至您的 Android 專案中,請將其新增至您的 Android 專案中。

步驟 1 :啟用 App Distribution Tester API

  1. Google Cloud 控制台中選擇您的項目。

  2. 在 Firebase App Testers API 下,按一下啟用

第 2 步:將應用程式分發添加到您的應用程式

App Distribution Android SDK 由兩個函式庫組成:

  • firebase-appdistribution-api - 僅 API 庫,您可以將其包含在所有建置變體中。
  • firebase-appdistribution - 完整的 SDK 實作(可選)。

僅 API 庫允許您的程式碼呼叫 SDK。如果不存在完整的 SDK 實現,則呼叫將無效。

模組(應用程式層級) Gradle 檔案(通常<project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle中聲明App Distribution Android SDK 的依賴項)。為了避免在 Play 建置中包含完整 SDK 實作的自更新功能,請將僅 API 庫相依性新增至所有建置變體。僅將完整的 SDK 實作新增至專門用於預發布測試的變體中。

dependencies {
    // ADD the API-only library to all variants
    implementation("com.google.firebase:firebase-appdistribution-api:16.0.0-beta12")

    // ADD the full SDK implementation to the "beta" variant only (example)
    betaImplementation("com.google.firebase:firebase-appdistribution:16.0.0-beta12")
}

正在尋找 Kotlin 特定的庫模組?2023 年 10 月版本開始,Kotlin 和 Java 開發人員都可以依賴主庫模組(有關詳細信息,請參閱有關此計劃的常見問題解答)。

第 3 步:設定應用程式內警報

App Distribution Android SDK 提供了以下方法來為測試人員設定應用程式內建置警報:

  • 基本警報配置附帶預先建置的應用程式更新和登入對話方塊以顯示給測試人員。
  • 進階警報配置可讓您自訂自己的使用者介面。

如果您是第一次使用 App Distribution Android SDK,我們建議使用基本設定

基本配置

使用updateIfNewReleaseAvailable向尚未啟用警報的測試人員顯示預先建置的啟用警報對話框,然後檢查新版本是否可用。呼叫時,該方法會執行下列序列:

  1. 檢查測試人員是否啟用了警報。如果測試人員尚未啟用警報,該方法會提示測試人員使用其 Google 帳戶登入 App Distribution。

  2. 檢查是否有新的可用版本供測試人員安裝。

  3. 顯示預先建置的警報,提示測試人員進行更新。

  4. 如果新版本是 Android App Bundle (AAB),則將測試人員重新導向至 Google Play 以完成更新流程。

    如果新版本是 Android 應用程式 PackKage (APK),則 SDK 會在背景下載新版本,並在下載完成後提示測試人員進行安裝。 SDK 使用NotificationManager向使用者發送下載進度通知。您也可以透過將onProgressUpdate處理程序附加到updateIfNewReleaseAvailable任務來新增自己的進度指示器。

您可以在應用程式中隨時呼叫updateIfNewReleaseAvailable 。例如,您可以在應用程式主 Activity 的onResume方法期間呼叫updateIfNewReleaseAvailable

以下範例檢查測試人員是否啟用了警報並有權存取新版本。如果符合這些條件,則當建置可供安裝時會顯示對話方塊:

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;
        }
      }
    });

進階配置

進階登入配置

方法signInTesterisTesterSignedIn可讓您更靈活地自訂測試人員的登入體驗,以便測試人員的體驗可以更好地匹配您的應用程式的外觀和感覺。

以下範例檢查測試人員是否已登入其 App Distribution 測試人員帳戶。這可讓您選擇僅向尚未登入的測試人員顯示登入使用者介面 (UI)。測試人員登入後,您可以呼叫updateIfNewReleaseAvailable來檢查測試人員是否有權存取新版本。

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.
    });
}

在您的登入 UI 中,當測試人員選擇繼續時,呼叫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.
});

進階更新配置

當提示測試人員更新時,方法checkForNewReleaseupdateApp為您提供了更大的客製化彈性。您還可以自訂預先建置的更新對話方塊和下載進度指示器,以便它們更好地匹配您的應用程式的外觀和感覺。

請注意, updateApp不提供下載進度指示。這表示您需要使用NotificationManager 、某種應用程式內狀態顯示或其他方法來實現自己的進度指示。

以下範例檢查新版本是否可用,然後顯示自訂 UI。在呼叫checkForNewReleaseupdateApp之前,請確保測試人員已使用高級登入設定登入。

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.
});

當測試人員選擇從更新 UI 繼續更新時,呼叫updateApp()

Kotlin+KTX

firebaseAppDistribution.updateApp()
    .addOnProgressListener { updateState ->
      // Use updateState to show update progress.
    }

Java

firebaseAppDistribution.updateApp()
    .addOnProgressListener(updateState -> {
      // Use updateState to show update progress.
    });

第 4 步:建立並測試您的實施

透過使用 Firebase 控制台將建置分發給測試人員來建立您的應用程式並測試您的實作。

請造訪應用程式分發故障排除指南以取得常見問題的協助,例如:

  • 測試人員未收到應用程式內警報
  • 測試人員曾多次被提示登入 Google