2016-11-06 10 views
1

ベストプラクティスガイダンスに従ってFirebaseを設定し、Firebase/Crashポッドを使用すると、Swift 3ターゲットiOS 10.1を使用してXcode 8.1で作成されたクリーンなiOSプロジェクトでデバイスの回転が破られます。 (例えばiOSのテンプレート "タブアプリケーション" を使用して)新しいiOSのプロジェクトを作成しますFirebaseクラッシュポッドがiOS上でデバイス回転を中断する

  1. を再現する

    手順。

  2. "Firebase/Core"と "Firebase/Crash"ポッドをポッドファイルに追加し、ポッドをインストールして、プロジェクト用に新しく作成したワークスペースファイルを開きます。
  3. 対応するGoogleService-Info.plistファイルをプロジェクトに追加します。
  4. あなたのアプリケーションデリゲートでinit()を上書きすると、以下のようにFirebaseを設定できます。
  5. アプリのターゲットの展開情報に、「縦向き」、「横向き」、「横向き」の「デバイスの向き」のボックスがチェックされていることを確認します。
  6. シミュレータでアプリを実行し、左または右に回転します。
  7. 次のように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のベストプラクティスのガイダンスに従うことをお勧めします。

質問

  1. なぜこのようブレイクデバイスの回転にFirebaseを設定しますか?
  2. ベストプラクティスのガイダンスに記載されている方法で「Firebase/Crash」と「Firebase/Database」の両方をオフラインパーシスタンスで有効にしたい場合は、デバイスの回転を中断することなくFirebaseを設定する適切な方法はありますか?

at least one other userにも同じ問題が発生しているようです。

答えて

0

Firebaseサポートは、iOS向けFirebaseを適切に設定する方法がapplication:didFinishLaunchingWithOptionsであることをアドバイスしました。「これは正しい方法であり、問​​題は発生しません。

current documentationには、このアプローチを使用してFirebaseが「通常」構成されていると記載されています。

また、iOSの「best practices」ガイダンスは、「関連性があるか更新する必要があるか」を判断するために内部的に説明されることもお伝えしました。

+0

質問に答えたかどうかわかりません!私はこれと同じ問題に遭遇しています...私はFirebaseのサイトのようにステップを踏んだのですが、デバイスの私の回転はまだ動作しません! – Learn2Code

+0

Firebaseのサポートで推奨されているように、 'init()'をオーバーライドするのではなく 'application(_:didFinishLaunchingWithOptions:)'にFirebaseを設定したときに問題は消えました。 – jamesk

関連する問題