Firebase Apple 开源开发
此仓库包含除 FirebaseAnalytics 以外的所有 Apple 平台 Firebase SDK 源代码。
Firebase 是一个应用程序开发平台,包含帮助您构建、增长和盈利应用程序的工具。有关 Firebase 的更多信息,请参阅官方 Firebase 网站。
安装
详情请参阅下文关于不同安装方法的部分。如果可用,建议安装任何带有 Swift
后缀的库,以获得在 Swift 中编写应用程序的最佳体验。
标准 pod 安装
请访问 https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关 Swift 包管理器支持的说明可在此处的 SwiftPackageManager 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'
要通过 checkout 版本的 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打包管理器进行开发。
CocoaPods
安装
- CocoaPods 1.10.0(或更高版本)
- CocoaPods生成
为您要开发的pods生成
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果CocoaPods缓存已过时,您可能需要在运行
注意:将 macos tvos
Firestore有一个自包含的Xcode项目。请参阅
针对Catalyst的开发
pod gen {名称}.podspec --local-sources=./ --auto-open --platforms=ios
- 在iOS构建设置中勾选Mac选项
- 在设置中的签名和功能选项卡中签名应用
- 在项目导航器中点击Pods
- 将签名添加到iOS主机应用和单元测试目标中
- 选择单元测试的单元方案
- 运行它进行构建和测试
或者禁用每个目标的签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift Package Manager
- 要启用测试方案:
./scripts/setup_spm_tests.sh
open Package.swift
或在Finder中双击Package.swift
- Xcode将打开项目
- 选择一个库的方案进行构建或选择要运行的测试套件的方案
- 通过选择方案和运行目标来选择目标平台
添加新的Firebase Pod
参见AddNewPod.md
Markdown文件。
管理头文件和导入
参见HeadersImports.md
Markdown文件。
代码格式化
为了保证代码格式的一致性,在创建 Pull Request 之前,请运行脚本 ./scripts/check.sh。
GitHub Actions 将会验证任何代码更改是否遵循样式规范。安装 clang-format
和 mint
。
brew install clang-format@16
brew install mint
运行单元测试
选择一个 scheme,然后按 Command-u 编译组件并运行其单元测试。
运行示例应用
为了运行示例应用程序和集成测试,您需要有有效的 GoogleService-Info.plist
文件。Firebase Xcode 项目包含没有真实值的示例 plist 文件,但可以被具有真实值的 plist 文件替换。要获取您自己的 GoogleService-Info.plist
文件
- 访问 Firebase 控制台
- 如果还没有,创建一个新的 Firebase 项目
- 对于您想要测试的每个示例应用程序,创建一个新的 Firebase 应用,并使用与示例应用程序捆绑标识符(例如
com.google.Database-Example
)相匹配的 Firebase 应用 - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
生成覆盖率报告
参见 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
请查阅下文,了解对各个组件的特殊说明。
Firebase认证
如果您在进行特定的Firebase认证开发,请查阅认证示例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文件。
Firebase存储
要运行存储集成测试,请按照StorageIntegration.swift文件中的说明操作。
推送通知
推送通知只能发送到开发者门户中特别指定的App ID。为了实际测试接收推送通知,您需要
- 将示例应用程序的包标识符更改为您在Apple Developer账户中拥有的某个名称,并启用该App ID的推送通知。
- 您还需要将您的APNs提供者身份验证密钥或证书上传到Firebase控制台,具体操作为:项目设置 > 云消息 > [您的Firebase应用程序]处的上传APNs提供者身份验证密钥或证书。
- 确保您的iOS设备已添加到您的Apple Developer门户作为测试设备。
iOS模拟器
iOS模拟器无法注册远程通知,也不会接收推送通知。为了接收推送通知,您需要按照上述步骤操作,并在物理设备上运行应用程序。
在苹果平台上使用 Firebase 构建
Firebase 8.9.0 引入了对 macOS、Catalyst 和 tvOS 的官方 beta 支持。watchOS 继续获得社区支持。感谢社区对许多多平台 PR 的贡献。
目前,大多数 Firebase 产品都可用在苹果平台上。仍有一些差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
感谢社区贡献,许多 Firebase SDK 现在已成功编译、运行单元测试,并在 watchOS 上工作。请参阅 独立的 Watch 应用样本。
请注意,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 License 2.0版本许可。
您使用 Firebase 的行为受Firebase 服务条款约束。