透過 Firebase 應用程式發布 iOS SDK 通知測試人員您的新應用程式版本 - 程式碼研究室

1. 總覽

歡迎參加「在 iOS 應用程式中整合 Firebase App Distribution SDK」程式碼研究室。在本程式碼研究室中,您將在應用程式中新增 App Distribution SDK,以便在有新版本可供下載時,向測試人員顯示應用程式內快訊。您將瞭解如何使用基本設定和自訂設定,讓測試人員登入以接收更新。接著,您會將新版本推送至「應用程式發布」,並在應用程式中觸發新的建構快訊。

課程內容

  • 如何使用應用程式發布功能,將預先發布版應用程式發送給實際測試人員
  • 如何將 App Distribution iOS SDK 整合至應用程式
  • 如何在新預先發布版本可供安裝時通知測試人員
  • 如何自訂 SDK,滿足您獨特的測試需求

事前準備

您會如何使用本教學課程?

僅閱讀 閱讀並完成練習

您對建構 iOS 應用程式的體驗滿意嗎?

新手 中級 熟練

2. 建立及設定 Firebase 專案

建立新的 Firebase 專案

  1. 使用 Google 帳戶登入 Firebase 控制台
  2. 按一下按鈕建立新專案,然後輸入專案名稱 (例如 App Distribution Codelab)。
  3. 按一下「繼續」
  4. 如果系統提示,請詳閱並接受 Firebase 條款,然後按一下「繼續」
  5. (選用) 在 Firebase 控制台中啟用 AI 輔助功能 (稱為「Gemini in Firebase」)。
  6. 本程式碼研究室不需要 Google Analytics,因此請關閉 Google Analytics 選項。
  7. 按一下「建立專案」,等待專案佈建完成,然後按一下「繼續」

將應用程式新增至 Firebase

請按照說明文件向 Firebase 註冊應用程式。使用「com.google.firebase.codelab.AppDistribution.<your_name>」做為 iOS 軟體包 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 中新增下列程式碼:

Podfile

pod 'Firebase/AppDistribution'

在專案目錄中執行 pod update,並在 Xcode 中開啟專案。

pod install --repo-update
xed .

更新軟體包 ID,與 Firebase 應用程式相符

在左選單中,按兩下「AppDistributionExample」。然後找到「一般」分頁,將套件組合 ID 變更為與 Firebase 應用程式的套件組合 ID 相符 (可在專案設定中找到)。這應該是「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 控制台中) 啟用 Firebase 應用程式測試人員 API。請使用相同帳戶登入,然後從頂端的下拉式選單中選取正確的專案。

設定應用程式內快訊

App Distribution SDK 提供兩種方式,為測試人員設定應用程式內建構版本快訊:基本快訊設定 (隨附預先建構的登入對話方塊,可向測試人員顯示),以及進階快訊設定 (可自訂使用者介面)。

我們會先從基本快訊設定開始。您可以透過 checkForUpdate 向尚未啟用快訊的測試人員顯示預先建構的啟用快訊對話方塊,然後檢查是否有新版本。測試人員必須登入有權存取 App Distribution 中應用程式的帳戶,才能啟用快訊。呼叫時,這個方法會執行下列序列:

  1. 檢查測試人員是否已啟用快訊。如果沒有,則會顯示預先建構的對話方塊,提示使用者登入 App Distribution 的 Google 帳戶。

在測試裝置上啟用快訊後,即使應用程式更新,快訊也會持續啟用。除非解除安裝應用程式或呼叫 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」。封存檔建立完成後,請使用「開發」發布設定檔建構已簽署的發布版本。

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

建構完成後,系統會將 IPA 檔案和一些記錄檔儲存到您指定的資料夾。請按照下列步驟將 IPA 檔案發布給測試人員。

如果建構應用程式時發生問題,請參閱 Apple 的程式碼簽署文件,瞭解疑難排解步驟。

將應用程式發布給測試人員

如要將應用程式發布給測試人員,請使用 Firebase 控制台上傳 IPA 檔案:

  1. 開啟 Firebase 控制台的「App Distribution」頁面。系統顯示提示訊息時,請選取 Firebase 專案。
  2. 按下「開始使用」

e4671bd304ecfe47.png

  1. 在「發布」頁面中,從下拉式選單選取要發布的應用程式。

8a3da2939b9746f4.png

  1. 將應用程式的 IPA 檔案拖曳到控制台,即可上傳。
  2. 上傳完成後,請指定要接收版本的測試人員群組和個別測試人員。(新增電子郵件地址即可接收邀請。)然後為版本新增版本資訊。如要進一步瞭解如何建立測試人員群組,請參閱「管理測試人員」。

de63e3c3c64f909e.png

  1. 按一下「發布」,即可將版本提供給測試人員。

b6e75dc216fc3731.png

將自己新增為版本的測試人員

在 Firebase 控制台中,您現在可以在應用程式發布版本下方看到新增的測試人員。

eb61c6be96ff3a11.png

由於您已提供電子郵件地址,您會收到 Firebase 應用程式發布的電子郵件,邀請您測試應用程式。您現在是第一位測試人員!請繼續閱讀下節,瞭解如何在測試裝置上設定為測試人員。

註冊測試裝置

您必須先註冊測試裝置,才能下載及測試 Ad Hoc 版本。

  1. 在 iOS 測試裝置上開啟 Firebase 應用程式發布服務傳送的電子郵件,然後輕觸「開始使用」連結。請務必在 Safari 中開啟連結。
  2. 在隨即顯示的 Firebase App Distribution 測試人員網頁應用程式中,使用 Google 帳戶登入,然後輕觸「接受邀請」

4d1af345ef944620.png

現在,你應該會看到受邀參與的發行內容。

  1. 輕觸「註冊裝置」,即可與 Firebase 分享 UDID,以便稍後更新應用程式的佈建設定檔。

fd141215e54a938d.png

  1. 按照操作說明前往設定,下載設定檔並分享 UDID。

現在返回應用程式發布頁面時,該版本會標示為「已註冊裝置」:

fe93d649dfa25877.png

測試人員的 UDID 現在已與開發人員共用。現在開發人員必須為測試人員建構新版應用程式。

在控制台中查看測試人員資訊

回到 Firebase 控制台的開發人員檢視畫面,測試人員會顯示為「已接受」:

1bef6f182c1c58f9.png

如果使用者使用的裝置尚未納入佈建設定檔,您也會收到電子郵件。系統會通知您需要新增的 UDID。您也可以選擇將所有 UDID 匯出為文字檔。

  1. 如要匯出所有 UDID,請開啟「測試人員和群組」分頁。

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:以 CSV 檔案格式匯入裝置 UDID。在「應用程式發布」資訊主頁的「測試人員和群組」分頁中,選取「所有測試人員」,然後按一下「匯出 Apple UDID」下載 CSV 檔案。接著,使用「Register Multiple Devices」選項將檔案匯入 Apple 開發人員帳戶。詳情請參閱 Apple 說明文件。請注意,Apple 開發人員帳戶每年可能只允許匯入有限數量的裝置。
  • 方法 2:透過電子郵件收集並輸入 UDID。在 Apple 開發人員入口網站的「Add Devices」(新增裝置) 頁面中,註冊您收到的電子郵件中指定的新裝置專屬 ID。

ffb74294e68ee1c8.png

  1. 將已註冊的裝置新增至佈建設定檔
  2. 下載佈建設定檔,並用來重建應用程式。如果重建應用程式只是為了更新已註冊的裝置,請勿更新版本號碼或版本。
  3. 從 Firebase 控制台或 CLI 重新發布應用程式。如果您已發布建構版本,且建構版本號碼和版本相同,則只有新註冊裝置的使用者會收到通知電子郵件。

從測試裝置下載發行版本

現在版本已包含測試裝置的 UDID,因此測試裝置可以下載及安裝應用程式。當測試人員的 UDID 新增至新版本時,App Distribution 會傳送電子郵件給測試人員。

a4049260bae2850b.png

  1. 在測試裝置上,使用電子郵件中的連結或裝置主畫面上的圖示,返回 App Distribution 測試人員網頁應用程式。

前往 UDID 程式碼研究室應用程式時,您會看到版本已可供下載。

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」。產生封存檔後,請使用「開發」發布設定檔建構已簽署的發布版本。
  2. 建構完成後,系統會將 IPA 檔案和一些記錄檔儲存到您指定的資料夾。在 Firebase 控制台中上傳這個新的 IPA,再次將您的電子郵件地址新增為測試人員,然後發布。

b6e75dc216fc3731.png

測試版本警報

  1. 請確認應用程式已關閉 (如果開啟的話)。重新啟動應用程式。
  2. 應用程式重新啟動後,您應該會收到「有新版本可用」的快訊。

3bd532992df458e6.png

  1. 按一下「更新」即可取得最新版本。
  2. 在下一個畫面中,按一下「安裝」。

3a761d8fa4b79d33.png

  1. 恭喜!您已使用內建警示更新應用程式。

6. 自訂測試人員的登入方式

signInTester/signOutTesterisTesterSignedIn 方法可讓您更彈性地自訂測試人員的登入體驗,使其更符合應用程式的外觀和風格。

以下範例會檢查測試人員是否已登入 Firebase 應用程式發布測試人員帳戶,因此您可以選擇只向尚未登入的測試人員顯示登入 UI。測試人員登入後,您就可以呼叫 checkForUpdate,檢查測試人員是否能存取新版本。

讓我們在 viewDidAppear 中註解掉 checkForUpdate() 呼叫,停用自動檢查更新。

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 應用程式發布 iOS SDK,在應用程式中建構「應用程式內警示顯示」功能。

涵蓋內容

  • Firebase 應用程式發布
  • Firebase 應用程式發布新快訊 iOS SDK

後續步驟

瞭解詳情

有任何問題嗎?

回報問題