Firebase Apple开源开发
此仓库包含除了FirebaseAnalytics和FirebaseML之外的所有Apple平台Firebase SDK源代码。
Firebase是一个应用开发平台,它提供了帮助您构建、增长并货币化应用的工具。更多关于Firebase的信息可以在https://firebase.google.com上找到。
仓库还包括GoogleUtilities和GoogleDataTransport的源代码,这些是Firebase和其他Google产品所使用的实用工具。
安装
以下小节详细介绍了不同的安装方法。
标准pod安装
访问https://firebase.google.com/docs/ios/setup。如果您有搭载Apple硅芯片的新Mac电脑,请参阅以下说明。
Swift 包管理器(Beta)
有关支持 Swift 包管理器(Beta)的说明,请查阅 Swift 包管理器 的文档,或在 SwiftPackageManager.md 中找到。
从 GitHub 安装
以下说明可用于访问 Firebase 仓库的其他分支、标记或提交。
背景
有关覆盖 pod 源位置的说明和选项,请参阅 Podfile 语法参考。
访问 Firebase 源快照
所有官方版本都标记在此存储库中,并通过 CocoaPods 提供。要访问本地源快照或尚未发布的分支,请使用如下 Podfile 指令
要通过分支访问 FirebaseFirestore
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。如果您有一台配备 Apple Silicon 芯片的全新 Mac,请查看这些说明 这些说明。
从框架或库中使用Firebase
开发
要在此存储库中开发Firebase软件,请确保您至少有以下软件
- Xcode 12.0(或更高版本)
CocoaPods仍然是开发的标准方式,但现在存储库中的大部分都支持使用Swift Package Manager进行开发。
CocoaPods
安装
- CocoaPods 1.10.0(或更高版本)
- CocoaPods生成
对于您想要开发的pods
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果CocoaPods缓存已过时,您可能需要在执行
注意:将--platforms
选项设置为macos
或tvos
以开发/测试这些平台。自10.2以来,Xcode无法正确处理多平台CocoaPods工作空间。
Firestore有一个自包含的Xcode项目。请参阅
Firestore/README.md
。为Catalyst开发
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中选中Mac框
- 在设置签名和功能选项卡中为应用签名
- 在项目管理者中点击Pods
- 为iOS主机应用和单元测试目标添加签名
- 选择单元单元方案
- 运行它来构建和测试
或者禁用每个目标的签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加具有
CODE_SIGNING_REQUIRED
设置的NO
值
Swift 包管理器
- 在 Xcode 中打开
open Package.swift
或在 Finder 中双击Package.swift
。 - Xcode 将打开项目
- 选择一个库构建方案或要运行的测试套件
- 通过选择运行目的地和方案来选择目标平台
添加新的 Firebase Pod
参见 AddNewPod.md。
管理头文件和导入
代码格式化
为了确保代码格式一致性,在创建拉取请求之前,运行脚本 ./scripts/check.sh。
GitHub Actions 将验证任何代码更改都符合规定风格。安装 clang-format
和 mint
brew install clang-format@11
brew install mint
运行单元测试
选择一个方案,然后按 Command-u 构建组件并运行其单元测试。
运行示例应用
为了运行示例应用和集成测试,您需要一个有效的GoogleService-Info.plist
文件。Firebase Xcode项目包含没有真实值的占位符plist文件,但可以被真实plist文件替换。要获取自己的GoogleService-Info.plist
文件:
- 访问Firebase控制台。
- 如果您还没有,创建一个新的Firebase项目。
- 对于您想要测试的每个示例应用,使用示例应用的bundle标识符(例如
com.google.Database-Example
)创建一个新的Firebase应用。 - 下载生成的
GoogleService-Info.plist
并将其添加到Xcode项目中。
覆盖率报告生成
参见scripts/code_coverage_report/README.md。
特定组件说明
关于这些组件的任何特殊说明,请参阅下面的章节。
Firebase身份验证
如果您正在进行特定的Firebase身份验证开发,请参阅Auth示例README以获取构建和运行FirebaseAuth pod以及各种示例和测试的说明。
Firebase数据库
可以对本地运行的数据库模拟器或生产实例运行Firebase数据库集成测试。
要针对本地仿真器实例运行,在运行集成测试之前,请执行 ./scripts/run_database_emulator.sh start
命令。
要针对生产实例运行,提供有效的GoogleServices-Info.plist并将其复制到 FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。在测试运行期间,您的安全规则必须设置为 公开。
萤火虫性能监控
如果您正在开发特定的萤火虫性能监控系统,请参阅 性能 README,了解如何构建 SDK,以及如何将性能集成到开发测试应用程序的 性能 TestApp README。
萤火虫存储
要运行存储集成测试,请按照 FIRStorageIntegrationTests.m 中的说明操作。
推送通知
推送通知只能发送到开发者在开发者门户中特别配置的应用程序ID。为了实际测试接收推送通知,您需要
- 将示例应用程序的包标识符更改为您在Apple开发者账户中拥有的标识符,并启用该应用程序ID的推送通知。
- 您还需要将您的APNs提供程序身份验证密钥或证书上传到Firebase控制台 项目设置 > 云消息 > [您的Firebase应用程序]。
- 确保您的iOS设备已被添加到您的Apple开发者门户作为测试设备。
iOS仿真器
iOS仿真器无法注册远程通知,且不会接收推送通知。为了接收推送通知,您必须按照上述步骤操作,并在实际设备上运行应用程序。
社区支持的努力
我们看到了许多人对于改进Firebase SDKs的极大兴趣和贡献,我们非常感激!我们希望能够让尽可能多的开发者能够使用Firebase并参与Firebase社区。
tvOS, macOS, watchOS和Catalyst
多亏了社区的贡献,许多Firebase SDK现在可以在tvOS、macOS、watchOS和Catalyst上编译、运行单元测试并工作。
对于tvOS,请参阅示例。对于watchOS,目前只有Messaging、Storage和Crashlytics(及其依赖项)有有限的支持。请参阅独立手表应用示例。
请注意,macOS、tvOS、watchOS和Catalyst不是Firebase的官方支持项目,此仓库主要针对iOS进行积极开发。虽然我们可以通过GitHub Actions捕获基本的单元测试问题,但仍可能有一些更改,导致SDK在macOS、tvOS或watchOS上不再按预期工作。如果你遇到这种情况,请提交问题。
在控制台中设置应用时,你可能到达一个提及类似“检查应用是否已与我们的服务器通信”的步骤。这依赖于Analytics,在macOS/tvOS/watchOS/Catalyst上无法工作。请忽略该消息并继续,其他SDK将按预期工作。
为了安装,将以下子集添加到Podfile
pod 'Firebase/ABTesting'
pod 'Firebase/Auth' # Limited watchOS support
pod 'Firebase/Crashlytics'
pod 'Firebase/Database' # No watchOS support yet
pod 'Firebase/Firestore' # No watchOS support yet
pod 'Firebase/Functions' # No watchOS support yet
pod 'Firebase/Messaging'
pod 'Firebase/Performance' # No macOS, tvOS, watchOS, and Catalyst support yet
pod 'Firebase/RemoteConfig'
pod 'Firebase/Storage'
关于Catalyst的附加说明
- FirebaseAuth和FirebaseMessaging需要将构建设置中的
Keychain Sharing Capability
添加。 - FirebaseFirestore需要签名gRPC Resource目标。
关于Crashlytics的附加说明
- watchOS 支持有限。由于 watchOS 限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃会生成 mach 异常,因此也不会被记录)
路线图
有关 Firebase iOS SDK 开源计划和方向的更多信息,请参阅 路线图。
贡献
有关为 Firebase iOS SDK 做贡献的更多信息,请参阅 贡献。
许可
此存储库的内容受 Apache 许可证第 2.0 版许可。
您使用 Firebase 受 Firebase 服务条款管辖。