Firebase Apple 开源开发
此仓库包含除 FirebaseAnalytics 以外所有 Apple 平台 Firebase SDK 源代码。
Firebase 是一个应用开发平台,它提供了构建、扩展和盈利的辅助工具。更多有关 Firebase 的信息可以在 官方 Firebase 网站 上找到。
安装
下面的小节详细介绍了不同安装方法。在可用的情况下,建议安装任何以 Swift
后缀结尾的库,以在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
前往 https://firebase.google.com/docs/ios/setup。
Swift 包管理器
关于 Swift 包管理器支持的说明可以在这里找到:[Swift 包管理器](https://swift.org/package-manager/),以及 [SwiftPackageManager.md](SwiftPackageManager.md)Markdown 文件。
从 GitHub 安装
以下说明可用于访问其他分支、标签或提交的 Firebase 仓库。
背景
请参阅 Podfile 语法参考,了解有关覆盖 pod 源位置的说明和选项。
访问 Firebase 源快照
所有官方版本都已在此仓库中标记,并通过 CocoaPods 提供。要访问本地源快照或未发布的分支,请使用以下类似的 Podfile 指令:
要通过分支访问 Firestore
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
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 {此处填写名称}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中勾选Mac框
- 在设置签署与功能标签页中签署App
- 在项目导航器中点击Pods
- 为iOS主机应用和单元测试目标添加签署
- 选择单元测试单元方案
- 运行以构建和测试
或者在每个目标中禁用签署
- 转到构建设置标签页
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift包管理器
- 要启用测试方案:
./scripts/setup_spm_tests.sh
- 在Finder中打开
Package.swift
或双击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 项目
- 对于您想要测试的每个示例应用程序,使用示例应用程序的捆绑标识符(例如
com.google.Database-Example
)创建一个新的 Firebase 应用 - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中
生成覆盖率报告
请参阅 scripts/code_coverage_report/README 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。
Firebase Storage
要运行存储集成测试,请按照StorageIntegration.swift中的说明操作。
推送通知
推送通知只能发送到开发者门户中特殊配置的App ID。为了实际测试接收推送通知,您需要
- 将示例应用的bundle标识符更改为您在Apple开发者账户中拥有的标识符,并启用该App ID的推送通知。
- 您还需要将您的APNs提供者身份验证密钥或证书上传到Firebase控制台,具体操作是在项目设置 > 云消息 > [您的Firebase应用]。
- 确保您的iOS设备已添加到Apple开发者门户作为测试设备。
iOS模拟器
iOS模拟器无法注册远程通知,也不会接收推送通知。为了接收推送通知,您必须按照上述步骤操作并在物理设备上运行该应用。
在苹果平台上使用 Firebase 构建
Firebasae 8.9.0 引入了对 macOS、Catalyst 和 tvOS 的官方测试支持。watchOS 继续由社区支持。感谢社区为许多多平台 PR 做出贡献。
截至目前,Firebase 大多数产品在苹果平台上都有可用。仍有一些差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表 (链接)。
watchOS
感谢社区贡献,许多 Firebase SDK 现在已在 watchOS 上编译、运行单元测试并且工作正常。请参阅 独立的 Watch App 示例。
请注意,Firebase 并未官方支持 watchOS。虽然我们可以使用 GitHub Actions 捕捉基本的单元测试问题,但在某些情况下 SDK 不再按预期在 watchOS 上工作。如果您遇到这种情况,请提交一个问题。
在控制台设置应用程序时,您可能会进入一个步骤,提到类似“检查应用程序是否与我们服务器通信”的内容。这依赖于分析,在 watchOS 上将无法正常工作。可以安全忽略消息并继续,其余的 SDK 仍将按预期工作。
关于附加 Crashlytics 的说明
- watchOS 支持有限。由于 watchOS 的限制,macOS 异常和信号崩溃无法记录。(SwiftUI 中的崩溃作为 macOS 异常生成,因此不会记录)
合并
感谢社区贡献,FirebaseCombineSwift 包含了 Apple 的 Combine 框架支持。此模块目前正在开发中,尚不支持在生产环境中使用。更多详情,请参阅 文档。
路线图
有关 Firebase Apple SDK 开源计划及方向的更多信息,请参阅 路线图。
贡献
有关为 Firebase Apple SDK 做出贡献的更多信息,请参阅 贡献。
许可证
本仓库的内容受 Apache 许可证版本 2.0 许可。
您对 Firebase 的使用受 Firebase 服务条款 的约束。