获取我们在 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 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