ベストプラクティスガイダンスに従ってFirebaseを設定し、Firebase/Crashポッドを使用すると、Swift 3ターゲットiOS 10.1を使用してXcode 8.1で作成されたクリーンなiOSプロジェクトでデバイスの回転が破られます。 (例えばiOSのテンプレート "タブアプリケーション" を使用して)新しいiOSのプロジェクトを作成しますFirebaseクラッシュポッドがiOS上でデバイス回転を中断する
- を再現する
手順。
- "Firebase/Core"と "Firebase/Crash"ポッドをポッドファイルに追加し、ポッドをインストールして、プロジェクト用に新しく作成したワークスペースファイルを開きます。
- 対応する
GoogleService-Info.plist
ファイルをプロジェクトに追加します。 - あなたのアプリケーションデリゲートで
init()
を上書きすると、以下のようにFirebaseを設定できます。 - アプリのターゲットの展開情報に、「縦向き」、「横向き」、「横向き」の「デバイスの向き」のボックスがチェックされていることを確認します。
- シミュレータでアプリを実行し、左または右に回転します。 次のようにFirebaseが
AppDelegate.swift
に設定する必要がありFirebase
の設定
:iOS用
override init() {
super.init()
FIRApp.configure() // This line breaks rotation if "Firebase/Crash" is installed.
}
Firebaseの "best practices" ガイダンスがFirebaseが設定されていないとき、物事が "間違って行くことができる" と述べていますアプリデリゲートのinit()
をオーバーライドします。その意味は、application(_:didFinishLaunchingWithOptions:)
にFirebaseを設定するのはプログラミングエラーです。ただし、後者の方法をとると、デバイスの回転が期待どおりに機能します。
Other SO answersでも、Firebaseのベストプラクティスのガイダンスに従うことをお勧めします。
質問
- なぜこのようブレイクデバイスの回転にFirebaseを設定しますか?
- ベストプラクティスのガイダンスに記載されている方法で「Firebase/Crash」と「Firebase/Database」の両方をオフラインパーシスタンスで有効にしたい場合は、デバイスの回転を中断することなくFirebaseを設定する適切な方法はありますか?
at least one other userにも同じ問題が発生しているようです。
質問に答えたかどうかわかりません!私はこれと同じ問題に遭遇しています...私はFirebaseのサイトのようにステップを踏んだのですが、デバイスの私の回転はまだ動作しません! – Learn2Code
Firebaseのサポートで推奨されているように、 'init()'をオーバーライドするのではなく 'application(_:didFinishLaunchingWithOptions:)'にFirebaseを設定したときに問題は消えました。 – jamesk