Firebase Apple 开源开发
此存储库包含所有用于Apple平台的Firebase SDK的源代码,除了FirebaseAnalytics。
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'
通过 FirebaseMessaging 的 git 仓库的检出版本来访问 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项目。请参阅
针对Catalyst的开发
运行命令:pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中勾选Mac选项
- 在设置中签名App,在签名与能力选项卡中操作
- 在项目管理器中点击Pods
- 将签名添加到iOS主机应用和单元测试目标
- 选择单元测试的单元方案
- 运行它以构建和测试
或者,在每个目标中禁用签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 将
CODE_SIGNING_REQUIRED
设置添加为值NO
Swift包管理器
- 要启用测试方案:执行
./scripts/setup_spm_tests.sh
- 在Finder中打开或双击
Package.swift
- Xcode将打开项目
- 选择一个库构建或测试套件运行的方案
- 通过选择运行目标及方案选择目标平台
添加新的Firebase Pod
有关详细信息,请参阅AddNewPod.md
Markdown文件。
管理头文件和导入
有关管理头文件和导入的信息,请参阅HeadersImports.md
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项目
- 为每个要测试的示例应用程序,使用示例应用程序的包标识符(例如,
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 Database 集成测试可以对本机运行的数据库模拟器或生产实例进行测试。
要使用本地模拟器实例进行测试,在运行集成测试之前,请调用 ./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的官方Beta支持。watchOS继续由社区支持。感谢社区为许多多平台PR所做的贡献。
目前,Firebase的大多数产品在Apple平台上都可用。还存在着一些差距,尤其是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表(链接)。
watchOS
由于 community 的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试和工作。请参阅独立手表应用程序示例。
请注意,watchOS 不是 Firebase 的官方支持平台。虽然我们可以通过 GitHub Actions 捕获基本的单元测试问题,但仍可能出现 SDK 在 watchOS 上不再按预期工作的情况。如果您遇到这种情况,请提交一个问题。
在控制台设置应用时,您可能会进入一个提到类似于“检查应用是否与我们的服务器通信”的步骤。这依赖于分析,并且在 watchOS 上无法正常工作。可以安全地忽略消息继续操作,其余的 SDK 将按预期工作。
额外的 Crashlytics 注意事项
- watchOS 的支持有限。由于 watchOS 限制,无法记录 mach 异常和信号崩溃。(在 SwiftUI 中生成的崩溃将作为 mach 异常,因此也不会被记录)
合并
感谢社区的贡献,FirebaseCombineSwift 包含了苹果 Combine 框架的支持。此模块目前正在开发中,尚不支持在生产环境中使用。更多详情,请参阅 文档。
路线图
有关 Firebase 苹果 SDK 开源计划和方向的更多信息,请参阅 路线图。
贡献
有关向 Firebase 苹果 SDK 贡献的信息,请参阅 贡献。
许可
本仓库的内容使用 Apache 许可证 2.0 版本 许可。
您对 Firebase 的使用受 Firebase 服务条款 的约束。