2017年10月13日

Firebase の対応(3) | Unity 側の解析 class 実装

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 _eventparams Parameter [] _params)
    {
        Parameter [] new Parameter[_params.Length+1];

        for(inti=0;i<_params.Length;i++)
        {
            p[i]=_params[i];
        }

        p[_params.Lengthnew Parameter("utc_time", System.DateTime.UtcNow.ToString());

        FirebaseAnalytics.LogEvent(_event,p);
    }

}


こんな感じで実装してました。Unity 上では問題なさそうなんで、iOS ビルドを作って見ますね!

.......おや?エラーが!?
ErrorOnUnity.png

ファイルが足りないみたいですねぇ。

... で、このファイル、調べてみると、どうやら Firebase のコンソールをセットアップした時に貰えるファイルの様なので、
次はそっちに進んでいきますね!

では、また〜

初めてみました。よかったらクリックお願いしますね ♪
        にほんブログ村 ゲームブログ×PlayNCBlogへ 
posted by やまけん at 09:08| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: