1.概览
欢迎学习“在 iOS 应用中集成 Firebase App Distribution SDK”Codelab。在此 Codelab 中,您将向应用添加 App Distribution SDK,以便在有新的 build 可供下载时向测试人员显示应用内提醒。您将学习如何同时使用基本配置和自定义配置,让测试人员登录以接收更新。然后,您需要将新版本推送到 App Distribution,并直接在应用中触发新的构建提醒。
学习内容
- 如何使用 App Distribution 将预发布版本的应用分发给实际测试人员
- 如何将 App Distribution iOS SDK 集成到您的应用中
- 如何在有新的预发布 build 可供安装时提醒测试人员
- 如何自定义 SDK 以满足您独特的测试需求
您需要满足的条件
- Xcode 12(或更高版本)
- CocoaPods 1.9.1(或更高版本)
- 用于临时发布的 Apple 开发者账号
- 一台用于测试的 iOS 实体设备。( iOS 模拟器应用适用于此 Codelab 的大部分内容,但模拟器无法下载版本。)
您打算如何使用本教程?
您如何评价您构建 iOS 应用的经验?
2. 创建 Firebase 控制台项目
添加新的 Firebase 项目
- 登录 Firebase。
- 在 Firebase 控制台中,点击“添加项目”,然后将您的项目命名为“Firebase Codelab”。
您无需为此项目启用 Google Analytics。
- 点击 Create project。
将应用添加到 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 .
更新软件包标识符以与您的 Firebase 应用匹配
在左侧菜单中,双击 AppDistributionExample。然后,找到常规标签页,并更改软件包标识符,使其与 Firebase 应用的软件包标识符相匹配,您可以在项目设置中找到该标识符。它应该是“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 设置有关新 build 的应用内提醒
在此步骤中,您将向应用添加 Firebase App Distribution SDK,并在有新的应用 build 可供安装时向测试人员显示应用内提醒。为此,请确保您已为“Firebase Codelab”启用了 Firebase App Testers API项目(在 Google Cloud 控制台中)。您需要使用同一个账号登录,然后从顶部的下拉菜单中选择正确的项目。
配置应用内提醒
App Distribution SDK 提供了两种为测试人员设置应用内构建提醒的方法:基本提醒配置(提供要向测试人员显示的预构建登录对话框)和高级提醒配置(允许您自定义自己的界面 (UI))。
我们先从基本提醒配置开始。您可以使用 checkForUpdate
向尚未启用提醒的测试人员显示预构建的启用提醒对话框,然后检查是否有新的 build。测试人员在 App Distribution 中登录有权访问该应用的账号后,即可启用提醒。调用时,该方法将遵循以下顺序:
- 检查测试人员是否已启用提醒。否则,系统会显示一个预构建的对话框,提示他们使用 Google 账号登录 App Distribution。
只需在测试设备上启用提醒一次,即可在应用更新期间持续启用。在测试设备上,提醒保持启用状态,直到应用被卸载或 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 控制台将 build 分发给测试人员,以构建应用并测试您的实现。
构建应用
当您准备好将应用的预发布版本分发给测试人员时,请选择“任何 iOS 设备 (arm64)”作为构建目标,而“Product”->“Archive”文件夹。创建归档文件后,使用开发分发配置文件构建已签名的发行版。
构建完成后,它会将 IPA 文件和一些日志文件保存在您指定的文件夹中。请按照以下步骤将 IPA 文件分发给测试人员。
如果您在构建应用时遇到问题,请参阅 Apple 的代码签名文档,了解问题排查步骤。
将应用分发给测试人员
如需将您的应用分发给测试人员,请使用 Firebase 控制台上传 IPA 文件:
- 打开 Firebase 控制台的“App Distribution”页面。出现提示时,选择您的 Firebase 项目。
- 按开始使用
- 在“版本”页面上,从下拉菜单中选择您要分发的应用。
- 将应用的 IPA 文件拖到控制台中以便上传。
- 上传完成后,指定要接收此 build 的测试人员群组和各个测试人员。(请添加您的电子邮件地址以接收邀请。)然后,为该 build 添加版本说明。如需详细了解如何创建测试人员群组,请参阅管理测试人员。
- 点击“分发”以将 build 提供给测试人员。
将您自己添加为此版本的测试人员
在 Firebase 控制台中,您现在可以在应用的版本下看到添加的测试人员。
由于您添加了自己的电子邮件地址,因此会收到 Firebase App Distribution 邀请您测试该应用的电子邮件。您现在是首位测试人员了!继续下一部分,在测试设备上设置为测试人员。
注册测试设备
您需要先注册测试设备,才能下载并测试临时版本。
- 在您的 iOS 测试设备上,打开 Firebase App Distribution 发送的电子邮件,然后点按“开始使用”链接。请务必在 Safari 中打开该链接。
- 在显示的 Firebase App Distribution 测试人员 Web 应用中,登录您的 Google 账号,然后点按接受邀请。
现在,您会看到受邀加入的版本。
- 点按注册设备以与 Firebase 共享您的 UDID,以便您稍后更新应用的配置文件。
- 按照说明操作,然后转到“设置”以下载配置文件并分享您的 UDID。
现在,当您返回到 App Distribution 后,该发布版本现在会标记为“设备已注册”:
现已将测试人员的 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 更新您的预配配置文件,然后按照以下步骤将新的 build 分发给测试人员:
- 将设备添加到您的 Apple Developer 门户。
- 选项 1:以 CSV 文件的形式导入设备 UDID。在测试人员和在 App Distribution 信息中心的“群组”标签页中,选择“所有测试人员”,然后点击“导出 Apple UDID”以下载 CSV 文件。接下来,使用“注册多台设备”选项将该文件导入您的 Apple 开发者账号。如需了解详情,请参阅 Apple 文档。请注意,您的 Apple 开发者账号可能每年只允许您导入一定数量的设备。
- 选项 2:收集 UDID 并通过电子邮件输入。在 Apple Developer 门户的 Add Devices(添加设备)页面上,注册您收到的电子邮件中指定的新 UDID。
- 将已注册的设备添加到您的预配配置文件。
- 下载预配配置文件,并使用该配置文件重新构建您的应用。如果您重新构建的目的只是为了更新已注册的设备,请勿更新 build 号或版本。
- 通过 Firebase 控制台或 CLI 重新分发您的应用。如果您已分发了具有相同 build 号和版本的 build,则只有新注册设备的用户才会收到通知电子邮件。
从测试设备下载该版本
现在,该版本具有测试设备的 UDID,以便测试设备可以下载并安装应用。当测试人员的 UDID 添加到新版本后,App Distribution 会向测试人员发送电子邮件。
- 在测试设备上,使用电子邮件中的链接或设备主屏幕上的图标返回 App Distribution 测试人员 Web 应用。
转到 UDID Codelab 应用后,您会看到此版本可供下载。
- 如果您使用的是实体设备,请按“下载”,然后安装并运行应用!
- 当应用启动时,它会要求您启用新的构建提醒。选择“开启”
- 然后,系统会要求您登录。点击“继续”。
- 使用您的测试人员账号登录。
- 您将返回到该应用。下次运行应用时,您无需登录或接受提醒。
向测试人员分发更新
- 将您的 build 号更新为“2”。
- 选择“任意 iOS 设备 (arm64)”作为构建目标,而“Product”->“Archive”文件夹。生成归档文件后,使用开发分发配置文件构建已签名的发行版。
- 构建完成后,它会将 IPA 文件和一些日志文件保存在您指定的文件夹中。在 Firebase 控制台中上传这个新的 IPA,将您的电子邮件地址重新添加为测试人员,然后进行分发。
测试 build 提醒
- 如果该应用已打开,请确保你已经将其关闭。重启应用。
- 当应用重启时,您应该会收到“有新版本可用”的消息提醒。
- 点击“更新”以获取最新版本。
- 点击“安装”。
- 恭喜!您可以通过内置提醒更新应用。
6. 自定义测试人员登录
signInTester/signOutTester 和 isTesterSignedIn 方法可让您更灵活地自定义测试人员的登录体验,以便更好地匹配应用的外观和风格。
以下示例会检查测试人员是否已登录其 Firebase App Distribution 测试人员账号,因此您可以选择仅向尚未登录的测试人员显示登录界面。在测试人员登录后,您可以调用 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 App Distribution
- Firebase App Distribution 新提醒 iOS SDK
后续步骤
了解详情
有疑问?
报告问题