Firebase Apple 开源开发
此仓库包含所有 Apple 平台 Firebase SDK 的源代码,但不包括 FirebaseAnalytics。
Firebase 是一个应用程序开发平台,提供了帮助您构建、增长和货币化应用程序的工具。有关 Firebase 的更多信息,请参阅 官方 Firebase 网站。
安装
请查看以下子部分以获取有关不同安装方法的详细信息。如有可用,建议安装任何带有 Swift
后缀的库,以便在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
有关标准 pod 安装的说明,请访问: https://firebase.google.com/docs/ios/setup。
Swift包管理器
有关Swift包管理器支持的说明,请参阅Swift Package Manager的SwiftPackageManager.md 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'
要访问FirebaseMessaging,请通过检查的firebase-ios-sdk存储库版本
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项目。请参阅Firestore/README Markdown文件。
Catalyst开发
使用pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios命令生成.podspec文件。
- 在App-iOS构建设置中勾选Mac框。
- 在设置中为应用程序签名并切换到签名与能力标签。
- 在项目管理者中点击Pods。
- 将签名添加到iOS宿主应用程序和单元测试目标中。
- 选择Unit-unit方案。
- 运行它来构建和测试。
或者,在每个目标中禁用签名。
- 转到构建设置选项卡。
- 点击加号
+
。 - 选择
添加用户定义设置
。 - 添加具有
NO
值的CODE_SIGNING_REQUIRED
设置。
Swift包管理器
- 要启用测试方案,运行
./scripts/setup_spm_tests.sh
。 - 在Finder中双击或打开
Package.swift
。 - Xcode将会打开项目。
- 选择要构建或运行测试套件的库方案。
- 选择目标平台,通过选择运行目标与方案协同.
添加新的Firebase Pod
有关详细信息,请参阅< группа и doc Caroline.software&project->assem HPV.podspec">AddNewPod”Markdown文件。
管理头文件和导入
有关管理头文件和导入的信息,请参阅HeadersImports”Markdown文件。
代码格式化
为确保代码格式一致,在提交拉取请求(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 标识符(例如,
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
生成覆盖报告
有关生成覆盖率报告的说明,请参阅 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
以下部分针对这些组件提供任何特定说明。
Firebase Auth
有关 Firebase Auth 的特定开发,请参阅 Auth Sample README,获取有关构建和运行 FirebaseAuth pod 以及各种示例和测试的说明。
Firebase Database
可以通过运行本地 Database Emulator 或生产实例来运行 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中的说明进行。
推送通知
推送通知只能发送到开发门户中特别配置的应用 ID。为了测试接收推送通知,您需要
- 将示例应用的包标识符更改为您在苹果开发者帐户中拥有的内容,并启用该应用 ID 的推送通知。
- 您还需要将您的 APNs 提供商身份验证密钥或证书上传到Firebase控制台,具体位置在项目设置 > 云消息 > [您的 Firebase 应用]。
- 确保您将iOS设备添加到您的苹果开发者门户作为测试设备。
iOS 模拟器
iOS模拟器无法注册远程通知并且不会接收推送通知。要接收推送通知,请按照上述步骤操作并在物理设备上运行应用。
在苹果平台上使用 Firebase 构建
Firebase 8.9.0 引入了官方的 macOS、Catalyst 和 tvOS 的测试版支持。watchOS 继续得到社区支持。感谢社区贡献了众多多平台 Pull Request。
目前,大多数 Firebase 产品在苹果平台上都有可用。还有一些差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
得益于社区贡献,许多 Firebase SDK 现在在 watchOS 上可以编译、运行单元测试并正常工作。请参见独立手表应用程序示例。
请注意,watchOS 不是 Firebase 的官方支持。虽然我们可以通过 GitHub Actions 捕获基本的单元测试问题,但在某些情况下,SDK 可能不再在 watchOS 上按预期工作。如果您遇到这种情况,请提交问题。
在控制台进行应用程序设置期间,您可能会进入一个提到类似“检查应用程序是否与我们的服务器进行了通信”的步骤。这依赖于分析,不会在 watchOS 上工作。《**可以安全地忽略此消息并继续**》,其余的 SDK 将按预期工作。
额外的 Crashlytics 说明
- watchOS 的支持有限。由于 watchOS 的限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃生成 mach 异常,因此不会记录)
合并
由于社区的贡献,FirebaseCombineSwift 支持 Apple 的 Combine 框架。此模块目前正在开发中,尚不支持在生产环境中使用。更多详情请参见 文档。
路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅 路线图。
贡献
有关为 Firebase Apple SDK 做贡献的更多信息,请参阅 贡献。
许可证
此存储库的内容根据 Apache 许可证版本 2.0 许可。
您对 Firebase 的使用受 Firebase 服务条款约束。