公開しているAndroidアプリの幾つかにはFirebaseのAnalyticsを導入していて、先日リリースしたミニゲーム「ウサギ餅」にも入れてみることにしました。
但し、今回は、Unityで開発しているのでスムーズに導入可能か不明でした。
スタートガイド
とりあえず、公開してあるFirebaseのドキュメントの通りにインストールしましたが、案の定、それだけだと動作しない部分がありました。
動作しない点1
スタートガイドでダウンロードするファイル「google-services.json」ですが、どこに配置しても良いとのことで、プロジェクトのディレクトリ配下に「Android」というディレクトリを作り、その中へ配置していましたが、認識されませんでした。
そこで、「Assets」の「Firebase」の中に移動してあげたところ、プログレスバーが動き出して認識しました。
動作しない点2
今回のAnalyticsは、ログだけ取れるようにできれば良いと考えていたので、スタートガイドにあった以下のコードを追加しました。
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Set a flag here indiciating that Firebase is ready to use by your // application. } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}", dependencyStatus)); // Firebase Unity SDK is not safe to use here. } });
EventAppOpenログだけ欲しかったので、上のコードの下に追記しました。
Firebase.Analytics.FirebaseAnalytics.LogEvent(Firebase.Analytics.FirebaseAnalytics.EventAppOpen);
ところが、「Set a flag here indiciating that Firebase is ready to use by your application.」と書かれている通り、FirebaseがSDK確認が終わった後でないとLogEventを呼んではいけないらしいです。
今回は、このコメントのすぐ下でLogEventを呼ぶようにしました。
単純にLogEvent単独で呼んではいけないようです。
更にSceneを跨いだ場合も改めてSDKの確認をしないと動作しないことがありました。
どうするか?
これだと、LogEventを呼ぶたびに少し面倒なので、Firebase SDKの方でなんとかして貰えないものかと…。
他のブロガーさんでも、Firebase SDKの導入には依存関係やらで躓いていらっしゃるみたいで、なかなかすんなりいかないものです。
Analytics用のクラスを用意して、それを呼び出すようにした方がシンプルで良いかもしれません。
以上、UnityプロジェクトにFirebaseのAnalyticsを導入してみましたでした。