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主目录,并且可以通过标准的CocoaPods Podfile语法访问。
以下说明可用来访问其他分支、标签或提交的Firebase仓库。
背景
查看Podfile语法参考,了解关于覆盖pod源位置的指令和选项。
访问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'
要通过已签出的firebase-ios-sdk仓库版本访问FirebaseMessaging,请执行以下操作
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{名称}.podspec --local-sources=./ --auto-open --platforms=ios
注意:如果 CocoaPods 缓存过时,您可能需要在运行 pod gen
命令之前运行 pod repo update
。
注意:将 --platforms
选项设置为 macos
或 tvos
以在那些平台上进行开发/测试。从 10.2 版本开始,Xcode 无法正确处理多平台 CocoaPods 工作空间。
Firestore 有一个自包含的 Xcode 项目。请参阅 Firestore/README.md。
Catalyst 开发
pod gen {名称}.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
方案后,在终端中执行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 应用程序,附带示例应用程序的程序包标识符(例如
com.google.Database-Example
) - 下载结果
GoogleService-Info.plist
并替换适当的占位符 plist 文件(例如在Example/Database/App/中);
某些示例应用如 Firebase 消息(Example/Messaging/App)需要特殊的 Apple 功能,您将不得不更改示例应用程序以使用您自己的 Apple 开发者帐户中可以控制的唯一程序包标识符。
特定组件说明
有关这些组件的任何特殊说明,请参阅下面的部分。
Firebase身份验证
如果你在进行特定的Firebase身份验证开发,请参阅身份验证示例README,了解关于构建和运行FirebaseAuth pod以及相关样本和测试的说明。
Firebase数据库
要运行数据库集成测试,使你的数据库身份验证规则公开。
Firebase存储
要运行存储集成测试,请遵循FIRStorageIntegrationTests.m中的说明。
推送通知
推送通知只能发送到开发门户网站中的特别配置的App ID。为了真正测试接收推送通知,你需要
- 将示例应用的Bundle ID更改为你自己的在Apple开发者账户中,并启用该App ID用于推送通知。
- 你还需要将你的APNs提供者身份验证密钥或证书上传到Firebase控制台,在项目设置 > 云消息 > [你的Firebase应用]。
- 确保你的iOS设备已添加到你的Apple开发者门户网站作为测试设备。
iOS仿真器
iOS模拟器无法注册远程通知,因此将不会接收推送通知。为了接收推送通知,您需要按照上述步骤操作,并将应用运行在物理设备上。
社区支持的努力
我们看到了许多改善Firebase SDK的兴趣和贡献,我们非常感激!我们希望让尽可能多的开发者能够使用Firebase并参与Firebase社区。
tvOS、macOS和Catalyst
得益于社区的贡献,FirebaseABTesting、FirebaseAuth、FirebaseCore、FirebaseDatabase、FirebaseMessaging、FirebaseFirestore、FirebaseFunctions、FirebaseRemoteConfig和FirebaseStorage现在在tvOS、macOS和Catalyst上编译、运行单元测试并进行工作。
有关tvOS,请参阅示例。
请注意,macOS、Catalyst和tvOS不是Firebase的官方支持平台,这个存储库主要是为iOS开发的。虽然我们可以通过Travis捕捉基本的单元测试问题,但在macOS或tvOS上,SDK可能不再按预期工作。如果您遇到这种情况,请提交问题。
要安装,请将以下子集添加到Podfile中
pod 'Firebase/ABTesting'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'Firebase/Functions'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'Firebase/Storage'
额外的Catalyst注意事项
- FirebaseAuth和FirebaseMessaging需要将
密钥链共享能力
添加到构建设置中。 - FirebaseFirestore需要签名gRPC资源目标。
路线图
有关Firebase iOS SDK开源计划和方向的更多信息,请参阅路线图。
贡献
有关向Firebase iOS SDK贡献的更多信息,请参阅贡献。
许可
本存储库内容采用Apache许可证,版本2.0授权。
您对Firebase的使用受Firebase服务的条款与服务约束。