firebase/firebase-ios-sdk
GitHub: firebase/firebase-ios-sdk
Firebase 官方 Apple 平台 SDK,为 iOS、macOS 等苹果生态系统提供完整的后端服务集成能力。
Stars: 6559 | Forks: 1727
# Firebase Apple 开源开发
本仓库包含除 FirebaseAnalytics 以外所有 Apple 平台 Firebase SDK 的源代码。
Firebase 是一个应用开发平台,提供各种工具帮助你构建、扩展和变现你的应用。有关 Firebase 的更多信息,请访问 [Firebase 官方网站](https://firebase.google.com)。
## 安装
有关不同安装方法的详细信息,请参阅下文。在可用的情况下,建议安装任何带有 `Swift` 后缀的库,以便在使用 Swift 编写应用时获得最佳体验。
1. [标准 pod install](#standard-pod-install)
2. [Swift Package Manager](#swift-package-manager)
3. [从 GitHub 仓库安装](#installing-from-github)
4. [实验性 Carthage](#carthage-ios-only)
### 标准 pod install
有关标准 pod install 的说明,请访问:
[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup)。
### Swift Package Manager
有关 [Swift Package Manager](https://swift.org/package-manager/) 支持的说明可在 [SwiftPackageManager.md](SwiftPackageManager.md) Markdown 文件中找到。
### 从 GitHub 安装
这些说明可用于访问其他分支、标签或提交的 Firebase 仓库。
#### 背景
有关覆盖 pod 源位置的说明和选项,请参阅 [Podfile 语法参考](https://guides.cocoapods.org/syntax/podfile.html#pod)。
#### 访问 Firebase 源代码快照
所有官方版本均在此仓库中标记,并可通过 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(仅限 iOS)
有关实验性 Carthage 分发的说明可在 [Carthage.md](Carthage.md) 中找到。
### 从 Framework 或库中使用 Firebase
有关从 Framework 或库中使用 Firebase 的详细信息,请参阅 [firebase_in_libraries.md](docs/firebase_in_libraries.md)。
## 开发
要在此仓库中开发 Firebase 软件,请确保你至少拥有以下软件:
* Xcode 16.2(或更高版本)
CocoaPods 仍然是开发的规范方式,但该仓库的大部分内容现在已支持使用 Swift Package Manager 进行开发。
### CocoaPods
安装以下内容:
* CocoaPods 1.12.0(或更高版本)
* [CocoaPods generate](https://github.com/square/cocoapods-generate)
对于你想要开发的 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](Firestore/README.md) Markdown 文件。
#### Catalyst 开发
* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios`
* 在 App-iOS Build Settings 中勾选 Mac 框
* 在 Settings Signing & Capabilities 标签页中对 App 进行签名
* 在 Project Manager 中点击 Pods
* 向 iOS 宿主应用和单元测试目标添加签名
* 选择 Unit-unit scheme
* 运行它以进行构建和测试
或者,禁用每个目标的签名:
* 转到 Build Settings 标签页
* 点击 `+`
* 选择 `Add User-Defined Setting`
* 添加 `CODE_SIGNING_REQUIRED` 设置,值为 `NO`
### Swift Package Manager
* 要启用测试 scheme:`./scripts/setup_spm_tests.sh`
* `open Package.swift` 或在 Finder 中双击 `Package.swift`。
* Xcode 将打开项目
* 选择一个库 scheme 进行构建,或选择一个测试套件 scheme 来运行
* 通过选择运行目标以及 scheme 来选择目标平台
### 添加新的 Firebase Pod
有关详细信息,请参阅 [AddNewPod](docs/AddNewPod.md) Markdown 文件。
### 管理头文件和导入
有关管理头文件和导入的信息,请参阅 [HeadersImports](HeadersImports.md) Markdown 文件。
### 代码格式化
为确保代码格式一致,请在创建 pull request (PR) 之前运行脚本
[./scripts/check.sh](https://github.com/firebase/firebase-ios-sdk/blob/main/scripts/check.sh)。
GitHub Actions 将验证任何代码更改是否符合样式规范。安装 `clang-format` 和 `mint`:
```
brew install clang-format@22
brew install mint
```
### 运行单元测试
选择一个 scheme 并按 Command-u 以构建组件并运行其单元测试。
### 运行示例应用
要运行示例应用和集成测试,你需要一个有效的
`GoogleService-Info.plist
` 文件。Firebase Xcode 项目包含没有真实值的虚拟 plist
文件,但可以将它们替换为真实的 plist 文件。要获取你自己的
`GoogleService-Info.plist` 文件:
1. 前往 [Firebase Console](https://console.firebase.google.com/)
2. 创建一个新的 Firebase 项目(如果你还没有的话)
3. 对于你要测试的每个示例应用,使用该示例应用的 bundle identifier(例如 `com.google.Database-Example`)创建一个新的 Firebase 应用
4. 下载生成的 `GoogleService-Info.plist` 并将其添加到 Xcode 项目中。
### 覆盖率报告生成
有关覆盖率报告生成的说明,请参阅 [scripts/code_coverage_report/README](scripts/code_coverage_report/README.md) Markdown 文件。
## 特定组件说明
有关这些组件的任何特殊说明,请参阅下面的部分。
### Firebase AI Logic
有关构建和测试 SDK 的说明,请参阅 [Firebase AI Logic README](FirebaseAI#development)。
### Firebase Auth
对于特定的 Firebase Auth 开发,请参阅 [Auth Sample README](FirebaseAuth/Tests/Sample/README.md),获取有关构建和运行 FirebaseAuth pod 以及各种示例和测试的说明。
### Firebase Database
Firebase Database 集成测试可以在本地运行的 Database Emulator 或生产实例上运行。
要在本地模拟器实例上运行,请在运行集成测试之前调用 `./scripts/run_database_emulator.sh start`。
要针对生产实例运行,请提供一个有效的 `GoogleServices-Info.plist` 并将其复制到
`FirebaseDatabase/Tests/Resources/GoogleService-Info.plist`。在测试运行时,你的 Security Rule 必须设置为
[公开](https://firebase.google.com/docs/database/security/quickstart)。
### Firebase Dynamic Links
Firebase Dynamic Links 已**弃用**,不应在新项目中使用。该服务将于 2025 年 8 月 25 日关闭。
请参阅我们的 [Dynamic Links 弃用常见问题解答文档](https://firebase.google.com/support/dynamic-links-faq) 以获取更多指导。
### Firebase Performance Monitoring
对于特定的 Firebase Performance Monitoring 开发,请参阅
[Performance README](FirebasePerformance/README.md) 以获取有关构建 SDK 的说明,
以及 [Performance TestApp README](FirebasePerformance/Tests/TestApp/README.md) 以获取有关将 Performance 与开发测试 App 集成的说明。
### Firebase Storage
要运行 Storage 集成测试,请按照
[StorageIntegration.swift](FirebaseStorage/Tests/Integration/StorageIntegration.swift) 中的说明进行操作。
#### 推送通知
Push notifications 只能传递给开发者门户中专门配置的 App ID。
为了测试接收 push notifications,你需要:
1. 在你的 Apple Developer 账户中将示例应用的 bundle identifier 更改为你拥有的内容,并为该 App ID 启用 push notifications。
2. 你还需要
[将你的 APNs Provider Authentication Key 或证书上传到
Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs)
,位置在 **Project Settings > Cloud Messaging > [你的 Firebase App]**。
3. 确保你的 iOS 设备已在你的 Apple Developer 门户中添加为测试设备。
#### iOS Simulator
iOS Simulator 无法注册远程通知,也不会收到 push notifications。
要接收 push notifications,请按照上述步骤操作并在物理设备上运行应用。
## 在 Apple 平台上使用 Firebase 进行构建
Firebase 为 macOS、Catalyst 和 tvOS 提供官方 Beta 支持。visionOS 和 watchOS 由社区支持。感谢社区对许多多平台 PR 的贡献。
目前,Firebase 的大部分产品都可在 Apple 平台上使用。但仍有一些差距,特别是在 visionOS 和 watchOS 上。有关当前支持矩阵的详细信息,请参阅 Firebase 文档中的
[此图表](https://firebase.google.com/docs/ios/learn-more#firebase_library_support_by_platform)。
### visionOS
在支持的情况下,visionOS 按预期工作,但通过 Swift Package Manager 使用 Firestore 除外,这种情况下需要使用源代码分发。
要启用 Firestore 源代码分发,请退出 Xcode 并使用 `FIREBASE_SOURCE_FIRESTORE` 环境变量从命令行打开所需项目:`open --env FIREBASE_SOURCE_FIRESTORE /path/to/project.xcodeproj`。
要恢复使用 Firestore 的二进制分发,请退出 Xcode 并像往常一样打开 Xcode,不使用该环境变量。
### watchOS
得益于社区的贡献,许多 Firebase SDK 现在可以在 watchOS 上编译、运行单元测试并正常工作。请参阅 [独立 Watch App 示例](Example/watchOSSample)。
请记住,watchOS 不受 Firebase 官方支持。虽然我们可以通过 GitHub Actions 捕获基本的单元测试问题,但可能存在某些更改导致 SDK 在 watchOS 上无法按预期工作。如果你遇到这种情况,请
[提交 issue](https://github.com/firebase/firebase-ios-sdk/issues)。
在控制台的应用设置过程中,你可能会遇到提到类似“正在检查应用是否已与我们的服务器通信”的步骤。这依赖于 Analytics,并且在 watchOS 上不起作用。
**忽略该消息并继续是安全的**,其余 SDK 将按预期工作。
#### Crashlytics 补充说明
* watchOS 支持有限。由于 watchOS 的限制,mach 异常和信号崩溃不会被记录。(SwiftUI 中的崩溃生成为 mach 异常,因此不会被记录)
## Combine
得益于社区的贡献,_FirebaseCombineSwift_ 包含对 Apple Combine 框架的支持。该模块目前正在开发中,尚不支持在生产环境中使用。有关更多详细信息,请参阅[文档](FirebaseCombineSwift/README.md)。
## 路线图
有关 Firebase Apple SDK 开源计划和方向的更多信息,请参阅 [Roadmap](ROADMAP.md)。
## 贡献
有关为 Firebase Apple SDK 做贡献的更多信息,请参阅 [Contributing](CONTRIBUTING.md)。
## 许可证
本仓库的内容根据
[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0) 授权。
你对 Firebase 的使用受
[Firebase 服务条款](https://firebase.google.com/terms/) 管辖。
标签:API, Apple平台, App开发, BaaS, Carthage, CocoaPods, Crashlytics, CVE监控, Firebase, Google, iOS开发, macOS开发, Nuclei, Objective-C, Swift, Swift Package Manager, tvOS, watchOS, 云存储, 云服务, 后端即服务, 实时数据库, 开源库, 性能监控, 推送通知, 搜索引擎爬虫, 移动开发, 远程配置