通知測試人員新版本


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

事前準備

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

步驟 1:啟用 App Distribution Tester 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 實作,則不會產生任何影響。

模組中宣告 App Distribution Android SDK 的依附元件 (應用程式層級) Gradle 檔案 (通常為 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle)。為了避免包含完整 SDK Play 建構作業中的自我更新功能。 將僅限 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:設定應用程式內快訊

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

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

如果您是首次使用 App Distribution Android SDK,建議您 使用「Basic Configuration」(基本設定)

基本設定

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

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

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

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

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

    如果新版本是 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 方法讓你更靈活地 自訂測試人員的登入體驗,讓測試人員體驗 更能融入應用程式的外觀和風格。

下列範例會檢查測試人員是否已登入 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.
});

當測試人員選擇透過更新使用者介面繼續進行更新時,請呼叫 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 中 提供給測試人員,請使用 Firebase 控制台。

請造訪 App Distribution 疑難排解指南 以取得常見問題的說明,例如:

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