通知測試人員新版本

選用 Firebase 應用程式發布的 iOS 和 Android SDK 在您的應用程式有新版本可供下載時,向測試人員傳送應用程式內快訊 安裝。本指南說明如何使用 iOS 和 Android SDK 建立及自訂新的版本快訊給測試人員。

事前準備

如果您尚未將 Firebase 新增至 Android 專案,請先完成這項操作。

步驟 1:啟用 App Distribution Tester API

  1. 請在 Google Cloud 控制台

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

步驟 2:在應用程式中新增應用程式發布內容

應用程式發布 Android SDK 包含兩個程式庫:

  • firebase-appdistribution-api - 僅限 API 的程式庫,可加入 在所有建構變數中定義。
  • firebase-appdistribution - 完整的 SDK 實作 (選用)。

僅限 API 的程式庫可讓程式碼呼叫 SDK。通話將 如果沒有完整的 SDK 實作,則不會產生任何影響。

模組中宣告應用程式發布 Android SDK 的依附元件 (應用程式層級) Gradle 檔案 (通常為 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle).為了避免包含完整 SDK 導入自行更新功能 將僅限 API 的程式庫依附元件加入 建構變數。 只將完整的 SDK 導入項目新增至專屬於使用的變化版本 進行發布前測試

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

在尋找 Kotlin 專用的程式庫模組嗎?我們先用 2023 年 10 月版本, Kotlin 和 Java 開發人員都能依賴主要的程式庫模組 (詳情請參閱 這項計畫的常見問題)。

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

應用程式發布 Android SDK 提供下列設定方式 給測試人員的應用程式內版本快訊:

  • 隨附應用程式更新的基本快訊設定 系統會向測試人員顯示登入對話方塊
  • 進階快訊設定,可讓您自訂自己的使用者 存取 API

如果您是首次使用應用程式發布 Android SDK,建議您 使用「基本設定」

基本設定

使用 updateIfNewReleaseAvailable 顯示預建的啟用快訊 向尚未啟用快訊的測試人員顯示對話方塊, 有可用的建構呼叫此方法時,會執行以下序列:

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

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

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

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

    如果新版本是 Android 應用程式 PacKage (APK),SDK 就會提供 SDK 在背景下載新版本,並提示測試人員安裝 下載完成時。SDK 會傳送下載進度通知 授予使用者。NotificationManager你也可以自行新增進度 將 onProgressUpdate 處理常式附加至 updateIfNewReleaseAvailable 工作。

您隨時可以在應用程式中呼叫 updateIfNewReleaseAvailable。適用對象 舉例來說,您可以在 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 方法讓你更靈活地 自訂測試人員的登入體驗,讓測試人員體驗 更能融入應用程式的外觀和風格。

下列範例會檢查測試人員是否已登入 應用程式發布測試人員帳戶。如此一來,您可以選擇 只有尚未登入的測試人員可以登入使用者介面 (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.
});

當測試人員選擇透過更新使用者介面繼續進行更新時,請呼叫 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:建構並測試實作成果

建構應用程式並測試實作, 在 Android Vitals 中 提供給測試人員

請造訪 應用程式發布疑難排解指南 以取得常見問題的說明,例如:

  • 測試人員沒有收到應用程式內快訊
  • 系統多次提示測試人員登入 Google