Firebase Apple Open Source Development
该仓库包含除FirebaseAnalytics之外所有Apple平台Firebase SDK的源代码。
Firebase是一款应用开发平台,包含帮助您构建、增长和应用变现的工具。更多关于Firebase的信息可以在官方Firebase网站上找到。
安装
请参阅以下子部分,了解不同安装方法的详细信息。如果可用,建议安装带有Swift
后缀的任何库,以在 Swift 中编写应用时获得最佳体验。
标准pod安装
访问https://firebase.google.com/docs/ios/setup。
Swift Package Manager
关于支持Swift Package Manager的说明可以查看SwiftPackageManager Markdown文件。
从GitHub安装
这些说明可用于访问其他分支、标签或提交的Firebase回购库。
背景
详见Podfile语法参考,了解如何覆盖pods源位置的使用说明和选项。
访问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仍然是开发的标准方式,但现在该仓库的大部分内容都支持使用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 的开发
使用以下命令生成 .podspec 文件:pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 的构建设置中勾选 Mac 选项
- 在设置中签署应用程序,选择“签名与能力”标签
- 在项目浏览器中点击 Pods
- 将签名添加到 iOS 主应用程序和单元测试目标
- 选择 Unit-unit 架构
- 运行以构建和测试
或者在每个目标中禁用签名
- 转到“构建设置”标签
- 点击
+
- 选择
添加用户定义设置
- 添加
CODE_SIGNING_REQUIRED
设置,其值为NO
Swift 包管理器
- 要启用测试方案:运行
./scripts/setup_spm_tests.sh
- 打开
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文件。要获取自己的GoogleService-Info.plist
文件
- 前往Firebase控制台
- 如果您还没有,请创建一个新的Firebase项目
- 对于您想要测试的每个示例应用,创建一个带有示例应用捆绑标识符的Firebase应用(例如
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 的官方 beta 支持。watchOS 仍然由社区支持。感谢社区对许多跨平台 PR 的贡献。
目前,Firebase 的多数产品在 Apple 平台上都有可用性。仍有一些空缺,尤其是在 watchOS 上。关于当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图。
watchOS
感谢社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试和工作。请参阅 独立手表应用示例。
请注意,Firebase 并未正式支持 watchOS。虽然我们可以通过 GitHub Actions 捕获基本的单元测试问题,但是 SDK 可能不再按预期在 watchOS 上工作。如果在 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服务使用条款约束。