はじめに
flutterプロジェクトにFirebase Analytics のイベントを追加する際、DebugView でイベントが表示されず、かなり時間を浪費してしまいました。同じ状況で困っている方の参考になればと思い、解決方法をまとめます。
先にまとめ
以下を確認してみてください!
- Xcode から実行しているか(flutter run はNG)
- Bundle Identifier が一致しているか
- スキーム設定に -FIRDebugEnabled があるか
- 既存のアプリを削除してから再実行したか
- Firebase コンソールで正しいデバイスを選択しているか
問題:DebugView にイベントが表示されない
GA イベントを追加して、ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcschemeに
コマンドライン引数 -FIRDebugEnabled を設定し、flutter run で実行しても、Firebase コンソールの DebugView にイベントが一向に表示されませんでした。
コードは正しいはずなのに、なぜ...?
原因1:flutter run では DebugView が動作しない
結論:DebugView を使うには Xcode から実行する必要があります。
なぜ flutter run ではダメなのか
- Firebase Analytics の DebugView は、アプリ起動時のコマンドライン引数
-FIRDebugEnabledを参照します - この引数は Xcode のスキーム設定で指定するもので、
flutter runコマンドでは適用されません - そのため、Xcode から直接実行する必要があります
解決方法:Xcode から実行する
1. Xcode でプロジェクトを開く
ターミナルから以下のコマンドで Xcode を起動します。
open ios/Runner.xcworkspace
注意: .xcodeproj ではなく .xcworkspace を開いてください。CocoaPods を使用している場合、.xcworkspace でないと依存関係が正しく読み込まれません。
2. スキーム設定を確認
スキーム設定の手順については、以下の記事を参照してください。
Arguments Passed On Launch に -FIRDebugEnabled が設定されていることを確認します。
3. Xcode から実行
- デバイスまたはシミュレータを選択
-
Product > Run(または
⌘R)で実行
4. Firebase コンソールで確認
- Firebase コンソール > Analytics > DebugView を開く
- デバッグに使用するデバイスから、実際に起動したデバイスを選択
- イベントがリアルタイムで表示されます
重要: DebugView の画面上部にあるデバイス選択ドロップダウンで、正しいデバイス(シミュレータまたは実機)を選んでいることを確認してください。複数のデバイスが接続されている場合、間違ったデバイスを見ていてイベントが表示されません。
原因2:Bundle Identifier が異なる
もう一つのハマりポイントとして、アプリの Bundle Identifier が Firebase プロジェクトに登録されているものと異なる場合も DebugView にイベントが表示されません。
確認方法
Firebase コンソールで確認
- Firebase コンソール > プロジェクト設定
- iOS アプリの バンドル ID を確認
Xcode で確認
- Xcode でプロジェクトを開く
- Runner > Signing & Capabilities
- Bundle Identifier を確認
この2つが一致していることを確認してください。
原因3:既存のアプリが残っている
スキーム設定を変更しても DebugView にイベントが表示されない場合、デバイスやシミュレータに残っている既存のアプリが原因の可能性があります。
解決方法
デバイスまたはシミュレータからアプリを一度完全に削除してから、再度 Xcode から実行してください。
アプリを削除することで、古い設定がクリアされ、新しいスキーム設定(-FIRDebugEnabled)が正しく適用されます。
補足:DebugView の ON/OFF について
普段は flutter run で起動されている場合は、DebugView を確認したい時だけ Xcode から実行するという運用にすれば、スキーム設定は常時 ON のままでも大丈夫かと思います。
メリット
- 毎回スキーム設定を変更する手間が不要
- 開発時は
flutter runでホットリロードを活用 - デバッグ時だけ Xcode から起動
注意事項
- DebugView で送信されたイベントは、本番の Analytics レポートには集計されません
- あくまで開発・デバッグ用の機能です
再度まとめ
Firebase Analytics の DebugView でイベントが表示されない場合は、以下を確認してみてください
-
Xcode から実行しているか(
flutter runではなく) - Bundle Identifier が一致しているか
- スキーム設定に
-FIRDebugEnabledがあるか - 既存のアプリを削除してから再実行したか
- Firebase コンソールで正しいデバイスを選択しているか
この記事が同じ問題で困っている方の助けになれば幸いです!
おわりに
間違い等ございましたらコメントいただけますと幸いです!