Firebase Apple Open Source Development
此仓库包含除FirebaseAnalytics之外的所有Apple平台Firebase SDK的源代码。
Firebase是一个应用开发平台,提供帮助您构建、成长和盈利的应用程序的工具。更多关于Firebase的信息可以在官方Firebase网站上找到。
安装
有关不同安装方法的详细信息,请参阅下面的子部分。如有可用,建议使用带有Swift
后缀的库进行安装,以获得在Swift中编写应用程序时最佳体验。
标准pod安装
关于标准pod安装的说明,请访问:https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关 Swift 包管理器 的支持说明可以在此处找到:[SwiftPackageManager.md]。
从 GitHub 安装
这些说明可用于访问Firebase仓库的其他分支、标签或提交。
背景
有关覆盖Pod源位置的定义和选项,请参阅Podfile 语法参考。
访问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仍然是最官方的开发方式,但现在大多数存储库现在都支持使用Swift Package Manager进行开发。
CocoaPods
安装以下内容
- CocoaPods 1.10.0(或更高版本)
- CocoaPods生成
您要开发的项目
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果CocoaPods缓存已过时,您在运行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 主机 App 和单元测试目标
- 选择“单元-单元”方案
- 运行以构建和测试
或者,在每个目标中禁用签名
- 转到“构建设置”选项卡
- 单击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift 包管理器
- 要启用测试方案,请运行
./scripts/setup_spm_tests.sh
- 在 Finder 中打开
Package.swift
或双击Package.swift
- Xcode 将打开项目
- 选择一个库方案进行构建或测试套件运行
- 通过选择运行目标和方案选择目标平台
添加新的 Firebase Pod
有关详细信息,请参阅 AddNewPod Markdown 文件。
管理头文件和导入
有关管理头文件和导入的信息,请参阅 HeadersImports Markdown 文件。
代码格式化
为确保代码格式的一致性,在创建Pull Request (PR) 之前,运行脚本 ./scripts/check.sh。
GitHub Actions 将验证任何代码更改是否以符合风格的 manner 完成。安装 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 应用,并使用示例应用的 bundle identifier(例如,
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
覆盖率报告生成
有关覆盖率报告生成说明,请参阅 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
请参阅以下各节,了解有关这些组件的任何特殊说明。
Firebase身份验证
有关 Firebase身份验证特定开发,请参阅 Auth 示例 README,以获取有关构建和运行 FirebaseAuth pod 以及各种示例和测试的说明。
Firebase数据库
可以针对本地运行的数据库模拟或针对生产实例运行 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中的说明进行操作。
推送通知
推送通知只能发送到在开发者门户中特别配置的应用ID。为了测试接收推送通知,您需要
- 将示例应用的bundle标识符更改为您在Apple开发者账户中拥有的内容,并启用该应用ID的推送通知。
- 您还需要将APNs提供者身份验证密钥或证书上传到Firebase控制台中的项目设置 > 云消息 > [您的Firebase应用]。
- 请确保您的iOS设备已添加到您的Apple开发者门户中作为测试设备。
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 限制,mache 异常和信号崩溃不会被记录。(在 SwiftUI 中的崩溃会作为 mache 异常生成,因此不会记录。)
Combine
感谢社区贡献,FirebaseCombineSwift 包含了对 Apple Combine 框架的支持。此模块目前处于开发中,不支持在生产环境中使用。有关更多详细信息,请参阅文档。
路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅路线图。
参与贡献
有关如何为 Firebase Apple SDK 贡献的更多信息,请参阅参与贡献。
许可协议
本存储库内容遵守Apache 许可证,版本 2.0。
您对 Firebase 的使用受Firebase 服务条款约束。