33
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UnityでGoogleAnalyticsを使う

Last updated at Posted at 2014-05-20

概要

UnityでGoogleAnalyticsを使う場合どうすればいいのか調べたのでメモ。

基本的には公式のSDKなどがなくHTTPのGETやPOSTで必要なパラメータを送るMeasurement Protocolをつかっている。

Measurement Protocol
https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide?hl=ja

おそらくiOSとAndroidのGoogle Analytics SDKを使った時のように、アプリがしっかりと区別出来るわけではないという気がする。

調べたのは2つ

  • GoogleAnalyticsPlugin
  • unity3d-google-analytics

結論から言うとGoogleAnalyticsPluginはとてもシンプルだがイベントの設定ができないのでunity3d-google-analyticsが良いだろう。

注意点として、SystemInfo.deviceUniqueIdentifierを使ってパラメータcidの値をGoogleAnalyticsに送らなければならないコードになっていて、このSystemInfo.deviceUniqueIdentifierはAndroidでREAD_PHONE_STATEパーミッションを要求しUnityがAndoridManifest.xmlに自動で追記します。このパーミッションによってユーザーが躊躇してしまうのはもったいないので、Androidの場合は実装しないのも手かもしれません。

GoogleAnalyticsPlugin

ダウンロード

特徴

必要なのはcsの1ファイルのみでMonoBehaviourクラスを継承したクラスを使うのでpublicになった設定が操作しやすくかなりシンプル。ただ機能として表示画面のトラッキングのみなのがデメリット。

使い方

まずシーンにGameObjectをEmptyで作成。その際にGoogleAnalyticsManagerなどと名前をつける。そのGoogleAnalyticsManagerにGoogleAnalyticsクラスをaddする。

他のクラスなどからGoogleANalyticsクラスを下記のように呼び出し表示された画面名を渡す

if (GoogleAnalytics.instance) {
    GoogleAnalytics.instance.LogScreen("Main Menu");
}

仕組み

WWWクラスを使ってGoogleAnalyticsのサーバーにGETでリクエストを送っているだけの様子。

	public void LogScreen(string title)
	{
		
		title = WWW.EscapeURL(title);
		
		var url = "http://www.google-analytics.com/collect?v=1&ul=en-us&t=appview&sr="+screenRes+"&an="+WWW.EscapeURL(appName)+"&a=448166238&tid="+propertyID+"&aid="+bundleID+"&cid="+WWW.EscapeURL(clientID)+"&_u=.sB&av="+appVersion+"&_v=ma1b3&cd="+title+"&qt=2500&z=185";
		
		WWW request = new WWW(url);
		
		/*if(request.error == null)
		{
			if (request.responseHeaders.ContainsKey("STATUS"))
			{
				if (request.responseHeaders["STATUS"] == "HTTP/1.1 200 OK")	
				{
					Debug.Log ("GA Success");
				}else{
					Debug.LogWarning(request.responseHeaders["STATUS"]);	
				}
			}else{
				Debug.LogWarning("Event failed to send to Google");	
			}
		}else{
			Debug.LogWarning(request.error.ToString());	
		}*/
		
	}

unity3d-google-analytics

ダウンロード

GitHub
https://github.com/Extrawurst/unity3d-google-analytics

特徴

こちらのほうがイベントも設定できる分良いかもしれない。

使い方

まずシーンにGameObjectをEmptyで作成。その際にGoogleAnalyticsManagerなどと名前をつける。そのGoogleAnalyticsManagerにCGoogleAnalyticsクラスをaddする。

下記のようなSampleクラスのpublicなメンバにCGoogleAnalyticsをIDEからドラッグアンドドロップして利用する。

public class Sample : MonoBehaviour
{
    // setup this component correctly befor. you will need a google analytics profileId for this
    public CGoogleAnalytics ga;

    // Use this for initialization
    void Start ()
    {
        // session starts
        ga.analytics.TrackSession(true);

        // tracking screens
        ga.analytics.TrackAppview("SampleScreen");

        // track some event
        ga.analytics.TrackEvent("eventCategory","eventLabel","eventAction",1234);

        // session ends
       ga.analytics.TrackSession(false);
    }

}

しかしこのサンプルのようにSessionをonしてすぐoffしてしまうと利用時間が短すぎると思うんだけどどうなんだろう...

仕組み

これもWWWクラスを使っているが、WWWFormも使っていてPOSTをしているのが分かる。コルーチンでその結果を取得してデバッグログを出力しているがほとんど意味が無いのでこれは消したほうがいいだろう(基本的にリリースするアプリで必要ないし、開発時もGoogleAnalyticsでエラーになったり、なったから対処するということは殆ど無いと思う)。

33
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?