Firebase Apple 开放源码开发
这个仓库包含除了 FirebaseAnalytics 以外所有 Apple 平台 Firebase SDK 源代码。
Firebase 是一个应用开发平台,提供帮助您构建、增长和货币化您的应用的工具。更多有关 Firebase 的信息可以在官方 Firebase 网站上找到。
安装
以下各部分详细介绍了不同安装方法。如果可用,建议安装任何具有以 Swift
后缀结尾的库,以在用 Swift 编写应用时获得最佳体验。
标准 pod install
访问 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'
要使用检出的 firebase-ios-sdk 仓库版本访问 FirebaseMessaging,执行以下操作
pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk'
pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk'
Carthage (仅限iOS)
实验性Carthage分发的说明请见 Carthage。
在框架或库中使用Firebase
开发
要在此代码库中开发Firebase软件,请确保您至少拥有以下软件:
- Xcode 14.1(或更高版本)
CocoaPods仍然是开发的标准方式,但现在库的许多部分都支持使用Swift Package Manager进行开发。
CocoaPods
安装
- CocoaPods 1.10.0(或更高版本)
- CocoaPods 生成
针对您想要开发的库
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果CocoaPods缓存已过时,您可能需要在运行
pod gen
命令之前运行pod repo update
。注意:将
--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
- 为主机应用和单元测试目标添加签名
- 选择Unit-unit方案
- 运行以构建和测试
或者禁用每个目标的签名
- 转到构建设置选项卡
- 单击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift包管理器
- 要启用测试方案:运行
./scripts/setup_spm_tests.sh
- 在Finder中打开或双击
Package.swift
- Xcode将打开项目
- 选择要构建或运行的测试套件的方案
- 选择运行目标,包括与方案一起的运行平台
添加新的Firebase Pod
参见AddNewPod Markdown文件。
管理头文件和导入
参见HeadersImports Markdown文件。
代码格式化
为确保代码格式的一致性,在创建PR之前运行脚本./scripts/check.sh。
GitHub Actions将验证任何代码更改是否符合风格规范。安装clang-format
和mint
brew install clang-format@16
brew install mint
运行单元测试
选择方案,然后按Command-u键构建组件并运行其单元测试。
运行示例应用
为了运行示例应用和集成测试,你需要有效的GoogleService-Info.plist
文件。Firebase Xcode项目包含没有实际值的示例plist文件,但可以替换为真实plist文件。若要获取你自己的GoogleService-Info.plist
文件
- 转到Firebase控制台
- 创建新的Firebase项目,如果你还没有的话
- 对于你希望测试的每个示例应用,创建一个新的Firebase应用,其bundle identifier与示例应用相同(例如,
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
并将其添加到Xcode项目中。
生成覆盖率报告
参见scripts/code_coverage_report/README.md
Markdown文件。
特定组件说明
见下文部分,以获取有关这些组件的特殊说明。
Firebase Auth
如果您正在进行特定的 Firebase Auth 开发,请在 Auth 样例 README 中查看有关构建和运行 FirebaseAuth pod 以及各种样例和测试的说明。
Firebase Database
Firebase Database 集成测试可以针对本地运行的数据库模拟器或针对生产实例运行。
要针对本地模拟器实例运行,请在运行集成测试前先执行 ./scripts/run_database_emulator.sh start
。
要针对生产实例运行,请提供一个有效的 GoogleServices-Info.plist 文件并将其复制到 FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。在您的测试运行期间,您的安全规则必须设置为 公开。
Firebase 性能监控
如果您正在进行特定的 Firebase 性能监测开发,请参阅性能 README以获取有关构建 SDK 的说明,以及性能 TestApp README以获取有关将性能与开发测试应用集成的说明。
云存储
要运行存储集成测试,请遵循StorageIntegration.swift中的说明。
推送通知
推送通知只能发送到开发者门户中专门配置的 App ID。为了实际测试接收推送通知,您需要
- 将示例应用的捆绑标识符更改为您在 Apple 开发者账户中拥有的内容,并启用该 App ID 的推送通知。
- 您还需要将您的 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,具体操作为 项目设置 > 云消息 > [您的 Firebase 应用]。点击此处。
- 请确保您的 iOS 设备已添加到 Apple 开发者门户作为测试设备。
iOS 模拟器
iOS 模拟器无法注册远程通知,也不会接收推送通知。为了接收推送通知,您需要按照上述步骤操作,并在真实设备上运行应用。
在苹果平台上构建 Firebase
Firebase 8.9.0 版本引入了官方对 macOS、Catalyst 和 tvOS 的测试版支持。watchOS 继续得到社区支持。感谢社区的贡献,许多跨平台的 PR 都得到了支持。
目前,大多数 Firebase 产品已在苹果平台上可用。仍有少量差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表 链接。
watchOS
得益于社区的贡献,许多 Firebase SDK 现在已经在 watchOS 上编译、运行单元测试并正常工作。查看 独立的 Watch App 示例。
请注意,watchOS 由 Firebase 官方不支持。虽然我们可以通过 GitHub Actions 捕获基本的单元测试问题,但是 SDK 可能会有些变化,导致其在 watchOS 上不再按预期工作。如果您遇到这种情况,请 提交一个问题。
在控制台中的应用设置过程中,您可能会到达一个步骤提到类似于“检查应用是否已与我们的服务器通信”的内容。这依赖于 Analytics,且在 watchOS 上无法工作。可以安全忽略此消息并继续,其余的 SDK 将按预期工作。
Additional Crashlytics Notes
- watchOS 支持有限。由于 watchOS 的限制,记录了 mach 异常和信号崩溃。 (SwiftUI 中的崩溃会产生 mach 异常,因此不会记录)
合并
感谢社区贡献,FirebaseCombineSwift 包含对 Apple Combine 框架的支持。此模块目前处于开发中,尚不支持在生产环境中使用。更多详情请参阅文档。
路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅路线图。
贡献
有关为 Firebase Apple SDK 贡献的更多信息,请参阅贡献。
许可
本存储库的内容受Apache 许可协议,版本 2.0的许可。
您对 Firebase 的使用受Firebase 服务条款的约束。