Google 致力于为黑人社区推动种族平等。查看具体举措

使用 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
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

目标-C

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

显示对话安装新的版本

迅速

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