본문 바로가기
개발일기/부산버스

안드로이드 앱에 구글 애널리틱스 붙이기 - 추적기 달기

by 유주원 2015. 2. 3.

구글 애널리틱스에 대한 환경설정을 끝냈다면..

이제 코드에 추적기를 달아보자..

트래커 객체를 생성해야 하는데 트래커 객체는 전역으로 생성하고 사용할 수 있도록 application 클래스를 상속 받은

클래스를 하나 만든 후 그 안에 트래커를 선언하자. 

추적 ID는 구글 analytics에서 계정을 생성했을 때 발급된 ID 값을 입력하면 된다. 

형식은 UA-XXXX 형태로 되어 있다.


코드 상에서 보면 resource file로 R.xml.global_tracker와 R.xml.ecommerce_tracker 파일이 필요한데 해당 파일을

만들어 주자.

global_tracker.xml <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"  tools:ignore="TypographyDashes">

  <string name="ga_logLevel">verbose</string>

<!-- Enable automatic Activity measurement -->
 
<bool name="ga_autoActivityTracking">true</bool>

   
<!-- The screen names that will appear in reports -->
   
<screenName name="com.android.test.test1Activity">
        Test1Activity
   
</screenName>
   
<screenName name="com.android.test.test2Activity">
        Test2Activity
   
</screenName>
   
<!--  The following value should be replaced with correct property id. -->
   
<string name="ga_trackingId">추적 ID</string>
</resources>

ecommerse_tracker.xml <?xml version="1.0" encoding="utf-8"?>
<resources>
 
<integer name="ga_sessionTimeout">300</integer>
  <string name="ga_trackingId">추적 ID</string>
</resources>

Application 클래스를 상속받은 전역 클래스를 하나 만들었기 때문에 이 클래스를 manifest 파일에 등록시켜줘야 한다.

<application> 요소 안에 해당 클래스 이름을 기입한다.


<application
      android:name=".ApplicationController"
      ....>

     


이제는 실제로 트래킹 하려고 하는 Activity에서 해당 코드를 호출하여 트래킹 신호를 보내도록 하겠다.

해당 activity에 onCreate(), onStart(), onStop() 함수를 overriding 한후 아래의 코드를 집어넣는다.


@Override
protected void onCreate(Bundle savedInstanceState){
    .....
    Tracker t = ((ApplicationController)getApplication()).getTracker(ApplicationController.TrackerName.APP_TRACKER);
    t.setScreenName("Test1Activity");
    t.send(new HitBuilders.AppViewBuilder().build());
}

@Override
protected void onStart(){
    super.onStart();
    GoogleAnalytics.getInstance(this).reportActivityStart(this);
}

@Override
protected void onStop(){
    super.onStop();
    GoogleAnalytics.getInstance(this).reportActivityStop(this);
}
   


위와 같이 설정해 주면 사용자가 어떤 화면에 머물러 있는지를 확인해 볼수 있다.


버튼 클릭에 대한 이벤트를 받고 싶다면?

Activity에 대한 리포트가 아니라 실제 사용자가 어떤 버튼을 클릭했는지에 대한 이벤트를 알고 싶은 경우에는 아래와 같은

코드를 작성하면 된다.


@Override
public void onClick(View v){
    int id = v.getId();
    Tracker t = ((ApplicationController)getApplication()).getTracker(ApplicationController.TrackerName.APP_TRACKER);

    if(id == R.id.button1){
        t.send(new HitBuilders.EventBuilder().setCategory("Test1Activity").setAction("Press Button").setLabel("Button1 Click").build());
        break;
    }else if(id == R.id.button2){
        
t.send(new HitBuilders.EventBuilder().setCategory("Test2Activity").setAction("Press Button").setLabel("Button2 Click").build());

        break;
    }
}


구글 애널리틱스 결과 화면