1. 總覽
歡迎參加「在 iOS 應用程式中整合 Firebase App Distribution SDK」程式碼研究室。在本程式碼研究室中,您將在應用程式中新增 App Distribution SDK,以便在有新版本可供下載時,向測試人員顯示應用程式內快訊。您將瞭解如何使用基本設定和自訂設定,讓測試人員登入以接收更新。接著,您會將新版本推送至「應用程式發布」,並在應用程式中觸發新的建構快訊。
課程內容
- 如何使用應用程式發布功能,將預先發布版應用程式發送給實際測試人員
- 如何將 App Distribution iOS SDK 整合至應用程式
- 如何在新預先發布版本可供安裝時通知測試人員
- 如何自訂 SDK,滿足您獨特的測試需求
事前準備
- Xcode 12 以上版本
- CocoaPods 1.9.1 以上版本
- 用於 Ad Hoc 發布的 Apple 開發人員帳戶
- 用於測試的實體 iOS 裝置。( iOS 模擬器應用程式適用於大部分的程式碼研究室,但模擬器無法下載版本。)
您會如何使用本教學課程?
您對建構 iOS 應用程式的體驗滿意嗎?
2. 建立及設定 Firebase 專案
建立新的 Firebase 專案
- 使用 Google 帳戶登入 Firebase 控制台。
- 按一下按鈕建立新專案,然後輸入專案名稱 (例如
App Distribution Codelab
)。 - 按一下「繼續」。
- 如果系統提示,請詳閱並接受 Firebase 條款,然後按一下「繼續」。
- (選用) 在 Firebase 控制台中啟用 AI 輔助功能 (稱為「Gemini in Firebase」)。
- 本程式碼研究室不需要 Google Analytics,因此請關閉 Google Analytics 選項。
- 按一下「建立專案」,等待專案佈建完成,然後按一下「繼續」。
將應用程式新增至 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 中開啟專案
- 開啟相同目錄中的 Podfile
cd firebase-appdistribution-ios/start Open Podfile
- 在 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 專案的根目錄。您也可以隨時從專案的設定頁面下載這個檔案。
在 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 中應用程式的帳戶,才能啟用快訊。呼叫時,這個方法會執行下列序列:
- 檢查測試人員是否已啟用快訊。如果沒有,則會顯示預先建構的對話方塊,提示使用者登入 App Distribution 的 Google 帳戶。
在測試裝置上啟用快訊後,即使應用程式更新,快訊也會持續啟用。除非解除安裝應用程式或呼叫 signOutTester
方法,否則測試裝置上的快訊會保持啟用。詳情請參閱方法參考說明文件 ( Swift 或 Objective-C)。
您可以在應用程式的任何時間點加入 checkForUpdate
。舉例來說,您可以在 UIViewController 的 viewDidAppear 中加入 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」。封存檔建立完成後,請使用「開發」發布設定檔建構已簽署的發布版本。
建構完成後,系統會將 IPA 檔案和一些記錄檔儲存到您指定的資料夾。請按照下列步驟將 IPA 檔案發布給測試人員。
如果建構應用程式時發生問題,請參閱 Apple 的程式碼簽署文件,瞭解疑難排解步驟。
將應用程式發布給測試人員
如要將應用程式發布給測試人員,請使用 Firebase 控制台上傳 IPA 檔案:
- 在「發布」頁面中,從下拉式選單選取要發布的應用程式。
- 將應用程式的 IPA 檔案拖曳到控制台,即可上傳。
- 上傳完成後,請指定要接收版本的測試人員群組和個別測試人員。(新增電子郵件地址即可接收邀請。)然後為版本新增版本資訊。如要進一步瞭解如何建立測試人員群組,請參閱「管理測試人員」。
- 按一下「發布」,即可將版本提供給測試人員。
將自己新增為版本的測試人員
在 Firebase 控制台中,您現在可以在應用程式發布版本下方看到新增的測試人員。
由於您已提供電子郵件地址,您會收到 Firebase 應用程式發布的電子郵件,邀請您測試應用程式。您現在是第一位測試人員!請繼續閱讀下節,瞭解如何在測試裝置上設定為測試人員。
註冊測試裝置
您必須先註冊測試裝置,才能下載及測試 Ad Hoc 版本。
- 在 iOS 測試裝置上開啟 Firebase 應用程式發布服務傳送的電子郵件,然後輕觸「開始使用」連結。請務必在 Safari 中開啟連結。
- 在隨即顯示的 Firebase App Distribution 測試人員網頁應用程式中,使用 Google 帳戶登入,然後輕觸「接受邀請」。
現在,你應該會看到受邀參與的發行內容。
- 輕觸「註冊裝置」,即可與 Firebase 分享 UDID,以便稍後更新應用程式的佈建設定檔。
- 按照操作說明前往設定,下載設定檔並分享 UDID。
現在返回應用程式發布頁面時,該版本會標示為「已註冊裝置」:
測試人員的 UDID 現在已與開發人員共用。現在開發人員必須為測試人員建構新版應用程式。
在控制台中查看測試人員資訊
回到 Firebase 控制台的開發人員檢視畫面,測試人員會顯示為「已接受」:
如果使用者使用的裝置尚未納入佈建設定檔,您也會收到電子郵件。系統會通知您需要新增的 UDID。您也可以選擇將所有 UDID 匯出為文字檔。
- 如要匯出所有 UDID,請開啟「測試人員和群組」分頁。
- 按一下「匯出 Apple UDID」。
檔案應包含測試裝置的 UDID。
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
收到這類電子郵件後,請按照下列步驟使用 UDID 更新佈建設定檔,並將新版本發布給測試人員:
- 將裝置新增至 Apple 開發人員入口網站。
- 方法 1:以 CSV 檔案格式匯入裝置 UDID。在「應用程式發布」資訊主頁的「測試人員和群組」分頁中,選取「所有測試人員」,然後按一下「匯出 Apple UDID」下載 CSV 檔案。接著,使用「Register Multiple Devices」選項將檔案匯入 Apple 開發人員帳戶。詳情請參閱 Apple 說明文件。請注意,Apple 開發人員帳戶每年可能只允許匯入有限數量的裝置。
- 方法 2:透過電子郵件收集並輸入 UDID。在 Apple 開發人員入口網站的「Add Devices」(新增裝置) 頁面中,註冊您收到的電子郵件中指定的新裝置專屬 ID。
- 將已註冊的裝置新增至佈建設定檔。
- 下載佈建設定檔,並用來重建應用程式。如果重建應用程式只是為了更新已註冊的裝置,請勿更新版本號碼或版本。
- 從 Firebase 控制台或 CLI 重新發布應用程式。如果您已發布建構版本,且建構版本號碼和版本相同,則只有新註冊裝置的使用者會收到通知電子郵件。
從測試裝置下載發行版本
現在版本已包含測試裝置的 UDID,因此測試裝置可以下載及安裝應用程式。當測試人員的 UDID 新增至新版本時,App Distribution 會傳送電子郵件給測試人員。
- 在測試裝置上,使用電子郵件中的連結或裝置主畫面上的圖示,返回 App Distribution 測試人員網頁應用程式。
前往 UDID 程式碼研究室應用程式時,您會看到版本已可供下載。
- 如果你使用實體裝置,請按下「下載」,然後安裝並執行應用程式!
- 應用程式啟動時,系統會要求你啟用新版本快訊。選取「開啟」
- 然後系統會要求你登入帳戶。按一下「繼續」。
- 使用測試人員帳戶登入。
- 系統會將你帶回應用程式。下次執行應用程式時,你就不必登入或接受快訊。
向測試人員發布更新
- 將版本號碼更新為「2」。
- 選取「Any iOS Device (arm64)」做為建構目的地,然後依序選取「Product」->「Archive」。產生封存檔後,請使用「開發」發布設定檔建構已簽署的發布版本。
- 建構完成後,系統會將 IPA 檔案和一些記錄檔儲存到您指定的資料夾。在 Firebase 控制台中上傳這個新的 IPA,再次將您的電子郵件地址新增為測試人員,然後發布。
測試版本警報
- 請確認應用程式已關閉 (如果開啟的話)。重新啟動應用程式。
- 應用程式重新啟動後,您應該會收到「有新版本可用」的快訊。
- 按一下「更新」即可取得最新版本。
- 在下一個畫面中,按一下「安裝」。
- 恭喜!您已使用內建警示更新應用程式。
6. 自訂測試人員的登入方式
signInTester/signOutTester 和 isTesterSignedIn 方法可讓您更彈性地自訂測試人員的登入體驗,使其更符合應用程式的外觀和風格。
以下範例會檢查測試人員是否已登入 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
後續步驟
瞭解詳情
有任何問題嗎?
回報問題