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仍然是开发的首选方式,但该存储库的大部分现在支持使用Swift Package Manager进行开发。
CocoaPods
安装以下内容
- CocoaPods 1.10.0(或更高版本)
- CocoaPods 生成
您想要开发的pods
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主机应用和单元测试目标中
- 选择单元-test方案
- 运行它以构建和测试
或者选择禁用每个目标的签名
- 转到构建设置标签页
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift Package Manager
- 要启用测试方案:运行
./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,了解如何将性能集成到开发测试 App。
_firestore_storage_
要运行存储集成测试,请参考StorageIntegration.swift中的说明。
推送通知
推送通知只能发送到开发者门户中特别配置的 App ID。为了测试接收推送通知,您需要
- 将示例应用的目标标识符改为您在 Apple Developer 账户中的自己拥有的事物,并启用该 App ID 的推送通知。
- 您还需要将您的 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,具体位置在 项目设置 > 云消息 > [您的 Firebase 应用]。
- 请确保您的 iOS 设备已被添加到您的 Apple Developer 门户中作为测试设备。
iOS 模拟器
iPhone 模拟器无法注册远程通知,也无法接收推送通知。要接收推送通知,请按照上述步骤操作,并在真实设备上运行应用程序。
在 Apple 平台上使用 Firebase 进行构建
Firebase 8.9.0 引入了针对 macOS、Catalyst 和 tvOS 的官方 beta 支持。watchOS 继续由社区支持。感谢社区贡献的许多多平台 PR。
目前,大多数Firebase产品在苹果平台上都可用。但仍有一些差距,尤其是在watchOS上。有关当前支持矩阵的详细信息,请参阅Firebase文档中的此图表。
watchOS
多亏了社区的贡献,许多Firebase SDK现在可以在watchOS上编译、运行单元测试。请参阅独立手表应用示例。
请注意,watchOS不是Firebase官方支持的操作系统。虽然我们可以通过GitHub Actions捕获基本单元测试问题,但SDK在某些情况下可能不再按预期在watchOS上工作。如果您遇到这种情况,请提交问题。
在控制台中的应用设置过程中,您可能到达一个提及“检查应用是否与我们服务器通信”的步骤。这依赖于分析,并且将在watchOS上无法工作。可以忽略此消息并继续,其余的SDK将按预期工作。
额外的Crashlytics说明
- watchOS支持有限。由于watchOS的限制,不会记录mach异常和信号崩溃。(SwiftUI中的崩溃将作为mach异常生成,因此不会被记录。)
Combine
多亏了社区的贡献,FirebaseCombineSwift包含了苹果Combine框架的支持。此模块目前正在开发中,尚不支持在生产环境中使用。欲了解更多信息,请参阅文档。
路线图
参看路线图了解更多关于 Firebase Apple SDK 开源计划和方向的信息。
贡献
参看贡献了解如何为 Firebase Apple SDK 做出贡献的具体信息。
许可协议
本存储库的内容遵循Apache 许可协议,版本 2.0。
您对 Firebase 的使用受Firebase 服务条款的约束。