Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

使用 App Distribution SDK 設置應用內新構建警報

可選的 Firebase 應用分發 SDK 可讓您在新版本的應用可供安裝時向測試人員顯示應用內提醒。本指南介紹瞭如何使用 App Distribution SDK 為您的測試人員創建和自定義新的構建警報。

在你開始之前

如果您還沒有,請將 Firebase 添加到您的 iOS 項目

第 1 步:啟用 App Distribution Tester API

  1. Google Cloud Console 中選擇您的項目。

  2. Firebase App Testers API 下,點擊Enable

第 2 步:將應用分發添加到您的應用

我們建議使用CocoaPods來安裝 Firebase 庫。您也可以選擇直接集成 SDK 框架

  1. 打開您為項目創建的 podfile(或運行pod init創建一個),然後在目標部分中添加以下行:

    pod 'Firebase/AppDistribution'
  2. 在 podfile 的目錄中,運行pod install ,然後打開創建的.xcworkspace文件。

  3. 對您的 Google 應用 ID 進行編碼(僅 iOS 版本 9 和 10 需要):

    對您的 Google 應用 ID 進行編碼

    通過在Info.plist file包含代碼段來添加appdistribution-<encoded-google-app-id> URL 方案(有關如何在 Xcode 中添加 URL 方案的說明,請參閱Apple 的文檔):

    <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 進行編碼。請注意,您的 Google 應用 ID 位於您的GoogleService-Info.plist文件中。例如,如果您的 Google 應用 ID 是:

    7:77777777777:ios:123456789

    您編碼的 Google 應用 ID 是:

    7-77777777777-ios-123456789
  4. UIApplicationDelegate導入 Firebase 模塊:

    迅速

    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方法為止。有關更多信息,請參閱該方法的參考文檔( SwiftObjective-C )。

  3. 檢查新的可用版本以供測試人員安裝。

您可以在應用程序中的任何位置包含checkForUpdate 。例如,您可以通過在UIViewControllerviewDidAppear中包含checkForUpdate來提示您的測試人員在啟動時安裝新的可用構建。

以下示例檢查測試人員是否已啟用警報並有權訪問新構建,如果是,則在構建可供安裝時顯示對話框:

檢查啟用的警報

迅速

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 ,請參閱SwiftObjective-C的 App Distribution 參考文檔。

第 4 步:構建和測試您的實現

最後,通過使用 Firebase 控制台將構建分發給測試人員來構建您的應用並測試您的實現。

訪問應用程序分發故障排除指南以獲取有關常見問題的幫助,例如:

  • 測試人員未收到應用內提醒
  • 多次提示測試人員登錄 Google