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