Firebase iOS 开源开发
此仓库包含 Firebase iOS SDK 源代码的一个子集。它目前包括 FirebaseCore、FirebaseABTesting、FirebaseAuth、FirebaseDatabase、FirebaseFirestore、FirebaseFunctions、FirebaseInstanceID、FirebaseInAppMessaging、FirebaseInAppMessagingDisplay、FirebaseMessaging、FirebaseRemoteConfig 和 FirebaseStorage。
该仓库还包括 GoogleUtilities 源代码。GoogleUtilities pod 是由 Firebase 和其他 Google 产品使用的实用工具集。
Firebase 是一个应用程序开发平台,提供帮助您构建、增长和盈利应用程序的工具。有关 Firebase 的更多信息,请访问 https://firebase.google.com。
安装
请查看三个子部分,以详细了解三种不同的安装方法。
标准 pod 安装
转到 https://firebase.google.com/docs/ios/setup。
从GitHub安装
从5.0.0版本开始,每个版本的源代码也被部署到CocoaPods master,可以通过标准的CocoaPods Podfile语法访问。
以下说明可以用来访问其他分支、标签或提交处的Firebase仓库。
背景
有关覆盖pod源位置说明和选项,请参阅Podfile语法参考。
访问Firebase源快照
所有官方版本都已标记在此仓库中,并通过CocoaPods可用。要访问本地源快照或未发布分支,请使用以下Podfile指令:
通过分支访问Firestore
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'
要通过已检出版本访问FirebaseMessaging,请执行以下操作:从Rome安装二进制框架的说明在Rome。
pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk'
pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk'
Carthage(仅iOS)
关于实验性Carthage分布的说明在Carthage。
Rome
开发
为了在这库中开发 Firebase 软件,请确保您至少有如下软件:
- Xcode 10.1(或更高版本)
- CocoaPods 1.7.2(或更高版本)
- 使用 CocoaPods 生成
您要开发的 pod
pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果 CocoaPods 缓存已过时,您可能需要在运行 pod gen
命令之前先运行 pod repo update
。
注意:将 --platforms
选项设置为 macos
或 tvos
来为这些平台开发/测试。从 Xcode 10.2 开始,Xcode 未能正确处理多平台 CocoaPods 工作区。
Firestore 有一个自带的 Xcode 项目。参见 Firestore/README.md。
Catalyst 开发
pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios
- 在 App-iOS 构建设置中检查 Mac 复选框
- 在设置中的签名与能力标签下签名 App
- 在项目管理器中点击 Pods
- 将签名添加到 iOS 主应用和单元测试目标中
- 选择 Unit-unit 方案
- 运行以构建和测试
添加新的 Firebase Pod
参见 AddNewPod.md。
代码格式化
为确保代码格式一致,请在创建 PR 之前运行脚本 ./scripts/style.sh。
Travis 会验证所有代码更改是否以符合风格的方式完成。安装 clang-format
和 swiftformat
。这些命令将获取正确的版本
brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb
brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb
注意:如果您已经安装了这些软件的新版本,您可能需要使用 brew switch
切换到此版本。
要更新本节,请查找与 CI 失败日志中版本相匹配的 clang-format 和 swiftformat.rb 版本 这里。
运行单元测试
选择一个方案,然后按Command-u键构建组件并运行其单元测试。
查看代码覆盖率
首先,请确保已通过 gem install xcov
安装了 xcov。
在Xcode中运行 AllUnitTests_iOS
方案后,在终端中Example/目录下执行 xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output
。这将汇总覆盖率,您可以通过运行 open xcov_output/index.html
来查看结果。
运行示例应用
为了运行示例应用和集成测试,您需要有效的 GoogleService-Info.plist
文件。Firebase Xcode项目包含没有真实值的伪plist文件,但可以用真实plist文件替换。要获取您自己的 GoogleService-Info.plist
文件
- 转到 Firebase控制台
- 如果您还没有,新建一个Firebase项目
- 对于您想要测试的每个示例应用,为该示例应用创建一个新的Firebase应用,并使用示例应用的bundle identifier(例如
com.google.Database-Example
) - 下载生成的
GoogleService-Info.plist
,并将其替换为相应的伪plist文件(例如在 Example/Database/App/);
一些示例应用(如Firebase Messaging(《Example/Messaging/App》))需要特殊的Apple能力,并且您必须更改示例应用以使用一个独特的bundle identifier,您可以控制它在自己苹果开发者账号中。
特定组件说明
请参阅下面各节中任何特定于这些组件的说明。
Firebase身份验证
如果您正在做特定的Firebase身份验证开发,请参阅认证示例README,了解有关构建和运行FirebaseAuth pod以及各种示例和测试的说明。
Firebase数据库
要运行数据库集成测试,请使您的数据库身份验证规则公开。
Firebase存储
要运行存储集成测试,遵循FIRStorageIntegrationTests.m中的说明。
推送通知
推送通知只能发送到开发人员在开发者门户中特殊设置的App ID。为了测试接收推送通知,您需要
- 更改示例应用的bundle identifier为您在Apple开发者账户中拥有的内容,并启用该App ID的推送通知。
- 您还需要将您的APNs提供商身份验证密钥或证书上传到Firebase控制台,位置为 项目设置 > 云消息 > [您的Firebase应用]。
- 请确保您的iOS设备已添加到Apple开发者门户中的测试设备列表。
iOS模拟器
iOS模拟器无法注册远程通知,也不会接收推送通知。要接收推送通知,您必须按照以上步骤进行,并在真实设备上运行应用。
社区支持的努力
我们看到了大量关于改进Firebase SDKs的兴趣和贡献,我们非常感激!我们希望赋能尽可能多的开发者使用Firebase并参与Firebase社区。
tvOS, macOS, 和 Catalyst
由于社区的贡献,许多Firebase SDKs现在已经在tvOS, macOS, 和 Catalyst上编译、运行单元测试并运行。
对于tvOS,请查看示例。
请注意,macOS, Catalyst 和 tvOS 不是 Firebase 的官方支持内容,该仓库主要针对 iOS 开发。虽然我们可以通过Travis捕获基本的单元测试问题,但可能存在一些变更,导致SDK不再在 macOS 或 tvOS 上按预期工作。如果您遇到这种情况,请提一个问题。
在控制台中的应用设置过程中,您可能会遇到一个这样的步骤:“检查应用是否已与我们服务器通信”。这依赖于分析,不适用于 macOS/tvOS/Catalyst。请安全忽略该消息并继续,其余的 SDK 将按预期工作。
要安装,请在 Podfile 中添加以下子集
pod 'Firebase/ABTesting'
pod 'Firebase/Auth'
pod 'Firebase/Crashlytics'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'Firebase/Functions'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'Firebase/Storage'
其他 Catalyst 注意事项
- FirebaseAuth 和 FirebaseMessaging 需要在构建设置中添加
Keychain Sharing Capability
。 - FirebaseFirestore 需要签署gRPC 资源目标。
路线图
参见路线图了解有关Firebase iOS SDK开源计划和方向的更多内容。
贡献
请参阅 贡献 以获取有关贡献 Firebase iOS SDK 的更多信息。
许可证
本存储库的内容受Apache许可证,版本2.0的许可。
您使用 Firebase 受 Firebase 服务条款 的约束。