通知測試人員新版本


您可以選擇使用 iOS 和 Android SDK,在有新版應用程式可供安裝時,向測試人員顯示應用程式內快訊。Firebase App Distribution本指南說明如何使用 App Distribution iOS 和 Android SDK,為測試人員建立及自訂新版建構作業的快訊。

事前準備

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

步驟 1:啟用 App Distribution 測試人員 API

  1. Google Cloud 控制台中選取專案。

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

步驟 2:在應用程式中新增 App Distribution

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-beta16")

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

想尋找 Kotlin 專屬的程式庫模組嗎?2023 年 10 月發布版本起,Kotlin 和 Java 開發人員都可以依附主要程式庫模組 (詳情請參閱這項計畫的常見問題)。

步驟 3:設定應用程式內快訊

App Distribution Android SDK 提供下列方式,為測試人員設定應用程式內建構版本快訊:

  • 基本快訊設定,內建應用程式更新和登入對話方塊,可向測試人員顯示。
  • 進階快訊設定,可自訂使用者介面。

如果您是首次使用 App Distribution Android SDK,建議使用基本設定

基本設定

使用 updateIfNewReleaseAvailable 向尚未啟用快訊的測試人員顯示預先建構的啟用快訊對話方塊,然後檢查是否有新版本。呼叫時,這個方法會執行下列序列:

  1. 檢查測試人員是否已啟用快訊。如果測試人員尚未啟用快訊,這個方法會提示測試人員登入 App Distribution Google 帳戶。

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

  3. 顯示預先建構的快訊,提示測試人員更新。

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

    如果新版本是 Android 應用程式套件 (APK),SDK 會在背景下載新版本,並在下載完成時提示測試人員安裝。SDK 會使用 NotificationManager 將下載進度通知傳送給使用者。您也可以將 onProgressUpdate 處理常式附加至 updateIfNewReleaseAvailable 工作,藉此新增自己的進度指標。

您可以在應用程式中的任何時間點呼叫 updateIfNewReleaseAvailable。舉例來說,您可以在應用程式主要活動的 onResume 方法中呼叫 updateIfNewReleaseAvailable

以下範例會檢查測試人員是否已啟用快訊,以及是否能存取新版本。如果符合這些條件,當可安裝的建構版本推出時,系統就會顯示對話方塊:

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

進階設定

進階登入設定

signInTesterisTesterSignedIn 方法可讓您更靈活地自訂測試人員的登入體驗,使測試人員體驗更符合應用程式的外觀和風格。

以下範例會檢查測試人員是否已登入測試人員帳戶。App Distribution您可以選擇只向尚未登入的測試人員顯示登入使用者介面 (UI)。測試人員登入後,您就可以呼叫 updateIfNewReleaseAvailable,確認測試人員是否能存取新版本。

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

在登入使用者介面中,當測試人員選擇繼續時,請呼叫 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.
});

進階更新設定

checkForNewReleaseupdateApp 方法可讓您更靈活地自訂系統提示測試人員更新的時間。您也可以自訂預先建構的更新對話方塊和下載進度指標,讓這些元素更符合應用程式的外觀和風格。

請注意,updateApp 不會顯示下載進度。也就是說,您需要使用 NotificationManager、某種應用程式內狀態顯示或其他方法,自行實作進度指標。

以下範例會檢查是否有新版本,然後顯示自訂 UI。呼叫 checkForNewReleaseupdateApp 之前,請務必使用進階登入設定,確保測試人員已登入。

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

如果測試人員選擇從更新 UI 繼續更新,請呼叫 updateApp()

Kotlin

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

Java

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

步驟 4:建構及測試實作項目

建構應用程式,然後使用 Firebase 控制台將建構版本發布給測試人員,測試導入情況。

如需解決常見問題的說明,請參閱App Distribution疑難排解指南,例如:

  • 測試人員未收到應用程式內警示
  • 系統多次提示測試人員登入 Google 帳戶