Firebase Apple开源开发
此仓库包含除了FirebaseAnalytics之外的所有Apple平台Firebase SDK源代码。
Firebase是一个应用程序开发平台,它提供了一系列工具,可以帮助您创建、扩展和盈利您的应用程序。更多关于Firebase的信息,请访问官方Firebase网站。
安装
下面的子部分包含了关于不同安装方法的详细信息。如果可用的,建议安装带有 Swift
后缀的任何库,以获得在Swift中编写应用程序时最佳体验。
标准pod安装
请访问https://firebase.google.com/docs/ios/setup。
Swift 包管理器
有关 Swift 包管理器 的说明和支持信息,可在 SwiftPackageManager 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。
从框架或库中使用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 Build Settings中勾选Mac选项
- 在Settings Signing & Capabilities标签页中签名App
- 在Project Manager中点击Pods
- 将签名添加到iOS主机应用程序和单元测试目标中
- 选择Unit-unit方案
- 运行以构建和测试
或者在每个目标中禁用签名
- 转到Build Settings标签
- 点击
+
- 选择
Add User-Defined Setting
- 添加具有值
NO
的CODE_SIGNING_REQUIRED
设置
Swift Package Manager
- 要启用测试方案:
./scripts/setup_spm_tests.sh
open Package.swift
或在Finder中双击Package.swift
- Xcode将打开项目
- 选择一个库构建方案或选择要运行的测试套件方案
- 通过选择方案和运行目标来选择目标平台
添加新的Firebase Pod
参阅AddNewPod Markdown文件。
管理头文件和导入
参阅HeadersImports Markdown文件。
代码格式化
为确保代码格式一致,在创建 pull request 之前,运行脚本 ./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 应用,并使用示例应用的 bundle 标识符(例如,
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
并将其添加到 Xcode 项目中。
覆盖率报告生成
请查看 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
请参阅以下部分获取有关这些组件的任何特殊说明。
Firebase身份验证
如果您正在进行特定Firebase身份验证开发,请参阅身份验证示例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 Storage
要运行存储集成测试,请遵循StorageIntegration.swift中的说明。
推送通知
推送通知只能发送到开发门户中专门配置的App ID。为了实际测试接收推送通知,您需要
- 更改示例应用程序的包标识符为您的Apple开发者账户中的某个所有物,并启用App ID以发送推送通知。
- 您还需要将您的APNs提供商身份验证密钥或证书上传到Firebase控制台的“项目设置 > 云消息 > [您的Firebase应用程序]”。
- 确保您已将iOS设备添加到您的Apple开发者门户作为测试设备。
iOS模拟器
iOS模拟器无法注册远程通知,且不会接收推送通知。要接收推送通知,您必须遵循上述步骤,并在物理设备上运行应用程序。
在Apple平台上使用Firebase进行构建
Firebase 8.9.0 介绍了对 macOS、Catalyst 和 tvOS 的官方测试版支持。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 包含对 Apple 的 Combine 框架的支持。此模块目前处于开发阶段,尚未支持在生产环境中使用。更多详细信息,请参阅 文档。
路线图
请参阅道路图以了解有关 Firebase Apple SDK 开源计划和方向的更多信息。
贡献
请参阅贡献以获取有关贡献到 Firebase Apple SDK 的更多信息。
许可
本存储库内容根据Apache 许可证2.0版授权。
您使用 Firebase 受Firebase 服务条款管辖。