Android v3 (기존) - 유니버설 애널리틱스 태그

이 가이드에서는 Android용 Google 태그 관리자 SDK를 사용하여 일반적인 유니버설 애널리틱스 태그를 구현하는 방법을 설명합니다.

  1. 일반적인 유니버설 애널리틱스 (UA) 태그 구성
    1. 앱 조회수 전송 (화면 조회수)
    2. 이벤트 전송
    3. 전자상거래 데이터 전송
      1. 전자상거래 데이터 영역 변수
    4. 설치 리퍼러 기여 분석

일반적인 유니버설 애널리틱스 (UA) 태그 구성

Google 태그 관리자를 사용하여 애플리케이션에 유니버설 애널리틱스를 구현하면 앱 바이너리를 다시 빌드하고 마켓에 다시 제출할 필요 없이 Google 애널리틱스 구현을 즉시 변경할 수 있습니다.

이 가이드에서는 유니버설 애널리틱스 태그 및 Android용 Google 태그 관리자 SDK를 사용하여 다음과 같은 작업을 수행하는 방법을 설명합니다.

앱 조회 전송 (화면 조회수)

앱에서 새 화면이 열릴 때마다 Google 애널리틱스로 앱 보기 (화면 조회수)를 전송하는 방법은 다음과 같습니다.

  1. 화면 이름 매크로 만들기
  2. OpenScreenEvent 규칙 만들기
  3. UA 앱 조회 (화면 조회수) 태그 만들기
  4. 이벤트 및 화면 이름을 데이터 영역에 푸시하도록 코드 업데이트

1. 화면 이름 매크로 만들기

다음 설정 값을 사용하여 새 화면 이름 매크로를 만듭니다.

매크로 이름 : screen name
매크로 유형 : Data Layer Variable
데이터 영역 변수 이름 : screenName

2. OpenScreenEvent 규칙 만들기

다음 구성 값을 사용하여 새 UA 앱 보기 (화면 조회수) 태그를 실행하는 데 사용할 새 규칙을 만듭니다.

규칙 이름 : OpenScreenEvent
조건: {{ event }}이(가) openScreen과(와) 같음

3. 앱 보기 (화면 조회수) UA 태그 만들기

다음 구성 값을 사용하여 새 UA 태그를 만듭니다.

태그 이름 : Screen Open
추적 ID : 속성 ID
태그 유형 : Universal Analytics (beta)
추적 유형 : AppView
기본 구성 - 앱 이름 : {{ app name }}
기본 구성 - 앱 버전 : {{ app version }}
기본 구성 - 화면 이름 : {{ screen name }}}

4. 이벤트 및 화면 이름을 데이터 영역으로 푸시하도록 코드 업데이트

다음 예와 같이 openScreen 이벤트 및 screenName 값을 데이터 영역에 푸시하는 코드를 앱에 추가합니다.

// Push an 'openScreen' event to the data layer.
import com.google.tagmanager.DataLayer;
import com.google.tagmanager.TagManager;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

  private static final String SCREEN_NAME = "Home Screen";
  private DataLayer mDataLayer;

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

  @Override
  public void onStart() {
    super.onStart();
    mDataLayer = TagManager.getInstance(this).getDataLayer();

    // This call assumes the container has already been opened, otherwise events
    // pushed to the DataLayer will not fire tags in that container.
    mDataLayer.push(DataLayer.mapOf("event", "openScreen",        // Event, Name of Open Screen Event.
                                    "screenName", SCREEN_NAME));  // Name of screen name field, Screen name value.
  }
}

이벤트 전송

사용자가 앱의 UI 컨트롤 또는 콘텐츠와 상호작용할 때 Google 애널리틱스로 이벤트를 전송하는 방법은 다음과 같습니다.

  1. (선택사항) 이벤트 매크로 만들기
  2. 이벤트 규칙 만들기
  3. UA 이벤트 태그 만들기
  4. 이벤트 및 모든 이벤트 매크로 값을 데이터 영역에 푸시하도록 코드 업데이트

다음 단계에서는 사용자가 동영상 재생을 시작할 때 시작되는 이벤트에서 어떻게 작동하는지 보여줍니다.

1. (선택사항) 이벤트 매크로 만들기

이벤트가 카테고리, 작업, 라벨 또는 값 필드에 데이터 영역 변수를 사용하는 경우 먼저 인터페이스에서 이러한 매크로를 구성해야 합니다. 이 예에서 동영상 재생 이벤트 태그는 재생된 동영상의 이름을 제공하는 데이터 영역 변수를 사용합니다.

이 동영상 이름을 구현하려면 다음 구성 값으로 새 매크로를 만듭니다.

매크로 이름 : video name
매크로 유형: Data Layer Variable
데이터 영역 변수 이름 : videoName

2. 이벤트 규칙 만들기

데이터 영역으로 푸시될 때 이벤트 태그가 실행되는 규칙을 만듭니다. 동영상 재생 예에서 새 규칙의 구성 값은 다음과 같습니다.

규칙 이름 : VideoPlayEvent
조건 : {{ event }}이(가) videoPlay과(와) 같음

UA 이벤트 태그 만들기

이전 단계에서 만든 규칙이 true로 평가될 때 실행되는 UA 이벤트 태그를 만듭니다. 동영상 재생 예에서 이 태그는 다음과 같습니다.

태그 이름 : Video Play Event
추적 ID : 속성 ID
태그 유형 : Universal Analytics (beta)
추적 유형 : Event
이벤트 추적 매개변수 - 카테고리 : Video
이벤트 추적 매개변수 - 액션 : Play
이벤트 추적 매개변수 - 라벨 : {{ video name }}
기본 구성 - 앱 이름 : {{ app name }}
기본 구성 - 앱 버전 : {{ app version }}
기본 구성 - 앱 버전 : {{ app version }}
{{ screen name }}

이벤트를 데이터 영역으로 푸시하도록 코드 업데이트

마지막으로 사용자가 상호작용을 완료할 때 이벤트 값과 태그에 필요한 데이터 영역 변수를 모두 데이터 영역에 푸시하도록 코드를 업데이트합니다. 동영상 재생 예에서 이 코드는 다음과 같습니다.

//  Push a 'videoPlay' event to the data layer.
import com.google.tagmanager.DataLayer;
import com.google.tagmanager.TagManager;

public class VideoPlayer {

  // Called when a user initiates a video playback.
  public void onPlay(Video v) {
    DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();

    // This call assumes the container has already been opened, otherwise events
    // pushed to the DataLayer will not fire tags in that container.
    dataLayer.push(DataLayer.mapOf("event", "videoPlay",        // Event, Name of Open Screen Event.
                                   "videoName", v.getName());   // Additional data layer variables used by the event tag.
    play(v);
  }

  // Rest of implementation;

}

전자상거래 전송

사용자가 인앱 구매를 완료할 때 거래 및 관련 항목을 Google 애널리틱스로 전송하는 방법은 다음과 같습니다.

  1. 트랜잭션 규칙 만들기
  2. UA 거래 태그 만들기
  3. 이벤트 및 트랜잭션 / 항목 데이터를 DataLayer에 푸시하도록 코드 업데이트

1. 트랜잭션 규칙 만들기

다음으로 구성 값을 아래와 같이 새 규칙을 만듭니다.

규칙 이름 : TransactionCompleted
조건 : {{ event }}이(가) transaction과(와) 같음

2. UA 거래 태그 만들기

다음 값을 사용하여 UA 거래 태그를 만듭니다.

태그 이름 : Transaction Completed
추적 ID : 속성 ID
태그 유형 : Universal Analytics (beta)
추적 유형 : Transaction
기본 구성 - 앱 이름 : {{ app name }}
기본 구성 - 앱 버전 : {{ app version }}
기본 구성 - 화면 이름 : {{ screen name }}

3. 이벤트 및 트랜잭션 / 항목 데이터를 DataLayer에 푸시하도록 코드 업데이트

마지막으로 코드를 업데이트하여 거래 이벤트와 관련 거래 및 항목 데이터를 데이터 영역으로 푸시합니다. 거래와 항목 데이터에는 지원되는 데이터 영역 변수 이름을 사용해야 합니다.

// Called when a user completes a transaction.
public void onPurchaseCompleted(Purchase p) {

  DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();

  // Put maps of item data into an array that will be pushed to the data layer.
  ArrayList<Map<String, String>> purchasedItems = new ArrayList<Map<String, String>>();
  for (Item i : p.items) {
    HashMap<String, String> currentItem = new HashMap<String, String>();

    currentItem.put("name", i.getProductName());
    currentItem.put("sku", i.getProductSku());
    currentItem.put("category", i.getProductCategory());
    currentItem.put("price", i.getProductPrice());
    currentItem.put("currency", "USD");
    currentItem.put("quantity", i.getProductQty());

    purchasedItems.add(currentItem);
  }

  // This call assumes the container has already been opened, otherwise events
  // pushed to the DataLayer will not fire tags in that container.
  dataLayer.push(DataLayer.mapOf("event", "transaction",               // Event, Name of Transaction Event.
                                 "transactionId", p.getTransId(),      // Additional fields required by the tag.
                                 "transactionTotal", p.getTotal(),
                                 "transactionAffiliation", "In-app Store",
                                 "transactionTax", p.getTax(),
                                 "transactionShipping", p.getShippingCost(),
                                 "transactionCurrency", "USD",
                                 "transactionProducts", purchasedItems));

  // Since the data layer is persistent, you should reset fields to null after
  // you are done pushing the transaction.
  dataLayer.push(DataLayer.mapOf("transactionId", null,
                                 "transactionTotal", null,
                                 "transactionAffiliation", null,
                                 "transactionTax", null,
                                 "transactionShipping", null,
                                 "transactionCurrency", null,
                                 "transactionProducts", null));
}

지원되는 전자상거래 데이터 영역 변수

UA 거래 태그는 다음과 같은 데이터 영역 변수를 지원합니다.

거래 변수

변수 이름 설명 유형 필수
transactionId 고유 거래 식별자 string 지원됨
transactionAffiliation 파트너 또는 상점 string No
transactionTotal 거래의 총 가치 string No
transactionTax 거래에 대한 과세액 string No
transactionShipping 거래 배송비 string No
transactionCurrency 거래 통화 string No
transactionProducts 거래에서 구매한 상품 목록 항목 변수가 포함된 지도의 배열입니다. No

항목 변수

변수 이름 설명 유형 필수
name 제품 이름 string 지원됨
sku 제품 SKU string No
category 제품 카테고리 string No
price 상품 가격 string No
currency price의 통화 유형 string No
quantity 상품 수량 string No

리퍼러 기여 분석 설치

가능한 경우 AndroidManifest.xml 파일에 다음 서비스 및 수신기가 등록되면 설치 리퍼러 데이터가 Google 애널리틱스 조회 또는 Google Ads 리마케팅 픽셀 요청에 자동으로 포함됩니다.

<!-- Used for install referrer tracking -->
<service android:name="com.google.tagmanager.InstallReferrerService" />
<receiver android:name="com.google.tagmanager.InstallReferrerReceiver" android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>