고급 구성

이 문서에서는 Android용 Google 애널리틱스 SDK v4의 고급 구성 기능 중 몇 가지를 간략하게 설명합니다.

개요

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

초기화

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

구성 파일 사용

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

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 애널리틱스에 저장 전에 IP 주소의 마지막 옥텟을 삭제하여 SDK에서 전송한 IP 정보를 익명처리합니다.

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

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

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

mTracker.setAnonymizeIp(true)

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

테스트 및 디버깅

Android용 Google 애널리틱스 SDK v4는 더 쉽게 테스트하고 디버깅할 수 있는 도구를 제공합니다.

테스트 실행

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

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

// 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에 로깅합니다. 기본적으로 ERROR, WARN, INFO 수준만 사용 설정됩니다. 디버그 수준을 사용 설정하려면 기기나 에뮬레이터에서 다음 adb 명령어를 실행하세요.

adb shell setprop log.tag.GAv4 DEBUG

logcat의 Google 애널리틱스 메시지만 보려면 다음 명령어를 사용하세요.

adb logcat -v time -s GAv4

자세한 내용은 GoogleAnalytics 로거 참조를 확인하세요.