获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

通知测试人员有关新版本的信息

可选的 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 添加到您的应用

App Distribution Android SDK 由两个库组成:

  • firebase-appdistribution-api - 仅限 API 的库,您可以将其包含在所有构建变体中。
  • firebase-appdistribution - 完整的 SDK 实现(可选)。

API-only 库允许您的代码调用 SDK。如果不存在完整的 SDK 实现,调用将无效。

在您的模块(应用级)Gradle 文件(通常是app/build.gradle )中声明 App Distribution Android SDK 的依赖项。为避免在您的 Play 构建中包含完整的 SDK 实现的自我更新功能,请将 API-only 库依赖项添加到所有构建变体。仅将完整的 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 控制台将构建分发给测试人员来构建您的应用并测试您的实施。

请访问App Distribution Troubleshooting 指南以获取有关常见问题的帮助,例如:

  • 测试人员未收到应用内提醒
  • 系统多次提示测试人员登录 Google