使用 Firebase App Distribution iOS SDK 提醒測試人員您的新應用版本 - Codelab

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

一、概述

歡迎使用在您的 iOS 應用代碼實驗室中集成 Firebase 應用分發 SDK。在此 Codelab 中,您將 App Distribution SDK 添加到您的應用程序中,以便在有新版本可供下載時向您的測試人員顯示應用程序內警報。您將學習如何使用基本配置和自定義配置來讓您的測試人員登錄以接收更新。然後,您將向 App Distribution 推送新版本並在應用程序中觸發新的構建警報。

你會學到什麼

  • 如何使用 App Distribution 將預發布應用分發給現場測試人員
  • 如何將 App Distribution iOS SDK 集成到您的應用中
  • 當有新的預發布版本準備安裝時如何提醒測試人員
  • 如何自定義 SDK 以滿足您獨特的測試需求

你需要什麼

  • Xcode 12(或更高版本)
  • CocoaPods 1.9.1(或更高版本)
  • 用於 Ad Hoc 分發的Apple Developer 帳戶
  • 用於測試的物理 iOS 設備。 ( iOS 模擬器應用程序適用於大多數代碼實驗室,但模擬器無法下載版本。)

您將如何使用本教程?

只通讀一遍閱讀並完成練習

您如何評價您構建 iOS 應用程序的體驗?

新手中間的精通

2. 創建 Firebase 控制台項目

添加新的 Firebase 項目

  1. 登錄 Firebase。
  2. Firebase 控制台中,點擊添加項目,然後將您的項目命名為“Firebase Codelab”。

您無需為此項目啟用 Google Analytics。

  1. 單擊創建項目

將應用添加到 Firebase

按照文檔向 Firebase 註冊您的應用。使用“com.google.firebase.codelab.AppDistribution.<your_name>”作為 iOS Bundle ID。

出現提示時,下載項目的GoogleService-Info.plist文件。稍後您將需要它。

3. 獲取示例項目

下載代碼

首先克隆示例項目。

git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git

如果你沒有安裝 git,你也可以從它的 GitHub 頁面或者點擊這個鏈接下載示例項目。

下載依賴項並在 Xcode 中打開項目

  1. 打開同一目錄下的Podfile
cd firebase-appdistribution-ios/start
Open Podfile
  1. 將以下行添加到您的 podfile 中:

播客文件

pod 'Firebase/AppDistribution'

在項目目錄中運行pod update並在 Xcode 中打開項目。

pod install --repo-update
xed .

更新 Bundle Identifier 以匹配您的 Firebase 應用

在左側菜單中,雙擊AppDistributionExample。然後,找到General選項卡,並更改 bundle 標識符以匹配您的 Firebase 應用程序的 bundle 標識符,該標識符可以在project settings中找到。這應該是“com.google.firebase.codelab.AppDistribution.<your_name>”

將 Firebase 添加到您的應用

找到您之前在文件系統中下載的GoogleService-Info.plist文件,並將其拖到 Xcode 項目的根目錄。您也可以隨時從項目的設置頁面下載此文件。

3cf9290805e7fdab.png

在您的AppDistributionExample/AppDelegate.swift文件中,在文件頂部導入 Firebase

AppDistributionExample/AppDelegate.swift

import Firebase

並在didFinishLaunchingWithOptions方法中添加一個調用來配置 Firebase。

AppDistributionExample/AppDelegate.swift

FirebaseApp.configure()

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

在此步驟中,您會將 Firebase App Distribution SDK 添加到您的應用中,並在您的應用的新版本可供安裝時向您的測試人員顯示應用內警報。為此,請確保您已為“Firebase Codelab”項目(在 Google Cloud Console 中)啟用Firebase App Testers API 。您將需要使用相同的帳戶登錄並從頂部的下拉菜單中選擇正確的項目。

配置應用內警報

App Distribution SDK 提供了兩種為測試人員設置應用內構建警報的方法:基本警報配置,帶有預構建的登錄對話框以顯示給測試人員,以及高級警報配置,允許您自定義您自己的用戶界面 (UI)。

我們將從基本的警報配置開始。您可以使用checkForUpdate向尚未啟用警報的測試人員顯示預構建的啟用警報對話框,然後檢查是否有新的構建可用。測試人員通過登錄有權訪問 App Distribution 中的應用程序的帳戶來啟用警報。調用時,該方法執行以下序列:

  1. 檢查測試人員是否啟用了警報。如果沒有,則會顯示一個預先構建的對話框,提示他們使用他們的 Google 帳戶登錄 App Distribution。

啟用警報是測試設備上的一次性過程,並且在您的應用程序更新期間持續存在。在卸載應用程序或調用signOutTester方法之前,測試設備上的警報將保持啟用狀態。有關更多信息,請參閱該方法的參考文檔( SwiftObjective-C )。

  1. 檢查新可用的構建以供測試人員安裝。返回釋放對像或錯誤

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

在您的AppDistributionViewController.swift文件中,在文件頂部導入 Firebase

AppDistributionViewController.swift

import Firebase

打開AppDistributionExample/AppDistributionViewController.swift ,並將行複製到viewDidAppear方法中,如下所示:

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    checkForUpdate()
 }

現在讓我們實現 checkForUpdate() 方法。

AppDistributionViewController.swift

  private func checkForUpdate() {
    AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
      var uiAlert: UIAlertController

      if error != nil {
        uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
      } else if release == nil {
        uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
        uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
      } else {
        guard let release = release else { return }

        let title = "New Version Available"
        let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
        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.present(uiAlert, animated: true, completion: nil)
    })
  }

5. 構建並邀請測試人員下載您的應用

在此步驟中,您將構建您的應用並通過使用 Firebase 控制台將構建分發給測試人員來測試您的實現。

構建您的應用

當您準備好將應用程序的預發布版本分發給測試人員時,選擇“Any iOS Device (arm64)”作為構建目標,然後選擇 Product->Archive。創建存檔後,使用 Development 分發配置文件構建簽名分發。

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

構建完成後,它會在您指定的文件夾中保存一個 IPA 文件和一些日誌文件。您可以通過以下步驟將 IPA 文件分發給測試人員。

如果您在構建應用時遇到問題,請參閱Apple 的代碼設計文檔以了解故障排除步驟。

將您的應用分發給測試人員

要將您的應用分發給測試人員,請使用 Firebase 控制台上傳 IPA 文件:

  1. 打開 Firebase 控制台的應用分發頁面。出現提示時選擇您的 Firebase 項目。
  2. 開始

e4671bd304ecfe47.png

  1. 在 Releases 頁面上,從下拉菜單中選擇要分發的應用程序。

8a3da2939b9746f4.png

  1. 將應用的 IPA 文件拖到控制台以上傳。
  2. 上傳完成後,指定要接收構建的測試人員組和個人測試人員。 (添加您的電子郵件以接收邀請。)然後,為構建添加發行說明。有關創建測試人員組的更多信息,請參閱管理測試人員

de63e3c3c64f909e.png

  1. 單擊分發以使構建可供測試人員使用。

b6e75dc216fc3731.png

將自己作為測試人員添加到版本中

在 Firebase 控制台中,您現在可以看到您在應用版本下添加的測試人員。

eb61c6be96ff3a11.png

由於您包含了您的電子郵件地址,您將收到一封來自 Firebase App Distribution 的電子郵件,邀請您測試該應用程序。你現在是第一個測試者!繼續下面的部分,在您的測試設備上設置為測試人員。

註冊您的測試設備

您需要先註冊您的測試設備以下載和測試 Ad Hoc 版本。

  1. 在您的 iOS 測試設備上,打開從 Firebase App Distribution 發送的電子郵件,然後點擊開始鏈接。確保在 Safari 中打開該鏈接。
  2. 在出現的Firebase App Distribution測試程序 Web 應用中,使用您的 Google 帳戶登錄,然後點按接受邀請。

4d1af345ef944620.png

現在,您將看到您被邀請參加的發布。

  1. 點擊註冊設備以與 Firebase 共享您的 UDID,以便您以後可以更新應用的配置文件。

fd141215e54a938d.png

  1. 按照說明進行操作,然後轉到設置以下載配置文件並共享您的 UDID。

現在,當您返回 App Distribution 時,該版本現在標記為“設備已註冊”:

fe93d649dfa25877.png

測試人員的 UDID 現在已與開發人員共享。現在由開發人員為測試人員構建應用程序的新版本。

在控制台中查看測試人員信息

回到 Firebase 控制台中的開發人員視圖,測試人員將在版本下顯示為“已接受”:

1bef6f182c1c58f9.png

如果他們正在使用的設備尚未包含在配置文件中,您還將作為開發人員收到一封電子郵件。這將通知您需要添加的新 UDID。您還可以選擇將所有 UDID 導出為文本文件。

  1. 要導出所有 UDID,請打開 Testers & Groups 選項卡。

2745d49a6abc47fe.png

  1. 單擊“導出 Apple UDID”。

cb45477f8cc436ba.png

該文件應包含測試設備的 UDID。

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

當您收到其中一封電子郵件時,請使用 UDID 更新您的配置文件,並按照以下步驟將新構建分發給您的測試人員:

  1. 將設備添加到您的 Apple 開發者門戶。
  • 選項 1:將設備 UDID 導入為 CSV 文件。在 App Distribution 儀表板的 Testers & Groups 選項卡中,選擇 All testers,然後單擊 Export Apple UDIDs 以下載 CSV 文件。接下來,使用“註冊多個設備”選項將該文件導入您的Apple 開發人員帳戶。請參閱Apple 的文檔以了解更多信息。請注意,您的 Apple 開發者帳戶每年可能只允許您導入有限數量的設備。
  • 選項 2:通過電子郵件收集並輸入 UDID。在 Apple 開發者門戶的添加設備頁面上,註冊您收到的電子郵件中指定的新 UDID。

ffb74294e68ee1c8.png

  1. 將註冊的設備添加到您的配置文件中。
  2. 下載配置文件並使用它來重建您的應用程序。如果您重建只是為了更新註冊的設備,請不要更新內部版本號或版本。
  3. 從 Firebase 控制台或 CLI重新分發您的應用。如果您已經分發了具有相同內部版本號和版本的內部版本,則只有新註冊設備的用戶會收到通知電子郵件。

從測試設備下載版本

現在該版本具有測試設備的 UDID,因此測試設備可以下載並安裝應用程序。當他們的 UDID 添加到新版本中時,應用程序分發會向測試人員發送一封電子郵件。

a4049260bae2850b.png

  1. 在測試設備上,使用電子郵件中的鏈接或設備主屏幕上的圖標返回 App Distribution 測試程序 Web 應用程序。

當您導航到 UDID codelab 應用程序時,您可以看到該版本已準備好下載。

dad6d03b6ad78746.png

  1. 如果您使用的是物理設備,請按下載,然後安裝並運行該應用程序!
  2. 當應用程序啟動時,它會要求您啟用新的構建警報。選擇“開啟”

6e3540a2900734e6.png

  1. 然後它會要求您登錄。單擊“繼續”。

82d90d7935bfaea0.png

  1. 使用您的測試人員帳戶登錄。

13bee1d03fa94ebf.png

  1. 您將被帶回應用程序。下次運行應用程序時,您無需登錄或接受警報。

815d6757eb5f6327.png

向您的測試人員分發更新

  1. 將您的內部版本號更新為“2”。

861aa63ebbc6ec54.png

  1. 選擇“Any iOS Device (arm64)”作為構建目標,然後選擇 Product->Archive。生成存檔後,使用 Development 分發配置文件構建簽名分發。
  2. 構建完成後,它會在您指定的文件夾中保存一個 IPA 文件和一些日誌文件。在您的 Firebase 控制台中上傳這個新的 IPA,再次將您的電子郵件添加為測試人員並分發。

b6e75dc216fc3731.png

測試構建警報

  1. 如果應用程序處於打開狀態,請確保將其關閉。重新啟動應用程序。
  2. 當應用程序重新啟動時,您應該會收到“新版本可用”警報。

3bd532992df458e6.png

  1. 單擊“更新”以接收最新版本。
  2. 在下一個屏幕上單擊“安裝”。

3a761d8fa4b79d33.png

  1. 恭喜!您可以使用內置警報更新您的應用程序。

6.自定義測試人員的登錄

方法signInTester/signOutTesterisTesterSignedIn讓您可以更靈活地自定義測試人員的登錄體驗,從而更好地匹配您應用的外觀。

以下示例檢查測試人員是否已登錄其 Firebase App Distribution 測試人員帳戶,因此您可以選擇僅為尚未登錄的測試人員顯示您的登錄 UI。測試人員登錄後,您可以然後調用checkForUpdate以檢查測試人員是否有權訪問新版本。

讓我們通過註釋掉checkForUpdate()調用來禁用viewDidAppea中自動檢查更新。

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    // checkForUpdate()
 }

相反,讓我們在 checkForUpdateButtonClicked () 中調用 checkForUpdate ( )。

 @objc func checkForUpdateButtonClicked() {
    checkForUpdate()
 }

現在,讓我們實現我們的signInOutButtonClicked()方法,如果用戶已註銷,它將登錄用戶,如果用戶已經登錄,則將用戶註銷。

AppDistributionViewController.swift

 @objc func signInOutButtonClicked() {
    if isTesterSignedIn() {
      AppDistribution.appDistribution().signOutTester()

      self.configureCheckForUpdateButton()
      self.configureSignInSignOutButton()
      self.configureSignInStatus()

    } else {
      AppDistribution.appDistribution().signInTester(completion: { error in
        if error == nil {
          self.configureCheckForUpdateButton()
          self.configureSignInSignOutButton()
          self.configureSignInStatus()
        } else {
          let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
          uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
            _ in
          })

          self.present(uiAlert, animated: true, completion: nil)
        }
      })
    }
  }

最後讓我們實現isTesterSignedIn方法。

AppDistributionViewController.swift

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

構建和測試您的實現

7. 恭喜!

您已使用 Firebase App Distribution iOS SDK 將“應用內警報顯示”功能構建到應用中。

我們涵蓋的內容

  • Firebase 應用分發
  • Firebase 應用分發新警報 iOS SDK

下一步

學到更多

有一個問題?

報告問題