Firebase Apple 开源开发
此存储库包含除 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 仓库。
背景
见 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'
通过 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仍然是进行开发的规范方式,但现在repo的大部分功能都支持使用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 Pods
有关详细信息,请参阅 AddNewPod Markdown 文件。
管理头文件和导入
有关管理标题和导入的信息,请参阅 HeadersImports Markdown 文件。
代码格式化
为确保代码格式一致,在创建拉取请求(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,了解如何构建和运行 FP_AUTH pod 以及各种样本和测试。
Firebase Database
Firebase Database 集成测试可以针对本地运行的数据库模拟器或生产实例运行。
要针对本地模拟器实例运行,请在运行集成测试之前调用 ./scripts/run_database_emulator.sh start
。
要针对生产实例运行,提供有效的 GoogleServices-Info.plist
并将其复制到 FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。在测试运行期间,您的安全规则必须设置为 公开。
Firebase 性能监控
有关 Firebase 性能监控的具体开发,请参阅关于构建 SDK 的性能 README,以及关于将性能集成到开发测试应用的性能 TestApp README。
Firebase 存储服务
要运行存储集成测试,请按照StorageIntegration.swift中的说明执行。
推送通知
推送通知只能发送到在开发者门户网站专门配置的 App ID。为了测试接收推送通知,您需要
- 将示例应用的包标识符更改为您在 Apple 开发者账户中拥有的内容,并启用该 App ID 的推送通知。
- 您还需要将您的 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,路径为 项目设置 > 云消息 > [您的 Firebase App]。请参见。
- 请确保您的 iOS 设备已被添加到 Apple 开发者门户网站中作为测试设备。
iOS 模拟器
iPhone 模拟器无法注册远程通知,因此不会接收推送通知。要接收推送通知,请按照以上步骤执行,并在实际设备上运行应用。
在苹果平台上使用 Firebase 构建应用程序
Firebase 8.9.0 版本引入了对 macOS、Catalyst 和 tvOS 的官方Beta支持。watchOS 继续由社区支持。感谢社区为多平台 Pull Request 做出的贡献。
目前,大部分 Firebase 产品已可在苹果平台上使用。仍然存在一些差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
得益于社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试并正常工作。请参考 独立手表应用程序示例。
请注意,watchOS 并非 Firebase 的官方支持平台。虽然我们可以通过 GitHub Actions 捕获基本单元测试问题,但 SDK 在 watchOS 上的某些变更可能导致无法按预期工作。如果您遇到此类问题,请提交 issue。
在控制台中的应用程序设置过程中,您可能遇到一个提到类似“检查应用程序是否已与我方服务器通信”的步骤。这依赖于 Analytics,在 watchOS 上无法正常工作。 您可以忽略该消息并继续操作,其余 SDK 将按预期工作。
额外的 Crashlytics 笔记
- watchOS 的支持有限。由于 watchOS 的限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃将以 mach 异常的形式产生,因此也不会被记录)
合并
感谢社区的贡献,FirebaseCombineSwift 包含了对 Apple Combine 框架的支持。此模块目前正在开发中,尚不支持在生产环境中使用。更多详细信息,请参阅 文档。
路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅 路线图。
贡献
有关如何为 Firebase Apple SDK 贡献的更多信息,请参阅 贡献。
许可
本存储库的内容受 Apache License 2.0 许可 的许可。
您对 Firebase 的使用受 Firebase 服务条款 的约束。