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, 云存储, 云服务, 后端即服务, 实时数据库, 开源库, 性能监控, 推送通知, 搜索引擎爬虫, 移动开发, 远程配置