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


利用可选的 Firebase App Distribution iOS 和 Android SDK,您可以在有新的应用 build 可供安装时向测试人员显示应用内提醒。本指南介绍了如何使用 App Distribution iOS 和 Android SDK 为您的测试人员创建和自定义新的 build 提醒。

准备工作

将 Firebase 添加到您的 iOS 项目(如果尚未添加)。

第 1 步:启用 App Distribution Tester API

  1. Google Cloud 控制台中选择您的项目。

  2. Firebase App Testers API 下,点击启用

第 2 步:将 App Distribution 添加到您的应用

  1. 打开为项目创建的 Podfile(或运行 pod init 创建一个 Podfile),然后在目标部分中添加下面一行代码:

    pod 'FirebaseAppDistribution'
  2. 在您的 podfile 目录中,运行 pod install,然后打开创建的 .xcworkspace 文件。

  3. App 结构体或 UIApplicationDelegate 中导入 Firebase 模块:

    Swift

    import FirebaseCore import FirebaseAppDistribution 

    Objective-C

    @import FirebaseCore; @import FirebaseAppDistribution; 
  4. 配置一个 FirebaseApp 共享实例(在应用的 application(_:didFinishLaunchingWithOptions:) 方法中配置):

    Swift

    // Use Firebase library to configure APIs FirebaseApp.configure() 

    Objective-C

    // Use Firebase library to configure APIs [FIRApp configure]; 
  5. 如果已停用 swizzling,请在 application(_:open:options:) 的实现中将所有已打开的网址传递给 App Distribution SDK:

    Swift

    func application(_ app: UIApplication,   open url: URL,  options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {  if AppDistribution.appDistribution().application(application, open: url, options: options) {  return true  }  // Handle other non-Firebase URLs here.  return false } 

    Objective-C

    - (BOOL)application:(UIApplication *)app   openURL:(NSURL *)url   options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {  if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) {  return YES;  }  // Handle other non-Firebase URLs here.  return NO; } 
  6. 最后,重新编译您的应用。

第 3 步:配置应用内提醒

App Distribution SDK 提供了两种针对测试人员设置应用内 build 提醒的方法:基本提醒配置(提供要向测试人员显示的预构建应用更新和登录对话框)和高级提醒配置(可让您自定义专属界面)。如果您是 App Distribution SDK 新手,我们建议您先使用基本提醒配置。

基本配置

使用 checkForUpdate 向尚未启用提醒的测试人员显示预建的“启用提醒”对话框,然后检查是否有新的构建版本。调用时,该方法将遵循以下顺序:

  1. 通过提示测试人员使用 Google 账号登录 App Distribution,确认测试人员是否已启用提醒。

  2. 如果测试人员尚未启用提醒,则显示预建的对话框。

    只需在测试设备上启用提醒一次。应用更新后,提醒的启用状态不会发生变化。提醒会在测试设备上保持启用状态,直到应用被卸载或 signOutTester 方法被调用为止。 如需了解详情,请参阅该方法的参考文档(SwiftObjective-C)。

  3. 检查是否有新推出的 build 可供测试人员安装。

您可以在应用中的任何时间点调用 checkForUpdate()。例如,您可以通过在应用的根视图的 onAppear(perform:) 中添加 checkForUpdate(),在启动时提示测试人员安装新推出的 build。

以下示例会检查测试人员是否已启用提醒以及是否可以访问新的 build;如果是,则会在可以安装 build 时显示一个对话框:

Swift

注意:此产品不适用于 macOS、Mac Catalyst、tvOS 或 watchOS 目标。
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in  if error != nil {  // Handle error  return  }  guard let release = release else {  return  }  // Customize your alerts here.  let title = "New Version Available"  let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."  let uialert = UIAlertController(title: title,message: message, preferredStyle: .alert)  uialert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {  _ in  UIApplication.shared.open(release.downloadURL)  })  uialert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {  _ in  })  // self should be a UIViewController.  self.present(uialert, animated: true, completion: nil) }) 

Objective-C

注意:此产品不适用于 macOS、Mac Catalyst、tvOS 或 watchOS 目标。
[[FIRAppDistribution appDistribution]  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,  NSError *_Nullable error) {  if (error) {  // Handle error  return;  }  if (release) {  UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available" message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion, release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];  UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {  [[UIApplication sharedApplication] openURL:release.downloadURL options:@{} completionHandler:nil];  }];  UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];  [alert addAction:updateAction];  [alert addAction:cancelAction];  [self presentViewController:alert animated:YES completion:nil];  } }]; 

高级配置

方法 signInTester()isTesterSignedIn 可让您更灵活地自定义测试人员的登录体验,因此可以与应用的外观更相符。

以下示例会检查测试人员是否已登录其 Firebase App Distribution 测试人员账号,因此您可以选择仅为尚未登录的测试人员显示登录界面。测试人员登录后,您便可以调用 checkForUpdate() 以检查测试人员是否可以访问新的 build。

Swift

注意:此产品不适用于 macOS、Mac Catalyst、tvOS 或 watchOS 目标。
// Sign in a tester without automatically checking for update if (!AppDistribution.appDistribution().isTesterSignedIn) {  AppDistribution.appDistribution().signInTester (completion: { error in  // completion block for signInTester  if (error != nil) {  // handle failed sign in  return  }  // handle successful sign in  }) } // Only check for update if tester is already signed in - do not prompt if (AppDistribution.appDistribution().isTesterSignedIn) {  AppDistribution.appDistribution().checkForUpdate(completion: { release, error in  // completion block for check for update  }) } 

Objective-C

注意:此产品不适用于 macOS、Mac Catalyst、tvOS 或 watchOS 目标。
// Sign in a tester without automatically checking for update if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {  [[FIRAppDistribution appDistribution]  signInTesterWithCompletion:^(NSError *_Nullable error) {  // completion block for signInTester  if (error) {  // handle failed sign in  return;  }  // handle successful sign in  }]; } // only check for update if tester is already signed in - do not prompt if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {  [[FIRAppDistribution appDistribution]  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,  NSError *_Nullable error) {  // completion block for check for update  }]; } 

如需了解其他方法(包括 signOutTester()),请参阅适用于 SwiftObjective-CApp Distribution 参考文档。

第 4 步:构建并测试您的实现

最后,使用 Firebase 控制台分发 build 给测试人员,以构建应用并测试实现。

如需有关类似于以下常见问题的帮助,请访问 App Distribution 问题排查指南

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