Firebase Apple 开源开发
此仓库包含除 FirebaseAnalytics 以外的所有 Apple 平台 Firebase SDK 源代码。
Firebase 是一个应用程序开发平台,它提供了帮助您构建、增长和 monetize 您的应用程序的工具。有关 Firebase 的更多信息,请参阅 官方 Firebase 网站。
安装
请查看以下子部分以了解不同安装方法的详细信息。在可用的情况下,建议安装任何具有 Swift
后缀的库,以在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
访问 https://firebase.google.com/docs/ios/setup。
Swift Package Manager
有关对Swift Package Manager的支持说明,请参见SwiftPackageManager Markdown 文件。
从GitHub安装的说明
这些说明可用于访问其他分支、标签或提交的Firebase仓库。
背景
请参阅Podfile 语法参考,了解有关覆盖pods源位置的说明和选项。
访问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'
仅限 iOS 的 Carthage
实验性 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 {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中勾选Mac框
- 在设置中“签名和功能”选项卡下签名App
- 在项目管理器中点击Pods
- 将签名添加到iOS主机应用程序和单元测试目标
- 选择Unit单元方案
- 运行以构建和测试
或者在每个目标中禁用签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户自定义设置
- 添加具有值为
NO
的CODE_SIGNING_REQUIRED
设置
Swift Package Manager
- 要启用测试方案:运行
./scripts/setup_spm_tests.sh
- 打开
Package.swift
或在Finder中双击Package.swift
- Xcode 会打开项目
- 选择一个库构建方案或要运行的测试套件
- 选择目标平台,通过选择运行目的和方案一起选择
添加新的Firebase Pod
参考 AddNewPod Markdown 文件。
管理头文件和导入
参考 HeadersImports Markdown 文件。
代码格式化
为确保代码格式一致性,在创建 pull request 之前,运行脚本 ./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 项目
- 对于您想要测试的每个示例应用,使用示例应用的 bundle 标识符(例如,
com.google.Database-Example
)创建一个新的 Firebase 应用 - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
代码覆盖率报告生成
参见 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
请在下面章节中查找针对那些组件的特殊说明。
Firebase Auth
如果您正在开发特定的 Firebase Auth,请参阅Auth Sample 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 存储解决方案
要运行存储集成测试,请按照StorageIntegration.swift中的说明操作。
推送通知
推送通知只能发送到开发门户网站中专门制定的 App ID。要实际测试接收推送通知,您需要
- 将示例应用的捆绑标识符更改为您在 Apple 开发者账户中拥有的标识符,并启用该 App ID 进行推送通知。
- 您还需要将 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,请转到“项目设置 > 云消息 > [您的 Firebase 应用]”。
- 确保您的 iOS 设备已添加到 Apple 开发者门户网站作为测试设备。
iOS 模拟器
iPhone 模拟器无法注册远程通知,也不会接收推送通知。要接收推送通知,您必须遵循上述步骤并在物理设备上运行应用。
在苹果平台上构建 Firebase
firestore 8.9.0引入了对macOS、Catalyst和tvOS的官方测试版支持。watchOS继续由社区支持。感谢社区贡献的许多多平台Pull Requests。
到目前为止,Firebase的大多数产品在Apple平台上都可用。仍然有一些差距,尤其是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表。
watchOS
感谢社区的贡献,现在许多Firebase SDK在某些情况下可在watchOS上编译、运行单元测试并且正常运行。请查看独立手表应用示例。
请注意,watchOS不是Firebase的官方支持平台。虽然我们可以通过GitHub Actions捕捉到基本的单元测试问题,但SDK在watchOS上的某些变化可能导致其不再像预期那样工作。如果你遇到这种情况,请提交一个issue。
在控制台中设置应用程序时,你可能会遇到提到类似“检查应用是否与我们的服务器通信过”的步骤。这依赖于分析功能,在watchOS上无法使用。**可以忽略该消息并继续**,其他SDK将按预期工作。
额外的Crashlytics说明
- watchOS的支持有限。由于watchOS的限制,mac异常和信号崩溃无法记录。(SwiftUI中的崩溃记录为mac异常,因此无法记录)
Combine
感谢社区的贡献,FirebaseCombineSwift 包含了对Apple的Combine框架的支持。此模块目前正在开发中,还不支持在生产环境中使用。更多详细信息,请参阅文档。
路线图
查看路线图,了解Firebase Apple SDK开源计划和方向。
贡献
查看贡献了解如何为Firebase Apple SDK做出贡献。
许可
此存储库的内容遵循Apache License, version 2.0许可证。
您使用Firebase的行为受Firebase服务条款的约束。