Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

可選的 Firebase App Distribution iOS 和 Android SDK 可讓您在可以安裝應用的新版本時向測試人員顯示應用內警報。本指南介紹瞭如何使用 App Distribution iOS 和 Android SDK 為您的測試人員創建和自定義新的構建警報。

在你開始之前

如果您還沒有,請將 Firebase 添加到您的 Android 項目中。

第 1 步:啟用 App Distribution Tester API

  1. Google Cloud Console中選擇您的項目。

  2. 在 Firebase App Testers API 下,點擊Enable

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

App Distribution Android SDK 包含兩個庫:

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

僅 API 庫允許您的代碼調用 SDK。如果不存在完整的 SDK 實現,則調用將無效。

在您的模塊(應用級)Gradle 文件(通常是app/build.gradle )中聲明 App Distribution Android SDK 的依賴項。為避免在您的 Play 構建中包含完整的 SDK 實現的自我更新功能,請將僅 API 庫依賴項添加到所有構建變體。僅將完整的 SDK 實現添加到專門用於預發布測試的變體:

Java

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api:16.0.0-beta05'

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

Kotlin+KTX

dependencies {
    // ADD the API-only library to all variants
    implementation 'com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta05'

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

第 3 步:配置應用內警報

App Distribution Android SDK 提供以下方法來為您的測試人員設置應用內構建警報:

  • 一個基本的警報配置,帶有預構建的應用程序更新和登錄對話框以顯示給測試人員。
  • 一種高級警報配置,可讓您自定義自己的用戶界面。

如果您是第一次使用 App Distribution Android SDK,我們建議您使用Basic Configuration

基本配置

使用updateIfNewReleaseAvailable向尚未啟用警報的測試人員顯示預構建的啟用警報對話框,然後檢查是否有新的構建可用。調用時,該方法執行以下序列:

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

  2. 檢查新可用的構建以供測試人員安裝。

  3. 顯示提示測試人員更新的預構建警報。

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

    如果新版本是 Android 應用程序包 (APK),SDK 會在後台下載新版本,並在下載完成時提示測試人員安裝。 SDK 使用NotificationManager向用戶發送下載進度通知。您還可以通過將onProgressUpdate處理程序附加到updateIfNewReleaseAvailable任務來添加自己的進度指示器。

您可以在應用程序中的任何位置調用updateIfNewReleaseAvailable 。例如,您可以在應用程序主活動的onResume方法期間調用updateIfNewReleaseAvailable

以下示例檢查測試人員是否啟用了警報並有權訪問新版本。如果滿足這些條件,則會在構建可安裝時顯示一個對話框:

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

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

高級配置

高級登錄配置

方法signInTesterisTesterSignedIn使您可以更靈活地自定義測試人員的登錄體驗,從而使測試人員的體驗更好地匹配您的應用程序的外觀和感覺。

以下示例檢查測試人員是否已經登錄到他們的 App Distribution 測試人員帳戶。這使您可以選擇僅向尚未登錄的測試人員顯示您的登錄用戶界面 (UI)。測試人員登錄後,您可以調用updateIfNewReleaseAvailable來檢查測試人員是否有權訪問新版本。

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

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

在您的登錄 UI 中,當測試人員選擇繼續時,調用signInTester()

Java

firebaseAppDistribution.signInTester().addOnSuccessListener( unused -> {
  // Handle successful sign-in.
}).addOnFailureListener(e -> {
  // Handle failed sign-in.
});

Kotlin+KTX

firebaseAppDistribution.signInTester().addOnSuccessListener {
  // Handle successful sign-in.
}.addOnFailureListener {
  // Handle failed sign-in.
});

高級更新配置

方法checkForNewReleaseupdateApp使您可以更靈活地自定義何時提示您的測試人員進行更新。您還可以自定義預構建的更新對話框和下載進度指示器,以便它們更好地匹配您的應用程序的外觀和感覺。

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

以下示例檢查是否有新版本可用,然後顯示自定義 UI。在調用checkForNewReleaseupdateApp之前,請確保測試人員已使用高級登錄配置登錄

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

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

當測試人員選擇從您的更新 UI 繼續更新時,調用updateApp()

Java

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

Kotlin+KTX

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

第 4 步:構建和測試您的實現

通過使用 Firebase 控制台將構建分發給測試人員來構建您的應用並測試您的實施。

訪問應用程序分發故障排除指南以獲取有關常見問題的幫助,例如:

  • 測試人員未收到應用內警報
  • 多次提示測試人員登錄 Google