Firebase Apple 开源开发
此仓库包含除了 FirebaseAnalytics 和 FirebaseML 之外所有 Apple 平台 Firebase SDK 的源代码。
Firebase 是一个应用开发平台,提供了帮助您构建、发展和盈利应用的工具。更多关于 Firebase 的信息可以在 官方 Firebase 网站 上找到。
安装
请参见下面的子部分,以了解不同安装方法的细节。
标准 pod 安装
转到 https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关 Swift 包管理器支持的指令可在 SwiftPackageManager Markdown 文件中找到。
从 GitHub 安装
以下说明可用于访问其他分支、标签或提交的 Firebase 仓库。
背景
请参见Podfile 语法参考以获取有关覆盖 pod 源位置说明和选项。
访问 Firebase 源快照
所有官方版本均已在此仓库中标记,并通过 CocoaPods 提供。要访问本地源快照或未发布的分支,请使用以下类似 Podfile 指令:
要通过分支访问 FirebaseFirestore
pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master'
pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master'
要访问 FirebaseMessaging,请通过检出 firebase-ios-sdk 仓库的版本执行
pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk'
pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk'
Carthage(仅限 iOS)
关于实验性 Carthage 分发的说明请参阅Carthage。
从框架或库中使用 Firebase
开发
在此存储库中开发 Firebase 软件,请确保您至少拥有以下软件
- Xcode 12.2(或更高版本)
CocoaPods 仍然是官方的开发方式,但现在大部分存储库都支持使用 Swift Package Manager 进行开发。
CocoaPods
安装
- CocoaPods 1.10.0(或更高版本)
- CocoaPods 生成
为您要开发的 pod
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果 CocoaPods 缓存已过时,您可能需要运行 pod repo update
命令,然后再运行 pod gen
命令。
注意:设置 --platforms
选项为 macos
或 tvos
以开发/测试这些平台。自 10.2 以来,Xcode 无法正确处理多平台 CocoaPods 工作空间。
Firestore 具有一个自包含的 Xcode 项目。请参阅 Firestore/README Markdown 文件。
针对 Catalyst 的开发
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 构建设置中勾选 Mac
- 在设置“签名与能力”选项卡中为应用签名
- 在项目管理器中点击 Pods
- 将签名添加到 iOS 主应用和单元测试目标
- 选择单元测试方案
- 运行它进行构建和测试
或者在每个目标中禁用签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,值为NO
Swift Package Manager
- 要启用测试方案:
./scripts/setup_spm_tests.sh
open Package.swift
或在 Finder 中双击Package.swift
- Xcode 将打开项目
- 选择要构建的库或要运行的测试套件的方案
- 通过选择方案与运行目标一起选择目标平台
添加新的 Firebase Pod
参阅 AddNewPod Markdown 文件。
管理头文件和导入
参阅 HeadersImports Markdown 文件。
代码格式化
为确保代码格式一致,在创建 pull request 之前运行脚本 ./scripts/check.sh。
G GitHub Actions 会验证任何代码更改是否以符合风格的方式进行。安装 clang-format
和 mint
brew install clang-format@13
brew install mint
运行单元测试
选择一个方案,然后按 Command-u 构建组件并运行其单元测试。
运行示例 App
要运行示例 App 和集成测试,您需要一个有效的 GoogleService-Info.plist
文件。Firebase Xcode 项目包含没有真实值的占位符 plist 文件,但可以用真实 plist 文件替换。要获取您自己的 GoogleService-Info.plist
文件
- 访问 Firebase 控制台
- 如果您还没有,创建一个新的 Firebase 项目
- 为每个您想测试的示例 App,创建一个具有与示例 App 相同的 bundle 标识符的新 Firebase App(例如,
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
覆盖率报告生成
请参考scripts/code_coverage_report/README Markdown文件。
特定组件说明
以下各节包含对那些组件的特殊说明。
Firebase身份验证
如果您正在特定的 Firebase身份验证开发中,请参考身份验证示例 README,获取构建和运行 FirebaseAuth pod 以及各种示例和测试的说明。
Firebase数据库
Firebase数据库集成测试可以针对本地运行的数据库模拟器或生产实例运行。
要在本地模拟器实例上运行,请在运行集成测试之前执行./scripts/run_database_emulator.sh start
。
要针对生产实例运行,提供有效的GoogleServices-Info.plist并将其复制到FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。在测试运行期间,您的安全规则必须设置为公开。
Firebase性能监控
如果您正在特定的 Firebase性能监控开发中,请参考性能 README 获取构建 SDK 的说明,以及性能 TestApp README 获取将性能集成到开发测试应用的说明。
Firebase Storage
要运行存储集成测试,请参阅FIRStorageIntegrationTests.m中的说明。
推送通知
推送通知只能发送到开发门户网站中特别配置的App ID。为了实际测试接收推送通知,你需要
- 将示例应用的捆绑标识符更改为你在Apple Developer账户中拥有的某个ID,并启用该App ID的推送通知。
- 你还需要将你的APNs提供者身份验证密钥或证书上传到Firebase控制台的项目设置 > 云消息 > [你的Firebase应用]。
- 确保你的iOS设备已添加到你的Apple Developer门户网站作为测试设备。
iOS模拟器
iOS模拟器不能注册远程通知,也不会接收推送通知。为了接收推送通知,你必须按照上面的步骤操作,并在物理设备上运行应用程序。
在Apple平台上使用Firebase进行构建
Firebase 8.9.0提供了对macOS、Catalyst和tvOS的官方beta支持。watchOS将继续得到社区支持。感谢社区贡献的许多多平台PR。
目前,Firebase的大多数产品在Apple平台上都可用。仍有一些差距,特别是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表。
watchOS
多亏了社区的贡献,许多Firebase SDK现在可以在watchOS上编译、运行单元测试并正常工作。请参阅《独立手表应用示例》。
请注意,Firebase不正式支持watchOS。虽然我们可以使用GitHub Actions捕获基本的单元测试问题,但SDK在watchOS上的某些更改可能不再按预期工作。如果您遇到这种情况,请提交问题。
在控制台中设置应用时,您可能会遇到一个提到类似“检查应用是否已与我们服务器通信”的步骤。这依赖于分析,而不会在watchOS上工作。请忽略该消息并继续,其余的SDK将按预期工作。
额外的Crashlytics注释
- watchOS支持有限。由于watchOS的限制,不会记录mac异常和信号崩溃。(SwiftUI中的崩溃生成为mac异常,因此也不会被记录。)
Combine
感谢社区的贡献,FirebaseCombineSwift 包含了对Apple Combine框架的支持。此模块目前正在开发中,尚未用于生产环境。更多详细信息,请参阅文档。
路线图
有关Firebase Apple SDK开源计划方向的更多信息,请参阅《路线图》。
贡献
有关贡献到Firebase Apple SDK的更多信息,请参阅《贡献》。
许可证
此存储库的内容受Apache许可证版本2.0的许可。
您对Firebase的使用受Firebase服务条款的约束。