Firebase Apple Open Source Development
此仓库包含除 FirebaseAnalytics 以外的所有 Apple 平台 Firebase SDK 源代码。
Firebase 是一个应用开发平台,提供帮助你构建、扩展和盈利应用的工具。Firebase 的更多信息可以在 官方 Firebase 网站 上找到。
安装
以下子部分提供了不同安装方法的详细信息。如果可用,建议安装任何带有 Swift
后缀的库,以获得在 Swift 中编写应用程序的最佳体验。
标准的 Pod 安装
前往https://firebase.google.com/docs/ios/setup。
Swift 包管理器
关于 Swift 包管理器支持的说明和选项,请参阅 SwiftPackageManager 高亮显示的 Markdown 文件。
从 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中。
从框架或库中使用Firebase
开发
要在本存储库中开发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开发
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中勾选Mac框
- 在设置签名的“签名和权限“选项卡中签署应用
- 在项目浏览器中点击Pods
- 将签名添加到iOS主机应用和单元测试目标
- 选择单元测试方案
- 运行它以构建和测试
或者为每个目标禁用签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
COLOR_SIGNING_REQUIRED
设置,其值为NO
Swift Package Manager
- 要启用测试方案,请运行
./scripts/setup_spm_tests.sh
- 在Finder中打开
Package.swift
或双击Finder中的Package.swift
- Xcode将打开项目
- 选择要构建或运行测试套件的库方案
- 通过选择运行目标与方案一起选择目标平台
添加新的Firebase Pod
请参阅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身份认证
如果你正在进行特定的Firebase身份认证开发,请参阅 身份认证示例 README 了解有关构建和运行Firebase身份认证 pod以及各种示例和测试的说明。
Firebase数据库
Firebase数据库集成测试可针对本地运行的数据库模拟器或针对生产实例运行。
针对本地模拟器实例运行时,在运行集成测试之前,请先执行 ./scripts/run_database_emulator.sh start
。
针对生产实例运行时,请提供一个有效的GoogleServices-Info.plist文件,并将其复制到 FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。在测试运行期间,您的安全规则必须设置为 公开。
Firebase性能监控
如果您正在进行特定的Firebase性能监控开发,请参阅性能README以获取构建SDK的说明,以及性能TestApp README以获取将性能集成到dev测试应用的说明。
Firebase存储
要运行存储集成测试,请按照StorageIntegration.swift中的说明进行操作。
推送通知
推送通知只能发送到开发门户中的特定配置的App ID。为了实际测试接收推送通知,您需要
- 将示例应用的bundle标识符更改为您在Apple Developer账户中拥有的名称,并启用该App ID的推送通知。
- 您还需要将APNs提供商身份验证密钥或证书上传到Firebase控制台,位置为项目设置 > 云消息 > [您的Firebase应用]。
- 确保将您的iOS设备添加到Apple Developer门户作为测试设备。
iOS模拟器
iOS模拟器无法注册远程通知,因此不会接收到推送通知。要接收推送通知,您必须按照上述步骤操作,并在物理设备上运行应用程序。
在Apple平台上使用Firebase进行构建
Firebase 8.9.0引入了对macOS、Catalyst和tvOS的官方测试版支持。watchOS继续由社区支持。感谢社区对许多多平台PR的贡献。
目前,Firebase的大多数产品在Apple平台上都可用。仍有一些差距,尤其是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表(链接)。
watchOS
感谢社区的贡献,许多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 服务条款的约束。