Flutter アプリに Firebase を追加する方法をご紹介します。
本記事は Flutter アプリ作成 〜 Android Emulator で起動まで ができている前提で進めていきます。
基本的に、Firebase 公式サイトの説明どおりに進めるだけで Flutter アプリに Firebase を追加することができました。
1つだけ注意が必要な点がありまして、上記の記事の 4. Android アプリで Firebase サービスを有効にするには、Gradle ファイルに google-services プラグインを追加します。 の部分が Firebase Console (https://console.firebase.google.com/project/your_project_name) に記載されているものと違う点です。
Firebase Console に表示されている Android アプリ用の設定なのでそれは使わずに、今回は Android アプリを構成する の方の設定を利用してください。
Flutter Project で Android Emulator がネットワークに接続できなくて E/FirebaseInstanceId( 6972): Token retrieval failed: AUTHENTICATION_FAILED というエラーが発生したので、その解決方法だけご紹介します。
cd /Users/yourname/Library/Android/sdk/emulator
./emulator -list-avds
./emulator -avd Pixel_3a_API_29 -dns-server 8.8.8.8
? 参考: Android エミュレーターでネットワークに繋がらない時 - Qiita
3-b. ダウンロードしたファイルを Flutter アプリの Runner/Runner ディレクトリに移動します。? 引用元: iOS アプリを構成する
上記の GoogleService-Info.plist ファイルは必ず Xcode アプリで作業するようにしてください。
Xcode で GoogleService-Info.plist を追加しないと flutter run 実行時に Xcode build で以下のようなエラーが発生します。
$ flutter run
Launching lib/main.dart on iPhone 11 Pro Max in debug mode...
Running pod install... 3.3s
Running Xcode build...
├─Assembling Flutter resources... 6.7s
└─Compiling, linking and signing... 12.1s
Xcode build done. 26.1s
path: satisfied (Path is satisfied), interface: en0
*** First throw call stack:
(
0 CoreFoundation 0x00007fff23c7127e __exceptionPreprocess + 350
1 libobjc.A.dylib 0x00007fff513fbb20 objc_exception_throw + 48
2 CoreFoundation 0x00007fff23c710bc +[NSException raise:format:] + 188
3 Runner 0x00000001008fe52a +[FIRApp configure] + 138
4 Runner 0x00000001009d6a89 -[FLTFirebaseAnalyticsPlugin init] + 185
5 Runner 0x00000001009d695d +[FLTFirebaseAnalyticsPlugin registerWithRegistrar:] + 173
6 Runner 0x00000001008f9ce0 +[GeneratedPluginRegistrant registerWithRegistry:] + 112
7 Runner <…>
Flutter アプリに Firebase をインストールしたサンプルコードは以下の GitHub Pull Request に公開していますので、ぜひご覧ください。
? Install Firebase (Android and iOS are working) · Pull Request #3 · codenote-net/flutter_sandbox
以上、Flutter アプリに Firebase を追加した現場からお送りしました。