此仓库包含除 FirebaseAnalytics 之外的所有 Apple 平台 Firebase SDK 的源代码。
Firebase 是一个应用开发平台,提供各种工具来帮助您构建、发展您的应用并从中获利。有关 Firebase 的更多信息,请访问官方 Firebase 网站。
请参阅下面的各个小节,了解有关不同安装方法的详细信息。如果可用,建议安装带有 Swift
后缀的任何库,以便在使用 Swift 编写应用时获得最佳体验。
有关标准 pod install 的说明,请访问:https://firebase.google.com/docs/ios/setup。
有关 Swift Package Manager 支持的说明,请参阅 SwiftPackageManager.md Markdown 文件。
这些说明可用于访问 Firebase 仓库的其他分支、标签或提交。
有关覆盖 pod 源位置的说明和选项,请参阅Podfile 语法参考。
所有正式版本都已在此仓库中标记,并且可以通过 CocoaPods 获得。要访问本地源代码快照或未发布的版本,请使用如下所示的 Podfile 指令
通过分支访问 FirebaseFirestore
pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'main'
pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'main'
通过 firebase-ios-sdk 仓库的已检出版本访问 FirebaseMessaging
pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk'
pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk'
有关实验性 Carthage 分发的说明,请访问 Carthage.md。
有关从框架或库中使用 Firebase 的详细信息,请参阅 firebase_in_libraries.md。
要在此仓库中开发 Firebase 软件,请确保您至少拥有以下软件
CocoaPods 仍然是开发的主要方式,但现在仓库中的大部分内容都支持使用 Swift Package Manager 进行开发。
安装以下内容
对于您要开发的 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 文件。
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
或者,禁用每个目标中的签名
+
Add User-Defined Setting
NO
的 CODE_SIGNING_REQUIRED
设置./scripts/setup_spm_tests.sh
open Package.swift
或在 Finder 中双击 Package.swift
。有关详细信息,请参阅 AddNewPod Markdown 文件。
有关管理标头和导入的信息,请参阅 HeadersImports Markdown 文件。
为了确保代码格式一致,请在创建拉取请求 (PR) 之前运行脚本 ./scripts/check.sh。
GitHub Actions 将验证任何代码更改是否以符合样式的方式完成。安装 clang-format
和 mint
brew install clang-format@19
brew install mint
选择一个方案并按 Command-u 来构建组件并运行其单元测试。
要运行示例应用和集成测试,您需要一个有效的 GoogleService-Info.plist
文件。 Firebase Xcode 项目包含没有真实值的虚拟 plist 文件,但可以使用真实的 plist 文件替换它们。 要获取您自己的 GoogleService-Info.plist
文件
com.google.Database-Example
)创建一个新的 Firebase 应用GoogleService-Info.plist
并将其添加到 Xcode 项目。有关覆盖率报告生成说明,请参阅 scripts/code_coverage_report/README Markdown 文件。
请参阅下面的章节,了解这些组件的任何特殊说明。
有关特定的 Firebase Auth 开发,请参阅 Auth Sample README,了解有关构建和运行 FirebaseAuth pod 以及各种示例和测试的说明。
Firebase Database 集成测试可以针对本地运行的 Database Emulator 或针对生产实例运行。
要针对本地模拟器实例运行,请在运行集成测试之前调用 ./scripts/run_database_emulator.sh start
。
要针对生产实例运行,请提供有效的 GoogleServices-Info.plist
并将其复制到 FirebaseDatabase/Tests/Resources/GoogleService-Info.plist
。您的安全规则必须设置为 public,以便在测试运行时生效。
Firebase Dynamic Links 已**弃用**,不应在新项目中使用。 该服务将于 2025 年 8 月 25 日关闭。
请参阅我们的 Dynamic Links 弃用常见问题解答文档,以获取更多指导。
有关特定的 Firebase Performance Monitoring 开发,请参阅 Performance README,了解有关构建 SDK 的说明,并参阅 Performance TestApp README,了解有关将 Performance 与开发测试应用程序集成的说明。
要运行 Storage 集成测试,请按照 StorageIntegration.swift 中的说明进行操作。
推送通知只能传递到开发者门户中专门配置的 App ID。 为了测试接收推送通知,您需要
iOS 模拟器无法注册远程通知,也不会收到推送通知。 要接收推送通知,请按照上述步骤操作并在物理设备上运行该应用。
有关构建和测试 SDK 的说明,请参阅 Vertex AI for Firebase README。
Firebase 提供对 macOS、Catalyst 和 tvOS 的官方 Beta 支持。 visionOS 和 watchOS 由社区支持。感谢社区为许多多平台 PR 提供的贡献。
目前,大多数 Firebase 产品都可以在 Apple 平台上使用。 仍然存在一些差距,尤其是在 visionOS 和 watchOS 上。 有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的此图表。
在支持的情况下,visionOS 的工作方式与预期相同,但通过 Swift Package Manager 使用 Firestore 时,需要使用源分发。
要启用 Firestore 源分发,请退出 Xcode 并使用 FIREBASE_SOURCE_FIRESTORE
环境变量从命令行打开所需的项目:open --env FIREBASE_SOURCE_FIRESTORE /path/to/project.xcodeproj
。 要返回使用 Firestore 的二进制分发,请退出 Xcode 并像往常一样打开 Xcode,而无需环境变量。
感谢社区的贡献,许多 Firebase SDK 现在可以编译、运行单元测试并在 watchOS 上工作。 请参阅 Independent Watch App Sample。
请记住,watchOS 未得到 Firebase 的官方支持。 虽然我们可以使用 GitHub Actions 捕获基本的单元测试问题,但可能有一些更改会导致 SDK 无法在 watchOS 上按预期工作。 如果您遇到这种情况,请提交问题。
在控制台中进行应用设置期间,您可能会进入一个步骤,其中提到诸如“正在检查应用是否已与我们的服务器通信”之类的内容。 这依赖于 Analytics 并且在 watchOS 上不起作用。 忽略该消息并继续是安全的,其余 SDK 将按预期工作。
感谢社区的贡献,FirebaseCombineSwift 包含对 Apple 的 Combine 框架的支持。 该模块目前正在开发中,尚未支持在生产环境中使用。 有关更多详细信息,请参阅文档。
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅路线图。
有关向 Firebase Apple SDK 贡献的更多信息,请参阅贡献。
本仓库的内容已获得 Apache License, version 2.0 的许可。
您对 Firebase 的使用受Firebase 服务条款的约束。