使用 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:配置應用程序內的警報

App Distribution 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