본문 바로가기

프로그래밍/Android 짜투리 지식

[android] google Analytics

google analytics


google analytics를 처음 접했을때는 이걸 어떻게 해야하는지 감도 않오고, api는 수시로 바뀌고 method들은 시도때도없이 deplicate되어서 뭐가 뭔지 감도 잘 안왔다.

그런데 막상 알아가보면 너무나도 간단하다.


1. 뭐할때 쓰나


 - 특정 View(activity)에 대한 표시

 - 특정 Event에 대한 표시


2. 범위는?


 - app version(androidmanifest.xml에 있는 version code)

 - 기기 모델

 - os version

 - 등등


3. 어디서 보면되나


  http://www.google.com/analytics/

  android reference : 

  https://developers.google.com/analytics/devguides/collection/android/v3/


  현재 v3가 beta로(v2도 beta였다.) 최신이다.



4. 어떻게 활용되는가


  - 사용자의 앱 내 이동 루트, 내용(어떤 메뉴를 잘 사용하는지)

  - 백화점을 예로 들어보자. 


1. 백화점에는 4개의 출입구가 있다. (동서남북 문) 

2. 1층 부터 10층까지의 각 큰 범위의 매장이 있다.

3. 각 층에 각 해당 카테고리에 대한 브랜드가 있다.

4. 각 층엔 엘리베이터와 에스컬레이터가 있다.


요구 : 


1. 백화점 매니저는 이용자가 동문으로 입장을 하는지, 서문으로 입장하는지, 남,북문으로 입장하는지 그 사용빈도를 알고싶다.


2. 그 문으로 출입한 사람이 곧장 엘리베이터를 타는지, 에스컬레이터를 타는지 아니면 1층에서 바로 쇼핑을 하는지 알고싶다.


3. 각 층의 브랜드 중에서도 사람들이 선호하는 매장을 알고싶다.


이런 요구에 대해서 각각 빈도에 대한 통계가 가능하다. 

여기에서 요구에 대한 것을 google analytics로 말해보면


1번은 단순 page view로 볼 수 있고

2번은 사용자의 컨텐츠 소비경로를 알 수 있고

3번은 사용자의 선호 컨텐츠를 알 수 있다.


여기에 custom dimension, custom metrics도 있어서 google analytics에서 준비한 4지선다 개념의 내용들에 더 추가하여 5번 6번 등도 설정할 수 있다.


5. 사용은 어떻게 하나


  실제 사용법은 매우 간단하다.

ios는 잘 모르지만 android는 google에서 EasyTracker라는 google analytics api를 아주 쉽게 interface 해놓은 클래스가 있다. 


아래 설명은 EasyTracker를 기준으로 설명한다.

이걸 쓴다면 내용은 아주 쉬워지는데, 세팅은 3가지만 하면된다.


1. google analytics를 사용할 activity에 대한 setting

  - onStart() : EasyTracker.getInstance(Context).startActivity(Activity)

  - onStop() : EasyTracker.getInstance(Context).stopActivity(Activity)


2. google analytics에 대한 setting

  - anlytics.xml 에 set 해주면된다.


// Trackeing ID 

    <string name="ga_trackingId">UA-42681136-4</string> <!-- activity가 start 될때(위의 1번에 onStart()) sendScreen 할지 -->     <bool name="ga_autoActivityTracking">false</bool>     <!-- Debug 사용할지(Log, Exception 등) -->     <bool name="ga_debug">true</bool>     <bool name="ga_reportUncaughtExceptions">true</bool>          <!-- 하나의 세션이 유지되는 시간 ( 사용자 컨텐츠 소비 추적 등에 활용) -->     <integer name="ga_sessionTimeout">60</integer>     <!-- 쌓은 log들( evnet, view) 가 reporting 되는 시간 -->     <integer name="ga_dispatchPeriod">30</integer>          <!-- 각 activity의 풀 페키지 이름에 이름을 셋 하면 sendScreen에 자동으로 매핑된 이름이 적용된다.-->     <string name="com.example.main">메인</string>


3. event 또는 screen 설정


  v3 에서는 send()에 evnet와 screen에 대한 MapBuilder의 instance가 파라메터로 활용된다.

Event

EasyTracker.getInstance(context).send(MapBuilder.createEvent(category, action, label, value).builder());

View

EasyTracker.getInstance(context).send(MapBuilder.createAppView().builder());