Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

使用 App Distribution SDK 设置应用内新构建警报

可选的 Firebase 应用分发 SDK 可让您在新版本的应用可供安装时向测试人员显示应用内提醒。本指南介绍了如何使用 App Distribution SDK 为您的测试人员创建和自定义新的构建警报。

在你开始之前

如果你还没有,添加火力地堡到iOS项目

第1步:启用应用程序分布测试仪API

  1. 选择在你的项目中谷歌云端控制台

  2. 火力地堡测试这些应用API,点击启用

第2步:应用分发添加到您的应用程序

  1. 打开你的项目创建的podfile(或运行pod init创建一个),然后添加目标区间内以下行:

    pod 'Firebase/AppDistribution'
  2. 在你podfile的目录,运行pod install ,然后打开创建.xcworkspace文件。

  3. 编码您的谷歌应用程序ID(仅适用于iOS版本9和10必填项):

    对您的 Google 应用 ID 进行编码

    添加appdistribution-<encoded-google-app-id>通过在你的代码片段URL方案Info.plist file (请参阅苹果的文档,了解如何添加在Xcode的URL方案的说明):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    然后,通过用破折号 (-) 替换冒号 (:) 来对您的 Google 应用 ID 进行编码。请注意,您的谷歌应用程序ID位于您GoogleService-Info.plist文件。例如,如果您的 Google 应用 ID 是:

    7:77777777777:ios:123456789

    您编码的 Google 应用 ID 是:

    7-77777777777-ios-123456789
  4. 导入火力地堡模块在UIApplicationDelegate

    迅速

    import Firebase
    

    目标-C

    @import Firebase;
    
  5. 配置一个FirebaseApp共享实例,通常在你的应用程序的application:didFinishLaunchingWithOptions:方法:

    迅速

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

    目标-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. 最后,重新编译您的应用程序。

步骤3:配置应用程序内的警报

应用分发 SDK 提供了两种为测试人员设置应用内构建警报的方法:基本警报配置,它带有一个预构建的登录对话框以显示给测试人员,以及高级警报配置,它允许您自定义您自己的用户界面 (UI)。如果您不熟悉 App Distribution SDK,我们建议您首先使用基本警报配置。

基本配置

使用checkForUpdate显示预建的启用对谁尚未启用警报测试警报对话,然后检查是否有新版本可用。调用时,该方法执行以下序列:

  1. 通过提示测试人员使用其 Google 帐户登录 App Distribution 来检查测试人员是否已启用警报。

  2. 如果测试人员尚未启用警报,则显示一个预先构建的对话框。

    启用警报是测试设备上的一次性过程,并在应用程序更新后持续存在。直到该应用被卸载警报保持在测试设备上启用,或直到signOutTester方法被调用。看到该方法的参考文献(夫特Objective-C的获得更多信息)。

  3. 检查新的可用版本以供测试人员安装。

您可以包括checkForUpdate在您的应用程序的任何一点。例如,您可以提示您的测试安装由包括新的可用版本在启动时checkForUpdateviewDidAppear中的UIViewController

以下示例检查测试人员是否已启用警报并有权访问新构建,如果是,则在构建可供安装时显示对话框:

迅速

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  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)
})

目标-C

[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];

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

高级配置

该方法signInTesterisTesterSignedIn给你更多的灵活性,自定义测试仪的登录体验,因此它可以更好地满足您的应用程序的外观和感觉。

以下示例检查测试人员是否已登录其 Firebase App Distribution 测试人员帐户,因此您可以选择仅向尚未登录的测试人员显示您的登录界面。测试人员登录后,您可以打电话checkForUpdate检查测试仪是否可以访问到新版本。

迅速

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

目标-C

// 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 ,请参阅应用分发参考文档夫特目标C

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

最后,建立自己的应用程序,并通过测试的实施分发构建使用火力地堡控制台测试。

访问应用程序分发故障排除指南与常见问题,帮助,例如:

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