按照他们的最佳实践指南配置 Firebase,并使用“Firebase/Crash”pod,在使用面向 iOS 10.1 的 Swift 3 在 Xcode 8.1 中创建的干净 iOS 项目中中断设备旋转。
重现步骤
- 创建一个新的 iOS 项目(例如,使用 iOS 模板“选项卡式应用程序”)。
- 将“Firebase/Core”和“Firebase/Crash”pod 添加到您的 podfile,安装 pod,然后为您的项目打开新创建的工作区文件。
- 将相应的
GoogleService-Info.plist
文件添加到您的项目中。 - 在您的应用委托中覆盖
init()
以配置 Firebase,如下所示。 - 请注意,您的应用目标的部署信息已在“设备方向”下的“纵向”、“横向左侧”和“横向右侧”复选框中打勾。
- 在模拟器中运行应用程序,然后向左或向右旋转。
配置 Firebase
Firebase 应配置AppDelegate.swift
如下:
override init() {
super.init()
FIRApp.configure() // This line breaks rotation if "Firebase/Crash" is installed.
}
Firebase 针对 iOS 的“最佳实践init()
”指南指出,如果未通过在应用程序委托中覆盖来配置 Firebase,则事情“可能会出错” 。这意味着在application(_:didFinishLaunchingWithOptions:)
. 但是,如果采用后一种方法,设备旋转将按预期发挥作用。
其他 SO 答案也建议遵循 Firebase 的最佳实践指南。
问题
- 为什么以这种方式配置 Firebase 会破坏设备轮换?
- 如果我想以最佳实践指南中描述的方式同时使用“Firebase/Crash”和“Firebase/Database”并启用离线持久性,那么在不中断设备轮换的情况下配置 Firebase 的合适方法是什么?
似乎至少有一位其他用户遇到了同样的问题。