Firebase Apple 开源开发
该仓库包含所有适用于 Apple 平台的 Firebase SDK 源代码(除 FirebaseAnalytics 外)。
Firebase 是一个应用开发平台,提供工具帮助您构建、增长和盈利您的应用。您可以在此找到有关 Firebase 的更多信息:官方 Firebase 网站。
安装
下面的小节中提供了有关不同安装方法的详细信息。如果可用,建议安装任何带有 Swift
后缀的库,以便在用 Swift 编写应用程序时获得最佳体验。
标准 pod 安装
访问 https://firebase.google.com/docs/ios/setup。
Swift 包管理器
关于支持 Swift 包管理器的说明可在Swift Package Manager Markdown 文件中找到。
从 GitHub 安装
以下说明可用于访问其他分支、标签或提交的 Firebase 仓库。
背景
请参阅 Podfile 语法参考 了解有关覆盖 pod 源位置的说明和选项。
访问 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'
要通过检查出的 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仍然是最官方的开发方式,但现在许多repo支持使用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 {名称}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 构建设置中勾选 Mac 复选框
- 在设置中签名应用程序,在签名和功能选项卡中
- 在项目管理器中点击 Pods
- 将签名添加到 iOS 主应用程序和单元测试目标
- 选择 Unit-unit 方案
- 运行它以构建和测试
或者禁用每个目标的签名
- 转到构建设置选项卡
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,值为NO
Swift 包管理器
- 要启用测试方案:
./scripts/setup_spm_tests.sh
- 在 Finder 中打开
Package.swift
或双击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文件,但这些文件可以用真实值替换。要获取自己的GoogleService-Info.plist
文件
- 前往Firebase控制台
- 如果您还没有,请创建一个新的Firebase项目
- 对于您要测试的每个示例应用程序,创建一个具有示例应用程序bundle标识符的新Firebase应用程序(例如,
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
可以针对本地运行的数据库模拟器或生产实例运行Firebase Database集成测试。
要针对本地模拟器实例运行,在运行集成测试之前,请先调用./scripts/run_database_emulator.sh start
。
要针对生产实例运行,提供一个有效的GoogleServices-Info.plist并将其复制到FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。您的安全规则必须在测试运行期间设置为公开。
Firebase 性能监控
如果您在进行特定的 Firebase 性能监控开发,请参阅 性能 README 文件以了解关于构建 SDK 的说明,以及参阅 性能 TestApp README 文件以了解如何将性能集成到开发者测试 App 的说明。
Firebase 存储
要运行存储集成测试,请遵循 StorageIntegration.swift 中的说明。
推送通知
推送通知只能发送到开发者门户中特别配置的 App IDs。为了实际测试接收推送通知,您需要
- 将示例应用的 bundle 标识符更改为您在 Apple 开发者账户中的所有物,并启用该 App ID 的推送通知。
- 您还需要将您的 APNs 提供商身份验证密钥或证书上传到 Firebase 控制台,请访问 项目设置 > 云消息 > [您的 Firebase App] 并按照 说明操作。
- 请确保您的 iOS 设备已添加到您的 Apple 开发者门户作为测试设备。
iOS 模拟器
iOS 模拟器无法注册远程通知,也无法接收推送通知。为了接收推送通知,您必须遵循上述步骤并在物理设备上运行应用。
在苹果平台上使用 Firebase 构建
Firebase 8.9.0版本引入了对 macOS、Catalyst 和 tvOS 的官方 beta 支持。watchOS 继续由社区支持。感谢社区贡献的许多多平台 PR。
目前,大多数 Firebase 产品在苹果平台上都可用。还有一些差距,尤其是在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
多亏了社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、执行单元测试并运行。请参阅 独立的 Apple Watch 应用示例。
请注意,watchOS 并非 Firebase 的官方支持。虽然我们可以通过 GitHub Actions 捕获基本单元测试问题,但 SDK 在 watchOS 上的某些更改可能不再按预期工作。如果您遇到这种情况,请提交问题。
在控制台中进行应用设置期间,您可能遇到一个提及类似于“检查应用是否与我们服务器通信”的步骤。这依赖于 Analytics,且在 watchOS 上无法工作。您可以忽略该消息并继续操作,其他 SDK 将按预期工作。
Crashlytics 补充说明
- watchOS 支持有限。由于 watchOS 限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃会生成 mach 异常,因此也不会被记录)
组合
感谢社区的贡献,《FirebaseCombineSwift》包含了支持苹果Combine框架的功能。该模块目前正在开发中,目前不支持在生产环境中使用。如需更多信息,请参阅文档。
路线图
更多关于Firebase苹果开源SDK计划和方向的信息,请参阅路线图。
贡献
有关为Firebase苹果SDK做贡献的更多信息,请参阅贡献。
许可
本仓库的内容受Apache License,版本2.0的许可。
您对Firebase的使用受Firebase服务条款的约束。