Firebase Apple开源开发
此仓库包含了除FirebaseAnalytics外所有Apple平台Firebase SDK的源代码。
Firebase是一个应用开发平台,提供帮助您构建、增长和盈利应用的工具。更多关于Firebase的信息可以在官方Firebase网站上找到。
安装
下面的小节提供了有关不同安装方法的详细信息。在可用的地方,建议使用具有Swift
后缀的库进行安装,以获得最佳体验。
标准的pod安装
有关标准pod安装的说明,请访问:https://firebase.google.com/docs/ios/setup
Swift 包管理器
Swift 包管理器支持的相关说明可以在 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'
要通过已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.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 开发
使用以下命令生成 .podspec 文件:pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 构建设置中勾选 Mac 选项
- 在设置中的“签名 & 能力”标签下对应用进行签名
- 在项目管理器中点击 Pods
- 将签名添加到 iOS 主应用和单元测试目标
- 选择 Unit-unit 模式
- 运行以构建和测试
或者,禁用每个目标的签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift 包管理器
- 要启用测试方案:运行
./scripts/setup_spm_tests.sh
- 在 Finder 中双击
Package.swift
或打开Package.swift
- Xcode 将打开项目
- 选择用于构建或运行测试套件的方案
- 通过选择运行目标与方案一起选择目标平台
添加新的 Firebase Pod
有关详细信息,请参阅 AddNewPod 文件。
管理头文件和导入
有关管理头文件和导入的更多信息,请参阅 HeadersImports 文件。
代码格式化
为确保代码格式一致,在创建拉取请求(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 项目
- 对于您想测试的每个示例应用,使用示例应用的 bundle identifier(例如,
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数据库集成测试可针对本地上运行的模拟器或针对生产实例运行。
要针对本地模拟器实例运行,请在运行集成测试之前,调用./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 模拟器
iOS 模拟器无法注册远程通知,也无法接收推送通知。要接收推送通知,请按照上述步骤操作,并在物理设备上运行应用程序。
在 Apple 平台上使用 Firebase 构建
Firebase 8.9.0 版本引入了对 macOS、Catalyst 和 tvOS 的官方预览版支持。watchOS 继续由社区支持。感谢社区的贡献者推动了众多多平台 pull request。
目前,Firebase 的多数产品可在 Apple 生态系统中使用。仍然存在一些缺口,尤其是在 watchOS 上。有关当前支持图的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
感谢社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试并工作。请参阅 独立的 Watch 应用示例。
请注意,watchOS 不是 Firebase 的官方支持平台。虽然我们可以通过 GitHub Actions 捕获基本单元测试问题,但仍可能出现 SDK 无法按预期在 watchOS 上运行的一些变化。如果您遇到这种情况,请提交问题。
在控制台中进行应用设置时,您可能会遇到一个提到“检查应用是否已与我们的服务器通信”的步骤。这依赖于分析,在 watchOS 上将无法使用。可以安全忽略该消息并继续,其余的 SDK 将按预期工作。
额外的 Crashlytics 说明
- watchOS 支持有限。由于 watchOS 限制,不记录 mach 异常和信号崩溃。(SwiftUI 中的崩溃作为 mach 异常生成,因此也不会记录)
Combine
感谢社区的贡献,FirebaseCombineSwift 包含了苹果 Combine 框架的支持。此模块目前正在开发中,尚不支持在生产环境中使用。更详细的信息请参阅文档。
路线图
请查看路线图了解更多关于Firebase Apple SDK开源计划和方向的细节。
贡献
请查看贡献了解更多如何贡献到Firebase Apple SDK的信息。
许可协议
本存储库的内容受Apache License, version 2.0许可。
您对Firebase的使用受Firebase服务条款的约束。