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

1. 概述

歡迎來到在 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 開發者帳戶
  • 用於測試的實體 iOS 裝置。 ( iOS 模擬器應用程式適用於大多數 Codelab,但模擬器無法下載版本。)

您將如何使用本教學?

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

您如何評價您建立 iOS 應用程式的體驗?

新手中間的精通

2.建立Firebase控制台項目

新增新的 Firebase 項目

  1. 登入 Firebase。
  2. Firebase 控制台中,按一下“新增專案”,然後將您的專案命名為“Firebase Codelab”。

您不需要為此專案啟用 Google Analytics。

  1. 點選建立項目

將應用程式新增至 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 .

更新捆綁包識別碼以符合您的 Firebase 應用

在左側選單中,雙擊AppDistributionExample。然後,找到「常規」選項卡,並更改捆綁包標識符以匹配您的 Firebase 應用程式的捆綁包標識符,該標識符可以在項目設定中找到。這應該是“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 控制台將建置分發給測試人員來測試您的實作。

建立您的應用程式

當您準備好向測試人員分發應用程式的預發布版本時,請選擇「任何 iOS 裝置 (arm64)」作為建置目標,然後選擇「產品」->「存檔」。建立存檔後,使用開發發行版設定檔建立簽名發行版。

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

建置完成後,它會將 IPA 檔案和一些日誌檔案保存在您指定的資料夾中。您可以按照以下步驟將 IPA 檔案分發給測試人員。

如果您在建立應用程式時遇到問題,請參閱Apple 的協同設計文件以取得故障排除步驟。

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

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

  1. 開啟 Firebase 控制台的「應用程式分發」頁面。出現提示時選擇您的 Firebase 專案。
  2. 開始

e4671bd304ecfe47.png

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

8a3da2939b9746f4.png

  1. 將應用程式的 IPA 檔案拖曳到控制台進行上傳。
  2. 上傳完成後,指定您想要接收建置的測試人員群組和單一測試人員。 (新增您的電子郵件以接收邀請。)然後,新增已建置的發行說明。有關建立測試人員群組的更多信息,請參閱管理測試人員

de63e3c3c64f909e.png

  1. 按一下「分發」以使建置可供測試人員使用。

b6e75dc216fc3731.png

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

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

eb61c6be96ff3a11.png

由於您提供了電子郵件地址,因此您將收到一封來自 Firebase App Distribution 的電子郵件,邀請您測試該應用程式。您現在是第一個測試者了!繼續執行以下部分,在您的測試設備上設定為測試人員。

註冊您的測試設備

您需要先註冊您的測試設備才能下載並測試臨時版本。

  1. 在您的 iOS 測試裝置上,開啟從 Firebase App Distribution 發送的電子郵件,然後點擊「開始」連結。確保在 Safari 中開啟連結。
  2. 在顯示的Firebase App Distribution測試器 Web 應用程式中,使用您的 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:將設備 UDID 匯入 CSV 檔案。在 App Distribution 儀表板的“測試人員和群組”標籤中,選擇“所有測試人員”,然後按一下“匯出 Apple UDID”以下載 CSV 檔案。接下來,使用「註冊多個裝置」選項將該檔案匯入您的Apple 開發人員帳戶。請參閱Apple 的文檔以了解更多資訊。請注意,您的 Apple 開發者帳戶可能僅允許您匯入有限數量的裝置。
  • 選項 2:透過電子郵件收集並輸入 UDID。在 Apple 開發者入口網站的「新增裝置」頁面上,註冊您收到的電子郵件中指定的新 UDID。

ffb74294e68ee1c8.png

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

從測試設備下載版本

現在該版本具有測試設備的UDID,因此測試設備可以下載並安裝應用程式。當測試人員的 UDID 新增至新版本時,App Distribution 會向測試人員發送電子郵件。

a4049260bae2850b.png

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

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

爸爸6d03b6ad78746.png

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

6e3540a2900734e6.png

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

82d90d7935bfaea0.png

  1. 使用您的測試者帳號登入。

13bee1d03fa94ebf.png

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

815d6757eb5f6327.png

向您的測試人員分發更新

  1. 將您的內部版本號更新為「2」。

861aa63ebbc6ec54.png

  1. 選擇「任何 iOS 裝置 (arm64)」作為建置目標,然後選擇「產品」->「存檔」。產生存檔後,使用開發發行版設定檔建立簽名發行版。
  2. 建置完成後,它會將 IPA 檔案和一些日誌檔案保存在您指定的資料夾中。在您的 Firebase 控制台中上傳這個新的 IPA,再次將您的電子郵件新增為測試人員並分發。

b6e75dc216fc3731.png

測試建置警報

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

3bd532992df458e6.png

  1. 按一下“更新”以接收最新版本。
  2. 在下一個畫面上按一下「安裝」。

3a761d8fa4b79d33.png

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

6. 自訂測試人員登入

方法signInTester/signOutTesterisTesterSignedIn使您能夠更靈活地自訂測試人員的登入體驗,從而更好地匹配您的應用程式的外觀和感覺。

以下範例檢查測試人員是否已登入其 Firebase App Distribution 測試人員帳戶,因此您可以選擇僅向尚未登入的測試人員顯示登入 UI。測試人員登入後,您可以呼叫checkForUpdate檢查測試人員是否有權存取新版本。

讓我們透過註解掉checkForUpdate()呼叫來停用viewDidAppear中自動檢查更新的功能。

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

下一步

了解更多

有一個問題?

報告問題