Version 1.2.0 絶賛公開中!!
iOS デバイスの人は、上のアイコンからダウンロードしてみてね!!
基本無料。ゲーム内課金有り(無料で十分遊べます)
Version 1.1.0 絶賛公開中!!
さて、前回の予告通り、Firebase Analytics の Unity 側での実装です。(ちょっと思ってたより時間かかりましたが...)
ここ のサンプルコードを見てたんですが、ひとまず、そのままコピーしてきてから考えますね。
で、コピーして後考えてみたんですが、特に MonoBehaviour を継承してないと駄目な感じもしないので、
何にも継承せずに行ってみたいと思います。
それと、Start() で初期化されますが、ユーザーIDを渡す様にしてます。
これ、iOS だと、ハードウェア固有の ID、AdID(アドID) が取れなくもないんですが、これを使うと面倒が増えるはずなので、
System.Guid.NewGuid() |
を使ってユニークな ID を生成して保存することにしました。
あとは、色々定型の EventLog がサンプルに入ってたんですが、追加で イベント名を引数で渡す、ジェネリックな LogEvent メソッドを作りました。
Firebase 側でも勝手に入れてる気もするんですが、一応最後にイベントの発生した UTC 時間を毎回追加する様にしてます。
で、現在の形はこんな感じです。
public class YGFirebase { DependencyStatus dependencyStatus = DependencyStatus.UnavailableOther; //Whentheappstarts,checktomakesurethatwe have //therequireddependenciestouseFirebase,andifnot, //addthemifpossible. publicvoid Start(string _uid) { dependencyStatus=FirebaseApp.CheckDependencies(); if(dependencyStatus !=DependencyStatus.Available) { FirebaseApp.FixDependenciesAsync().ContinueWith(task=>{ dependencyStatus=FirebaseApp.CheckDependencies(); if(dependencyStatus==DependencyStatus.Available) { InitializeFirebase(_uid); } else { Debug.LogError( "CouldnotresolveallFirebasedependencies:"+dependencyStatus); } }); } else{ InitializeFirebase(_uid); } } //Handleinitializationofthenecessaryfirebasemodules: void InitializeFirebase(string _uid) { Debug.Log("Enablingdatacollection."); FirebaseAnalytics.SetAnalyticsCollectionEnabled(true); stringsignup_method=""; #if UNITY_EDITOR signup_method="Unity_Editor"; #elif UNITY_IOS signup_method = "iOS-GameCenter"; #elif UNITY_ANDROID signup_method = "Google"; #endif Debug.Log("Setuserproperties."); //Settheuser'ssignupmethod. FirebaseAnalytics.SetUserProperty(FirebaseAnalytics.UserPropertySignUpMethod,signup_method); //SettheuserID. FirebaseAnalytics.SetUserId(_uid); } public void AnalyticsLogin() { //Loganeventwithnoparameters. Debug.Log("Loggingaloginevent."); FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLogin); } public void AnalyticsProgress(float _progress) { //Loganeventwithafloat. Debug.Log("Loggingaprogressevent."); FirebaseAnalytics.LogEvent("progress","percent",_progress); } public void AnalyticsScore(long _score) { //Loganeventwithanintparameter. Debug.Log("Loggingapost-scoreevent."); FirebaseAnalytics.LogEvent( FirebaseAnalytics.EventPostScore, FirebaseAnalytics.ParameterScore, _score); } public void LogEvent(string _event, params Parameter [] _params) { Parameter [] p = new Parameter[_params.Length+1]; for(inti=0;i<_params.Length;i++) { p[i]=_params[i]; } p[_params.Length] = new Parameter("utc_time", System.DateTime.UtcNow.ToString()); FirebaseAnalytics.LogEvent(_event,p); } } |
こんな感じで実装してました。Unity 上では問題なさそうなんで、iOS ビルドを作って見ますね!
.......おや?エラーが!?
ファイルが足りないみたいですねぇ。
... で、このファイル、調べてみると、どうやら Firebase のコンソールをセットアップした時に貰えるファイルの様なので、
次はそっちに進んでいきますね!