結構ハマったので共有します。
概要
FlutterでFirebaseのCrashlyticsを使おうと、手順通りに設定していったのに、下記のエラーがでて疎通できない問題についてです。
[Fabric] failed to download settings Error Domain=FABNetworkError Code=-5 "(null)" UserInfo={status_code=403, type=2, request_id=, content_type=application/json; charset=utf-8}
Crashlyticsの画面も疎通待ちのまま更新されません。。。
やったこと
まずは、FlutterとFirebase自体を接続します。
- Firebase consoleでプロジェクトを作成し、iOS向けのアプリ追加ウィザードを進めます。
- 途中で GoogleService-Info.plist をDLできるのでXcodeのRunner/Runnerに設置します。(このファイルがiOSとFirebaseの接続情報となります)
- ウィザードの最後に接続待ちとなるので、Flutterをビルドすると接続が完了となります。
次に、Firebase Crashlyticsの接続をします。
- Firebase consoleでCrashlyticsを開いてSDK追加し疎通待ちの状態にします。
- https://pub.dev/packages/firebase_crashlytics のiOS Integrationに従って設定します。
- Flutterをビルドすると疎通が完了するハズです。が、疎通できません。。。
海外サイト等を調べてみると以下のような解決アプローチは載っていましたが、すべて該当しませんでした。。。
- pubspec.yaml のロード順を変更する
firebase_coreよりも後にfirebase_crashlyticsを書くこと - XcodeのInfo.plistに手書きでAPI Keyを追加する(旧式のやりかた?)
- XcodeのRunScriptのInput Filesに以下を追加(Xcode 10のみ) $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
解決策
半ばあきらめつつも調べていると、1つのIssueを見つけました。
https://github.com/FirebaseExtended/flutterfire/issues/1592
同じようなアプローチだなぁと思いつつ、最後の方を見てみると「実機でテストするとうまくいきました」と書いてある!
もしやと思いつつさっそく、実機でテストしたところ疎通できました!
Crashlyticsの画面も疎通完了しました!
解決できてよかったです。
その後、クラッシュデータを送信してみたのですが、これもシミュレーターからはうまく届かず、実機からであればデータが届き、Firebase Crashlyticsでも確認できました。