Android용 Google 애널리틱스 SDK v1 (기존)

Android용 모바일 앱 SDK용 Google 애널리틱스를 사용하면 Android 기반 애플리케이션에서 Google 애널리틱스를 쉽게 구현할 수 있습니다. 이 문서에서는 SDK를 앱과 통합하는 방법을 설명합니다.

SDK 개요

이 SDK는 기존 웹사이트로 사용자를 추적하고 기존 웹페이지의 위젯과의 상호작용을 추적하도록 설계된 추적 모델을 사용합니다. 따라서 아래와 같은 용어는 기존 웹사이트 추적 모델을 반영하며, 모바일 애플리케이션 추적에 매핑됩니다. 이 SDK의 작동 방식을 이해하려면 애널리틱스 추적을 잘 알아야 합니다.

모바일 추적 SDK를 사용하여 다음 애널리틱스 상호작용 유형으로 휴대전화 애플리케이션을 추적합니다.

페이지 조회 추적
페이지 조회는 기존 웹사이트에 대한 트래픽 양을 측정하는 표준 수단입니다. 모바일 앱에는 HTML 페이지가 포함되어 있지 않으므로 페이지 조회 요청을 트리거할 시점과 빈도를 결정해야 합니다. 또한 페이지 조회 요청은 디렉터리 구조를 보고하도록 설계되었으므로 애널리틱스의 콘텐츠 보고서에서 페이지 경로 이름 지정을 활용하려면 요청의 구체적인 이름을 제공해야 합니다. 선택한 이름은 실제로 HTML 페이지가 아니더라도 애널리틱스 보고서에 페이지 경로로 채워지지만, 경로를 추가로 구성하여 호출에 유용하게 사용할 수 있습니다.
이벤트 추적
애널리틱스의 이벤트는 페이지 조회와는 별개로 웹페이지 요소와 사용자 상호작용을 추적하도록 설계되었습니다. Google 애널리틱스의 이벤트 추적 기능을 사용하면 애널리틱스 보고서 인터페이스의 이벤트 추적 섹션에서 보고되는 추가 호출을 수행할 수 있습니다. 이벤트는 카테고리를 사용하여 그룹화되며 이벤트별 라벨을 사용할 수도 있으므로 보고서의 유연성을 제공합니다. 예를 들어 멀티미디어 앱에서 동영상 카테고리에 재생/중지/일시중지 작업을 실행하고 각 동영상 이름에 라벨을 할당할 수 있습니다. 그러면 Google 애널리틱스 보고서에서 video 카테고리로 태그가 추가된 모든 이벤트의 이벤트를 집계합니다. 이벤트 추적에 관한 자세한 내용은 이벤트 추적 가이드를 참고하세요.
전자상거래 추적
전자상거래 추적 기능을 사용하여 장바구니 거래 및 인앱 구매를 추적합니다. 거래를 추적하려면 Transaction 클래스를 사용하여 전체 구매 정보를 나타내고 Item 클래스를 사용하여 장바구니의 각 제품을 나타냅니다. 데이터를 수집하면 Google 애널리틱스 인터페이스의 전자상거래 보고서 섹션에서 확인할 수 있습니다. 전자상거래 추적에 대한 자세한 내용은 전자상거래 추적 가이드를 참고하세요.
맞춤 변수
맞춤 변수는 Google 애널리틱스 추적을 미세 조정하기 위해 추적 코드에 삽입할 수 있는 이름-값 쌍 태그입니다. 맞춤 변수를 사용하는 방법에 관한 자세한 내용은 맞춤 변수 가이드를 참고하세요.

시작하기

요구사양

Google 애널리틱스 추적 기능을 Android 앱과 통합하려면 다음이 필요합니다.

설정

  • 프로젝트의 /libs 디렉터리에 libGoogleAnalytics.jar을 추가합니다.
  • 프로젝트의 AndroidManifest.xml 매니페스트 파일에 다음 권한을 추가합니다.
    • <uses-permission android:name="android.permission.INTERNET" />
    • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

애플리케이션이 성공적으로 설치되면 어떤 모습이어야 하는지 보여주는 예시 애플리케이션이 SDK에 포함되어 있습니다. 애널리틱스 통합 앱의 템플릿으로 사용할 수 있습니다.

SDK 사용

SDK를 사용하기 전에 먼저 www.google.com/analytics에서 무료 계정을 만들고 허위이지만 구체적인 웹사이트 URL (예: http://mymobileapp.mywebsite.com)을 사용하여 해당 계정에 새 웹 속성을 만들어야 합니다. 속성을 만든 후 새로 만든 속성에 생성된 웹 속성 ID를 기록하거나 보관해 두세요.

애플리케이션 내에서 또는 서비스 약관에서 사용자에게 앱 내에서의 사용자 활동을 익명으로 추적하고 보고할 권리를 보유해야 한다고 사용자에게 알려야 합니다. Google 애널리틱스 SDK 사용에는 추가적으로 Google 애널리틱스 서비스 약관이 적용되며, 이 경우 계정을 신청할 때 동의해야 합니다.

샘플 및 권장사항

code.google.com의 analytics-api-samples 프로젝트 아래에서 샘플 코드와 권장사항을 확인할 수 있습니다.

EasyTracker 라이브러리

EasyTracker 라이브러리를 사용할 수 있습니다. 애플리케이션 개발과 활동 수준 추적을 제공하며 개발 작업이 거의 필요하지 않습니다. analytics-api-samples 프로젝트의 다운로드 섹션에서 확인할 수 있습니다.

트래커 시작

GoogleAnalyticsTracker.getInstance()를 호출하여 추적기 싱글톤을 가져옵니다. 그런 다음 startNewSession 메서드를 호출하여 추적 중인 웹 속성 ID와 활동을 전달합니다. 애플리케이션에 활동이 하나만 있는 경우 활동의 onCreate 메서드에서 직접 이 메서드를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

package com.google.android.apps.analytics.sample;

import com.google.android.apps.analytics.GoogleAnalyticsTracker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity {

  GoogleAnalyticsTracker tracker;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    tracker = GoogleAnalyticsTracker.getInstance();

    // Start the tracker in manual dispatch mode...
    tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this);

    // ...alternatively, the tracker can be started with a dispatch interval (in seconds).
    //tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", 20, this);

    setContentView(R.layout.main);
    Button createEventButton = (Button)findViewById(R.id.NewEventButton);
    createEventButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        tracker.trackEvent(
            "Clicks",  // Category
            "Button",  // Action
            "clicked", // Label
            77);       // Value
      }
    });

    Button createPageButton = (Button)findViewById(R.id.NewPageButton);
    createPageButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
        // scope of session-level.
        tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
        // Track a page view. This is probably the best way to track which parts of your application
        // are being used.
        // E.g.
        // tracker.trackPageView("/help"); to track someone looking at the help screen.
        // tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
        // tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
        tracker.trackPageView("/testApplicationHomeScreen");
      }
    });

    Button quitButton = (Button)findViewById(R.id.QuitButton);
    quitButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        finish();
      }
    });

    Button dispatchButton = (Button)findViewById(R.id.DispatchButton);
    dispatchButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Manually start a dispatch, not needed if the tracker was started with a dispatch
        // interval.
        tracker.dispatch();
      }
    });
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    // Stop the tracker when it is no longer needed.
    tracker.stopSession();
  }
}

애플리케이션에 활동이 여러 개 있는 경우 analytics-api-samples 프로젝트의 다운로드 섹션에 제공된 EasyTracker 라이브러리를 사용할 수 있습니다.

페이지 조회 및 이벤트 추적

페이지 조회와 이벤트를 추적하는 방법은 간단합니다. 페이지 조회를 트리거할 때마다 추적기 객체의 trackPageView를 호출하기만 하면 됩니다. trackEvent를 호출하여 이벤트를 녹화합니다. 페이지 조회 및 이벤트에 대한 자세한 내용은 위의 SDK 개요를 참조하세요.

맞춤 변수 사용

맞춤 변수를 추가하는 것도 간단합니다. 모바일 SDK에서 제공하는 setCustomVar 메서드를 사용하면 됩니다. 각 맞춤 변수가 매핑되는 색인을 미리 계획하여 기존 변수를 덮어쓰지 않도록 하는 것이 좋습니다. 맞춤 변수에 관한 자세한 내용은 맞춤 변수 가이드를 참고하세요. setCustomVar 메서드는 데이터를 자체로 직접 전송하지 않습니다. 그 대신 추적되는 페이지 조회 또는 이벤트와 함께 데이터가 전송됩니다. 페이지 조회 또는 이벤트를 추적하려면 먼저 setCustomVar를 호출해야 합니다. 맞춤 변수의 기본 범위는 페이지 범위로 설정됩니다.

전자상거래 추적 이용하기

애플리케이션에서 전자상거래 추적을 사용 설정하는 데 사용하는 방법에는 4가지가 있습니다.

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

addTransactionaddItem를 호출하면 거래 또는 항목이 내부 전자상거래 버퍼에 추가되며, 여기에 더 많은 항목과 거래를 추가할 수 있습니다. trackTransactions를 호출하는 경우에만 트랜잭션과 항목이 디스패처로 전송되고 큐에 추가되어 Google 애널리틱스로 전송됩니다.

버퍼를 지우려면 clearTransactions 메서드를 호출하면 됩니다. 참고: 이전에 디스패처로 전송된 거래나 Google 애널리틱스에서 이미 수집한 거래는 기억되지 않습니다.

다음 샘플 코드를 사용하여 시작할 수 있습니다. 구매가 확인되거나 거부될 때 onPurchaseCompleted 메서드가 호출된다고 가정합니다.

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   *
   * @param purchase A PurchaseObject containing all of the transaction information needed to
   *     send the ecommerce hit to Google Analytics.
   */
  public void onPurchaseCompleted(PurchaseObject purchase) {
    tracker.addTransaction(new Transaction.Builder(
        purchase.getTransactionId(),
        purchase.getTotal())
        .setStoreName(purchase.getStoreName())
        .setTotalTax(purchase.getTotalTax())
        .setShippingCost(purchase.getShippingCost())
        .build());
    for (PurchaseLineItem lineItem : purchase.getLineItems()) {
        tracker.addItem(new Item.Builder(
            purchase.getTransactionId(),
            lineItem.getItemSKU(),
            lineItem.getItemCost(),
            lineItem.getQuantity())
            .setItemName(lineItem.getItemName())
            .setItemCategory(lineItem.getItemCategory())
            .build());
    }
    if (purchase.isConfirmed()) {
      tracker.trackTransactions();
    } else {
      // The purchase was denied or failed in some way.  We need to clear out
      // any data we've already put in the Ecommerce buffer.
      tracker.clearTransactions();
    }
  }

전자상거래에 대한 자세한 내용은 전자상거래 추적 가이드를 참조하세요.

IP 익명 처리

사용자 IP 정보를 익명처리하려면 setAnonymizeIp 메서드를 사용합니다. Google 애널리틱스에 SDK에서 전송된 정보를 익명처리하기 전에 저장하기 전에 IP 주소의 마지막 옥텟을 삭제합니다.

언제든지 setAnonymizeIp에 전화를 걸 수 있습니다.

샘플링 레이트 설정

setSampleRate 메서드를 사용하여 샘플링 레이트를 설정할 수 있습니다. 애플리케이션에서 애널리틱스 트래픽이 많이 생성되는 경우 샘플링 레이트를 설정하면 샘플링된 데이터를 사용하여 보고서가 생성되지 않을 수 있습니다. 샘플링은 순 사용자 전체에 걸쳐 일관되게 나타나므로 샘플링 레이트를 사용 설정하면 트렌드와 보고에 무결성이 유지됩니다. setSampleRate 메서드는 int 매개변수를 하나만 허용합니다. 이 매개변수의 유효한 값은 0~100 사이의 정수입니다.

속도를 0으로 설정하면 조회 생성이 사용 중지되고, 100으로 설정하면 모든 데이터가 Google 애널리틱스로 전송됩니다. 추적 메서드를 호출하기 전에 setSampleRate을 호출하는 것이 가장 좋습니다.

샘플링 개념 가이드에서 샘플링에 대해 자세히 알아볼 수 있습니다.

일괄 조회

연결 및 배터리 오버헤드를 줄이려면 추적 요청을 일괄 처리하는 것이 좋습니다. 추적 객체에 dispatch를 호출하면 언제든지 일괄 요청을 할 수 있으며 수동 또는 특정 시간 간격을 두고 호출할 수 있습니다.

알려진 문제

  • 다른 스레드에서 GoogleAnalyticsTracker 메서드를 호출하면 오류가 모호해질 수 있습니다. 모든 호출이 동일한 스레드에서 이루어져야 합니다.
  • 캠페인 추적

    SDK는 두 가지 유형의 캠페인 추적을 지원합니다.

    - Google Play 캠페인 추적 – Google Play를 통해 설치 추천을 추적할 수 있습니다.
    - 일반 캠페인 추적: 사용자를 앱으로 유도하는 캠페인을 추적할 수 있습니다.

    Google Play 캠페인 추적

    Android 1.6 OS 출시에서는 Google Play로 연결되는 다운로드 링크에 referrer URL 매개변수를 사용할 수 있습니다. Android용 Google 애널리틱스 SDK는 이 매개변수를 사용하여 애플리케이션의 Google 애널리틱스에서 캠페인 정보를 자동으로 채웁니다. 이를 통해 애플리케이션 설치 소스를 기록하고 향후 페이지 조회 및 이벤트와 연결할 수 있습니다. 이는 예를 들어 앱에 대한 특정 광고의 효과를 측정하는 데 유용할 수 있습니다.

    추천 추적을 이용하려면 프로젝트의 AndroidManifest.xml 매니페스트 파일에 다음 코드 스니펫을 추가해야 합니다.

    <!-- Used for install referrer tracking -->
    <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>
    

    Google Play를 통해 Google 애널리틱스 캠페인 추적을 설정하려면 아래 URL 작성 도구를 사용하여 추천 링크를 생성하세요. 링크를 사용하여 사용자를 애플리케이션으로 안내하세요. 애널리틱스 SDK는 추천 정보를 자동으로 파싱 및 기록하고 애널리틱스 보고서에 입력합니다.

    추천 링크를 생성하려면 Google Play 캠페인 URL 작성 도구를 사용하면 됩니다. 패키지 이름, 캠페인 소스, 캠페인 매체, 캠페인 이름이 필요합니다. 각 매개변수에 대한 자세한 설명은 아래 를 참고하세요.

    일반 캠페인 추적

    Android용 Google 애널리틱스 SDK 버전 1.3을 사용하면 Google Play 이외의 소스에 대한 캠페인을 추적할 수 있습니다. 예를 들어 광고의 링크를 통해 애플리케이션이 시작되었는지 알아보려면 애플리케이션을 실행한 인텐트에서 캠페인 추천 정보를 확인한 후 Google 애널리틱스에 캠페인 정보를 저장합니다.

    캠페인 추천 정보를 설정하려면 다음과 같이 setReferrer 메서드를 사용합니다.

      tracker.setReferrer(referrer);
    

    이 기능을 사용하는 데는 두 가지 제한사항이 있습니다. 먼저 setReferrer를 호출하기 전에 startNewSession을 호출해야 합니다. startNewSession를 호출하기 전에 Google 애널리틱스에서 사용하는 SQLite 데이터베이스가 설정되지 않았으므로 setReferrer를 사용해야 합니다. startNewSession를 호출하지 않은 경우 IllegalStateException를 받게 됩니다.

    두 번째 제한사항은 setReferrer에 전달된 추천 문자열이 특정 형식을 따라야 한다는 점입니다. URL 매개변수의 조합 형태여야 하며 gclid 매개변수 또는 utm_campaign, utm_medium, utm_source 각각 1개 이상을 포함해야 합니다. 후자의 경우 utm_term 및 utm_content 매개변수도 있을 수 있습니다.

    gclid 매개변수는 Google 애널리틱스를 Google Ads에 자동으로 연결하는 자동 태그 추가 기능의 일부입니다. 자동 태그 추가를 사용하는 캠페인 추천의 예는 다음과 같습니다.

    referrer = “gclid=gclidValue”;
    

    수동 캠페인 추천 문자열은 다음과 같습니다.

    referrer = “utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
    

    형식이 잘못된 리퍼러 문자열을 setReferrer에 전달하면 리퍼러 정보는 변경되지 않으며 false 반환 값을 받게 됩니다. 반환 값이 true인 경우 리퍼러가 업데이트되었으며 앞으로 모든 조회에 추가된다는 의미입니다.

    또한 setReferrer를 호출할 때 새 세션이 시작되고 true를 반환합니다.

    매개변수 필수 설명 예시
    utm_campaign 특정 제품 프로모션 또는 전략적 캠페인을 식별하기 위해 키워드 분석에 사용되는 캠페인 이름 utm_campaign=spring_sale
    utm_source 검색엔진, 뉴스레터 또는 기타 소스를 식별하는 데 사용되는 캠페인 소스 utm_source=google
    utm_medium 이메일 또는 클릭당비용 (CPC)과 같은 매체를 식별하는 데 사용되는 캠페인 매체 utm_medium=cpc
    utm_term 아니요 캠페인 용어. 유료 키워드를 찾기 위해 키워드 검색에 사용 utm_term=running+shoes
    utm_content 아니요 캠페인 콘텐츠: A/B 테스트 및 콘텐츠 타겟팅 광고로 동일한 URL을 가리키는 광고 또는 링크를 구분하는 데 사용됨 utm_content=logolink
    utm_content=textlink