ベスト プラクティス ガイダンスに従って Firebase を構成し、「Firebase/Crash」ポッドを使用すると、iOS 10.1 をターゲットとする Swift 3 を使用して Xcode 8.1 で作成されたクリーンな iOS プロジェクトでデバイスの回転が中断されます。
再現する手順
- 新しい iOS プロジェクトを作成します (たとえば、iOS テンプレート「Tabbed Application」を使用)。
- 「Firebase/Core」および「Firebase/Crash」ポッドをポッドファイルに追加し、ポッドをインストールして、プロジェクト用に新しく作成されたワークスペース ファイルを開きます。
GoogleService-Info.plist
対応するファイルをプロジェクトに追加します。- アプリのデリゲートでオーバーライド
init()
して、以下に示すように Firebase を構成します。 - アプリ ターゲットの展開情報で、[デバイスの向き] の下の [縦]、[横左]、[横右] のボックスにチェックが入っていることを確認します。
- シミュレーターでアプリを実行し、左または右に回転します。
Firebase の構成
Firebase はAppDelegate.swift
次のように構成する必要があります。
override init() {
super.init()
FIRApp.configure() // This line breaks rotation if "Firebase/Crash" is installed.
}
iOS 向けの Firebase の「ベスト プラクティスinit()
」ガイダンスでは、Firebase がアプリ デリゲートでオーバーライドして構成されていない場合、「問題が発生する可能性がある」と述べられています。これは、で Firebase を構成するのはプログラミング エラーであることを意味しますapplication(_:didFinishLaunchingWithOptions:)
。ただし、後者のアプローチを採用した場合、デバイスのローテーションは期待どおりに機能します。
他の SO の回答でも、Firebase のベスト プラクティス ガイダンスに従うことを推奨しています。
質問
- このように Firebase を構成すると、デバイスのローテーションが中断されるのはなぜですか?
- 「Firebase/Crash」と「Firebase/Database」の両方を、ベスト プラクティス ガイダンスで説明されている方法でオフライン永続性を有効にして使用したい場合、デバイスのローテーションを壊さずに Firebase を構成する適切な方法は何ですか?
少なくとも 1 人の他のユーザーが同じ問題に遭遇したようです。