Firebase Apple 开源开发
此仓库包含所有 Firebase SDK 源代码(除 FirebaseAnalytics 之外),针对所有 Apple 平台。
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 指令
要访问通过分支的 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'
仅限 iOS 的 Carthage
有关实验性 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 {这里输入名称}.podspec --local-sources=./ --auto-open --platforms=ios
- 在App-iOS构建设置中勾选Mac选项
- 在设置中的签名与能力选项卡签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段签名字段
- 在项目管理器中点击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 文件。
代码格式化
为了确保代码格式的一致性,在创建 pull request (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 项目
- 对于您想要测试的每个示例应用,创建一个新的 Firebase 应用,其 bundle 标识符与示例应用(例如,
com.google.Database-Example
)相匹配 - 下载生成的
GoogleService-Info.plist
文件并将其添加到 Xcode 项目中。
覆盖率报告生成
有关覆盖率报告生成的说明,请参阅 scripts/code_coverage_report/README Markdown 文件。
特定组件说明
请参阅下面的部分以了解关于这些组件的特殊说明。
Firebase身份验证
有关特定Firebase身份验证开发的说明,请参阅 Auth Sample 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 IDs。为了测试接收推送通知,您需要
- 将示例应用的捆绑标识符更改为您在Apple开发者账户中拥有的标识符,并启用推通知的该App ID。
- 您还需要将您的APNs提供者身份验证密钥或证书上传到Firebase控制台,路径为“项目设置 > 云消息 > [您的Firebase应用]”。
- 确保您的iOS设备已添加到您的Apple开发者门户作为测试设备。
iOS模拟器
iPhone模拟器无法注册远程通知,也不会接收推送通知。要接收推送通知,请按照上述步骤操作,并在物理设备上运行应用。
在苹果平台上使用 Firebase 进行开发
Firebase 8.9.0 引入了 macOS、Catalyst 和 tvOS 的官方 beta 支持。watchOS 继续由社区支持。感谢社区贡献者对许多跨平台 PR 的贡献。
目前,Firebase 的产品大多数可在苹果平台上使用。但仍有一些差距,尤其在 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
watchOS
得益于社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试并工作。请参阅独立手表应用示例。
请注意,watchOS 并非 Firebase 的官方支持。虽然我们可以在 GitHub Actions 中捕捉到基本的单元测试问题,但 SDK 在 watchOS 上可能存在一些变化,可能会使其无法按预期工作。如果您遇到这种情况,请提交一个问题。
在控制台中的应用设置过程中,您可能遇到提到“检查应用是否已与我们服务器通信”的步骤。这依赖于 Analytics,并在 watchOS 上无法工作。**您可以安全地忽略该消息并继续**,其余的 SDK 将按预期工作。
Crashlytics 的额外说明
- watchOS 的支持有限。由于 watchOS 的限制,不会记录 mach 异常和信号崩溃。(在 SwiftUI 中的崩溃将以 mach 异常的形式生成,因此也不会被记录)
综合
感谢社区的贡献,FirebaseCombineSwift 包含对 Apple Combine 框架的支持。此模块目前正在开发中,尚不支持在生产环境中使用。更多信息,请参阅文档。
路线图
有关 Firebase Apple SDK 开源计划及方向的更多信息,请参阅路线图。
贡献
有关为 Firebase Apple SDK 贡献的信息,请参阅贡献。
许可
本仓库内容采用 Apache License, version 2.0 许可。
Firebase 的使用受 Firebase 服务条款 管理。