Firebase Apple 开源开发
此存储库包含所有 Apple 平台 Firebase SDK 的源代码,除了 FirebaseAnalytics。
Firebase 是一个应用程序开发平台,提供工具来帮助您创建、扩展和货币化您的应用程序。有关 Firebase 的更多信息,请访问 官方 Firebase 网站。
安装
请参阅以下子部分以了解不同安装方法的具体信息。如果可用,建议安装以 Swift
为后缀的库,以便在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
有关标准 pod 安装的说明,请访问:https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关支持 Swift 包管理器的说明,可以在 SwiftPackageManager.md 文件中找到。
从 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缓存已过时,您可能需要在执行
注意:将--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 主机和单元测试目标添加签名
- 选择 Unit-unit 规划
- 运行它来构建和测试
或者,在每个目标中禁用签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,值为NO
Swift Package Manager
- 要启用测试规划:
./scripts/setup_spm_tests.sh
- 在 Finder 中打开
Package.swift
或双击Package.swift
- Xcode 将打开项目
- 选择要构建或运行测试套件的库规划
- 通过选择规划一起运行目标,选择目标平台
添加新 Firebase Pod
有关详细信息,请参阅 AddNewPod Markdown 文件
管理头文件和导入
有关管理头文件和导入信息,请参阅 HeadersImports Markdown 文件。
代码格式化
为确保代码格式统一,在创建拉取请求(Pull Request, 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 应用,使用示例应用的包标识符(例如,
com.google.Database-Example
) - 下载生成的
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
。在测试运行期间,您的安全规则必须设置为 public。
Firebase 性能监控
有关特定的 Firebase 性能监控开发,请参阅 性能 README 以获取构建 SDK 的说明,以及 性能 TestApp README 以获取将性能集成到开发测试应用中的说明。
Firebase 存储
要运行存储集成测试,请按照 StorageIntegration.swift 中的说明操作。
推送通知
推送通知只能发送到开发者门户中专门配置的应用程序 ID。为了测试接收推送通知,您需要
- 将示例应用的包标识符更改为您在 Apple 开发者账户中拥有的标识符,并启用该应用程序 ID 以发送推送通知。
- 您还需要将 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,位置为 项目设置 > 云消息 > [您的 Firebase 应用]。
- 请确保您的 iOS 设备已添加到 Apple 开发者门户中作为测试设备。
iOS 模拟器
iOS 模拟器无法注册远程通知,也不会收到推送通知。要接收推送通知,请按照上面的步骤操作,并在物理设备上运行应用。
在苹果平台中使用 Firebase 构建
Firebase 8.9.0 版本引入了对 macOS、Catalyst 和 tvOS 的官方 beta 支持。watchOS 继续得到社区支持。感谢社区在多平台 PR 中的贡献。
目前,大多数 Firebase 产品可在 Apple 平台上使用。还有一些差距,尤其在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表:链接。
watchOS
得益于社区的贡献,许多 Firebase SDK 现在能够在 watchOS 上编译、执行单元测试并正常工作。请参阅 独立的 Watch App 示例。
请注意,watchOS 不是 Firebase 的官方支持平台。虽然我们可以在 GitHub Actions 中捕捉到基本的单元测试问题,但 SDK 在 watchOS 上的某些更改可能不再按预期工作。如果您遇到这种情况,请在 提交问题。
在控制台中设置应用程序时,您可能会到达一个步骤,其中提到类似于“检查应用程序是否与我们的服务器进行了通信”的内容。这依赖于 Analytics,在 watchOS 上将无法工作。请 忽略此消息并继续操作,其他 SDK 将按预期工作。
附加 Crashlytics 说明
- watchOS 的支持有限。由于 watchOS 的限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃将生成 mach 异常,因此也不会被记录)
结合
感谢社区贡献,FirebaseCombineSwift 包含了对 Apple Combine 框架的支持。此模块目前正在开发中,尚未支持在生产环境中使用。有关更多详细信息,请参阅文档。
路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请查看路线图。
参与贡献
有关向 Firebase Apple SDK 贡献的更多信息,请参阅参与贡献。
许可证
本存储库内容受Apache 许可证,版本 2.0许可。
您对 Firebase 的使用受Firebase 服务条款约束。