이 문서에서는 Android SDK의 레거시 버전을 설명합니다. 애널리틱스를 처음 사용하는 경우 최신 SDK를 사용하세요. 자세히 알아보기

고급 구성

이 문서에서는 Android용 Google 애널리틱스 SDK v4의 고급 구성 기능을 간략하게 소개합니다.

개요

Android용 Google 애널리틱스 SDK v4는 데이터를 설정하고 Google 애널리틱스로 전송하는 Tracker 클래스와 구현의 전역 구성 값의 인터페이스 역할을 하는 GoogleAnalytics 싱글톤을 제공합니다.

초기화

데이터를 측정하려면 먼저 Context 객체와 Google 애널리틱스 속성 ID를 제공하여 GoogleAnalytics 싱글톤을 통해 추적기를 하나 이상 초기화해야 합니다. 자세한 내용은 Google 애널리틱스 참조를 확인하세요.

구성 파일 사용

구성 파일을 사용하여 추적기를 초기화할 수도 있습니다. 예를 들면 다음과 같습니다.

package com.google.android.apps.mobileplayground;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;

/**
 * An extension to Application class to provide tracker for analytics purposes. Having the tracker
 * instances here allows all the activities to access the same tracker instances. The trackers can
 * be initialised on startup or when they are required based on performance requirements.
 */
public class AnalyticsSampleApp extends Application {

  // The following line should be changed to include the correct property id.
  private static final String PROPERTY_ID = "UA-XXXXX-Y";

  /**
   * Enum used to identify the tracker that needs to be used for tracking.
   *
   * A single tracker is usually enough for most purposes. In case you do need multiple trackers,
   * storing them all in Application object helps ensure that they are created only once per
   * application instance.
   */
  public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

  public AnalyticsSampleApp() {
    super();
  }
  synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
          : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
              : analytics.newTracker(R.xml.ecommerce_tracker);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

데이터 설정 및 전송

빌더를 사용하여 Google 애널리틱스로 데이터를 전송하고 추적기 send 메서드를 통해 전송하는 매개변수-값 쌍을 설정합니다.

다음 예는 앱 뷰를 빌드하고 추적기 전송 메서드를 호출하여 Google 애널리틱스로 화면 조회수를 전송하는 방법을 보여줍니다.

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

측정 프로토콜 앰퍼샌드 구문

측정 프로토콜 앰퍼샌드 구문을 사용하여 HitBuilders.ScreenViewBuilder와 함께 단일 조회에서 값을 설정할 수 있습니다. 모든 후속 조회에 값을 설정하려면 추적기 객체 자체를 사용하세요.

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

사용 가능한 측정 프로토콜 매개변수의 전체 목록은 측정 프로토콜 매개변수 참조를 확인하세요.

여러 조회에 값 적용하기

다음 예와 같이 추적기에 직접 설정된 모든 값이 유지되고 여러 조회에 적용됩니다.

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

// This event will also be sent with the most recently set screen name.
// Build and send an Event.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Clear the screen name field when we're done.
t.setScreenName(null);

여러 조회에서 유지하려는 값만 추적기에서 직접 설정해야 합니다. 후속 화면 조회와 이벤트 조회에 동일한 값을 적용할 수 있으므로 추적기에 화면 이름을 설정하는 것이 합리적입니다. 그러나 조회마다 변경될 수 있으므로 추적기에는 조회 유형과 같은 필드를 설정하지 않는 것이 좋습니다.

여러 추적기 사용

모바일 애플리케이션에서는 여러 개의 추적기를 사용하여 서로 다른 속성으로 데이터를 전송할 수 있습니다.


public class MyApp extends Application {

  public void initTrackers() {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

    globalTracker = analytics.newTracker(R.xml.global_tracker);
    ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker);
  }

  public static Tracker globalTracker;
  public static Tracker ecommerceTracker;

  ...
}

모바일 애플리케이션에는 여러 개의 추적기가 있을 수 있지만 추적기에서 enableExceptionReporting() 메서드를 호출하여 추적기에서 포착되지 않은 예외를 보고할 수 있습니다.

샘플링

클라이언트 측 샘플링을 사용 설정하여 Google 애널리틱스로 전송되는 조회수를 제한할 수 있습니다. 앱의 사용자가 많거나 대량의 데이터를 Google 애널리틱스로 전송하는 경우, 샘플링을 사용 설정하면 중단 없는 보고가 보장됩니다.

예를 들어 50%의 속도로 클라이언트 측 샘플링을 사용 설정하려면 구성 파일에서 다음 매개변수를 사용합니다.

<string name="ga_sampleFrequency">50.0</string>

추적기에 대해 클라이언트 측 샘플링을 프로그래매틱 방식으로 사용 설정하려면 다음 안내를 따르세요.

mTracker.setSampleRate(50.0d);

앱 수준 선택 해제

앱 수준 선택 해제 플래그를 사용 설정하면 앱 전체에서 Google 애널리틱스를 사용 중지할 수 있습니다. 이 플래그는 앱이 시작될 때마다 설정되어야 하며 기본값은 false입니다.

앱 수준 선택 해제 설정을 가져오려면 다음을 사용합니다.

boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();

앱 수준 선택 해제를 설정하려면 다음을 사용하세요.

GoogleAnalytics.getInstance(this).setAppOptOut(true);

일반적인 구현에서 앱은 SharedPreferences의 변경사항을 수신 대기하고 그에 따라 Google 애널리틱스 선택 해제 설정을 업데이트할 수 있습니다.

SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals(TRACKING_PREF_KEY)) {
      GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
    } else {
      // Any additional changed preference handling.
    }
  }
});

클라이언트 측 사용자 데이터 삭제

최종 사용자의 Google 애널리틱스 클라이언트 측 데이터를 재설정하거나 삭제해야 하는 경우 클라이언트 ID 파일을 삭제할 수 있습니다.

gaClientId 파일을 삭제하면 새 클라이언트 ID가 생성되어 모든 후속 조회에서 새 클라이언트 ID를 사용합니다. 이전 데이터는 새 클라이언트 ID와 연결되지 않습니다.

gaClientId 파일을 삭제하려면 Context.deleteFile 메서드를 사용합니다.

context.deleteFile("gaClientId");

IP 익명 처리

IP 익명 기능을 사용 설정하면 Google 애널리틱스에 SDK가 전송하는 IP 정보를 저장하기 전에 IP 주소의 마지막 옥텟을 삭제하여 익명처리합니다.

IP 기능을 익명처리하려면 구성 파일에서 다음 매개변수를 사용하세요.

<string name="ga_anonymizeIp">true</string>

추적기에 대해 프로그래매틱 방식으로 IP 기능을 익명처리하려면 setAnonymizeIp 메서드를 사용합니다.

mTracker.setAnonymizeIp(true)

setAnonymizeIp 메서드는 언제든지 호출할 수 있습니다.

테스트 및 디버깅

Android용 Google 애널리틱스 SDK v4에서는 보다 쉽게 테스트하고 디버깅할 수 있는 도구가 제공됩니다.

테스트 실행

SDK는 설정된 경우 데이터가 Google 애널리틱스로 전송되지 않도록 방지하는 dryRun 플래그를 제공합니다. 구현을 테스트하거나 디버깅할 때 Google 애널리틱스 보고서에 테스트 데이터가 표시되지 않게 하려면 dryRun 플래그를 설정해야 합니다.

테스트 실행 플래그를 설정하려면 다음 안내를 따르세요.

// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogleAnalytics.getInstance(this).setDryRun(true);

Logger

Google 애널리틱스는 Android Log 시스템을 사용하여 GAv4 태그의 logcat에 로깅합니다. 기본적으로 오류, 경고, 정보 수준만 사용 설정됩니다. DEBUG 수준을 사용 설정하려면 기기 또는 에뮬레이터에서 다음 adb 명령어를 실행하세요.

adb shell setprop log.tag.GAv4 DEBUG

logcat에서 Google 애널리틱스 메시지만 보려면 다음 명령어를 사용합니다.

adb logcat -v time -s GAv4

자세한 내용은 Google 애널리틱스 로거 참조를 확인하세요.