프로그래밍/Android

안드로이드 구글 애널리틱스 (Google Analytics) 연동하기

Lou Park 2017. 3. 3. 02:21


안드로이드에서  구글 애널리틱스 연동하는 방법을 살펴보자!

구글이 제공하는 시작 가이드가 있지만 가이드대로 했더니 약간 부족한 면이 있어 포스팅한다.

구글 애널리틱스 콘솔 화면에서의 작업이 아닌 안드로이드 스튜디오에서 해야할 것들에 대해서 자세히 다룰 것이다.


구글 애널리틱스 콘솔에서 준비하기

우선 analytics.google.com 에 접속하여 앱 데이터를 만든다.

여기서 얻어야 할 것은 바로 UA-00000000-0 형태로 생긴 추적 코드다.



AndroidManifest.xml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.analytics">
 
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
  <application android:name="AnalyticsApplication">
        <!-- meta-data: Google Analytics -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    ...
  </application>
</manifest>
cs


안드로이드 스튜디오에 들어가서 프로젝트를 열고, AndroidManifest.xml 파일을 연다.
<manifest> 태그 아래에 인터넷, 액세스 네트워크 스테이트 퍼미션을 추가한다.
그리고 <application> 태그에는 android:name 속성을 추가하는데, 이름은 아무렇게나 해도 상관없다.
여기서는 구글 예제를 따라서 AnalyticsApplication 으로 할 것이다.
그리고 <application> 태그 아래에 저 메타 태그를 추가한다.

build.gradle (프로젝트 레벨)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}
 
allprojects {
    repositories {
        jcenter()
    }
}
 
task clean(type: Delete) {
    delete rootProject.buildDir
}
 
cs

두 개의 build.gradle 중 app 레벨 말고 프로젝트 레벨에 있는 build.gradle을 열어서 7번째 줄에 있는 'classpath...' 라인을 추가한다.

build.gradle (앱 레벨)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        ...
    }
    buildTypes {
        ...
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support'module'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services-analytics:10.0.1' // GA
    testCompile 'junit:junit:4.12'
}
 
apply plugin: 'com.google.gms.google-services'
 
cs

그리고 나머지 앱 레벨의 build.gradle에는 다음과 같이 한다.
추가해야 할 줄은 20번줄 (compile ... ), 24번줄 (apply plugin ...) 밖에 없지만 이해를 돕기 위해 전체 코드를 가져왔다.
20번째 줄은 구글에서 업데이트 할 때마다 뒤에 숫자가 바뀌는데 최신 버전은 여기에 있다.

google-services.json 파일 얻기

https://developers.google.com/mobile/add?platform=android&cntapi=analytics&cnturl=https:%2F%2Fdevelopers.google.com%2Fanalytics%2Fdevguides%2Fcollection%2Fandroid%2Fv4%2Fapp%3Fconfigured%3Dtrue&cntlbl=Continue%20Adding%20Analytics


(호우~ 링크가 우주끝까지 나가려하네)

위 링크로 들어가서 앱 이름을 영어로 적고, 앱 패키지 네임을 적으면 앱이 만들어진다. (혹은 만들어 진 앱에서 선택할 수있음)

그러고 단계를 따라가다 보면 google-services.json 파일을 얻을 수 있다. 

저장해서 프로젝트의 app 폴더 아래 두자.



AnalyticsApplication.java 만들기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import android.app.Application;
 
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
 
public class AnalyticsApplication extends Application {
    public static GoogleAnalytics analytics;
    public static Tracker tracker;
    private final String trackingId = "<your Tracking ID>";
 
    public void onCreate() {
        analytics = GoogleAnalytics.getInstance(this);
        analytics.setLocalDispatchPeriod(1800);
        tracker = getDefaultTracker();
    }
 
    synchronized public Tracker getDefaultTracker() {
        if (tracker == null) {
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            tracker = analytics.newTracker(trackingId);
            tracker.enableExceptionReporting(true);
            tracker.enableAdvertisingIdCollection(true);
            tracker.enableAutoActivityTracking(true);
        }
        return tracker;
    }
}
cs


AnalyticsApplication은 다음과 같이 설정 해 주면 된다.

나중에 Activity가서는 static으로 tracker를 가져와도 되고, 그때 그때 getDefaultTracker()를 이용해 가져와도 된다.

13줄의 setLocalDispatchPeriod(1800)이 궁금할 수도 있으실 텐데 저건 구글 플레이 서비스가 작동안될 때 보내는 주기라고 하는데...

1로 한다고 해서 평소에 달라지는건 없다고 한다.

The dispatching period in seconds when Google Play services is unavailable.

The default period is 1800 seconds or 30 minutes

아무튼 이렇게 하면 GA를 연동할 수 있다.

휴 귀찮다...ㅠㅠ


추가. 이벤트 보내기


1
2
3
4
5
6
public void sendEventGoogleAnalytics(String title, String message) {
        tracker = application.getDefaultTracker();
        tracker.send(new HitBuilders.EventBuilder()
                .setCategory(title).setAction(message)
                .build());
}
cs


예를들어 어떤 버튼을 클릭했을 때, 이벤트를 받고싶다! 하면 버튼의 onClick 함수 안에 

sendEventGoogleAnalytics("클릭", "버튼을 클릭했음"); 이런식으로 적어주면 된다.

저건 내가 임의로 만든 함수이고, 안 속 내용을 참조하면 이벤트를 어떻게 보내는지 알 수 있다.