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 指令
要通过分支访问 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.md》Markdown文件。
针对 Catalyst 的开发
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 构建设置中勾选 Mac 复选框
- 在设置中的签名与能力标签下为 App 签名
- 在项目管理者中点击 Pods
- 为 iOS 主应用和单元测试目标添加签名
- 选择 Unit-unit 规划
- 运行它来构建和测试
或者取消每个目标的签名
- 转到构建设置标签
- 点击
+
- 选择
添加用户定义设置
- 添加具有值
NO
的CODE_SIGNING_REQUIRED
设置
Swift Package Manager
- 要启用测试规划:
./scripts/setup_spm_tests.sh
打开 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文件,但可以用真实值替换。要获取自己的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 存储服务
要运行存储集成测试,请按照StorageIntegration.swift中的说明操作。
推送通知
推送通知只能发送到开发者门户中特殊配置的App ID。为了真正测试接收推送通知,您需要
- 将示例应用的捆绑标识符更改为您在Apple开发者账户中拥有的标识符,并启用该App ID以接收推送通知。
- 您还需要将您的APNs提供商身份验证密钥或证书上传到Firebase控制台,具体位置为 项目设置 > 云消息 > [您的Firebase应用]。
- 请确保您的iOS设备已添加到Apple开发者门户作为测试设备。
iOS 模拟器
iOS 模拟器无法注册远程通知,也无法接收推送通知。为了接收推送通知,您必须按照上述步骤操作,并在物理设备上运行应用。
在苹果平台上使用 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 License, version 2.0许可证约束。
您使用Firebase受Firebase服务条款约束。