Firebase 苹果开源开发
此仓库包含所有(除非 FirebaseAnalytics)Apple 平台的 Firebase SDK 源代码。
Firebase 是一个应用开发平台,提供帮助你构建、扩展和盈利应用的各种工具。有关 Firebase 的更多信息,可以在官方 Firebase 网站上找到。
安装
下面的小节详细介绍了不同安装方法的信息。如果可用,建议安装任何带有 Swift
后缀的库,以在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
有关标准 pod 安装的说明,请访问:https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关 Swift 包管理器支持的说明可以在 SwiftPackageManager.md Markdown 文件中找到。
从 GitHub 安装
以下说明可用于访问其他分支、标签或提交的 Firebase 仓库。
背景
有关覆盖 pod 源位置的说明和选项,请参阅 Podfile 语法参考。
访问 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.md。
从框架或库中使用 Firebase
关于从框架或库中使用 Firebase 的详细信息,请参阅 firebase_in_libraries.md。
开发
要在此仓库中开发 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
打开Package.swift
或双击Finder中的Package.swift
- 将打开Xcode项目
- 选择要构建或测试的库的方案
- 通过选择计划与运行目标,选择目标平台
添加新的Firebase Pod
有关详细信息,请参阅AddNewPod Markdown文件
管理头文件和导入
有关管理头文件和导入的信息,请参阅HeadersImports Markdown文件
代码格式化
为了确保代码格式一致,在创建拉取请求(PR)之前运行./scripts/check.sh脚本
GitHub Actions将验证任何代码更改是否符合样式规范。安装clang-format
和mint
brew install clang-format@17
brew install mint
运行单元测试
选择方案并按下Command-u构建组件及其单元测试
运行示例应用
要运行示例应用和集成测试,您需要一个有效的GoogleService-Info.plist
文件。Firebase Xcode项目包含没有实际值的占位符plist文件,但可以用实际plist文件替换。要获取您自己的GoogleService-Info.plist
文件
- 访问Firebase控制台
- 如果您还没有,创建一个新的Firebase项目
- 对于您想要测试的每个示例应用,创建一个新的有样本应用包标识符的Firebase应用(例如,
com.google.Database-Example
) - 下载结果
GoogleService-Info.plist
并将其添加到Xcode项目中
覆盖率报告生成
有关生成覆盖率报告的说明,请参阅scripts/code_coverage_report/README Markdown文件
特定组件说明
请参阅以下部分中有关那些组件的任何特殊说明
Firebase身份验证
有关Firebase身份验证开发的详细信息,请参阅Auth Sample 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以获取将性能与dev测试应用集成的说明
Firebase存储
要运行存储集成测试,请按照StorageIntegration.swift中的说明操作
推送通知
推送通知只能发送到开发门户中特别配置的App ID。为了测试接收推送通知,您需要
- 将示例应用的bundle标识符更改为您在Apple Developer账户中拥有的内容,并为此App ID启用推送通知。
- 您还需要将您的APNs提供程序身份验证密钥或证书上传到Firebase控制台,具体位置为:项目设置 > 云消息 > [您的Firebase应用]。
- 请确保您的iOS设备已添加到您的Apple Developer门户中作为测试设备。
苹果模拟器
苹果模拟器无法注册远程通知,也不会接受推送通知。为了接受推送通知,请遵循上述步骤,并在物理设备上运行应用。
在苹果平台上使用Firebase构建
Firebase 8.9.0引入了对macOS、Catalyst和tvOS的官方beta支持。watchOS继续由社区支持。感谢社区贡献了众多多平台PR。
目前,大多数Firebase产品可在苹果平台上使用。还有一些差距,特别是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表。
watchOS
感谢社区的贡献,许多Firebase SDK现在可以在watchOS上进行编译、运行单元测试和工作。请参阅独立手表应用示例。
请注意,watchOS不是Firebase的官方支持。虽然我们可以通过GitHub Actions捕获基本单元测试问题,但是SDK在watchOS上可能无法按预期工作。如果您遇到这种情况,请提交问题。
在控制台中设置应用时,您可能会到达一个提到类似“检查应用是否已与我们的服务器通信”的步骤。这依赖于分析,在watchOS上无法工作。可以安全忽略该消息并继续,其余的SDK将按预期工作。
额外的Crashlytics说明
- watchOS支持有限。由于watchOS的限制,mach异常和信号崩溃不会被记录。(SwiftUI中的崩溃生成为mach异常,因此也不会被记录)
Combine
感谢社区的贡献,FirebaseCombineSwift包含了对Apple的Combine框架的支持。此模块目前正在开发中,并且尚不支持在生产环境中使用。有关更多详细信息,请参阅文档。
路线图
有关Firebase苹果SDK开源计划和方向的信息,请参阅路线图。
贡献
有关向Firebase苹果SDK贡献更多信息,请参阅贡献。
许可
本存储库的内容受Apache许可证,版本2.0的许可。
您对Firebase的使用受Firebase服务服务条款的约束。