앱 바이너리를 다시 빌드하여 마켓에 다시 제출할 필요가 없는 런타임 변경사항을 Google 애널리틱스 구현에 사용하려면 Google 태그 관리자 (GTM)를 사용하여 앱에 유니버설 애널리틱스(UA)를 구현합니다.
이 가이드에서는 유니버설 애널리틱스 태그와 iOS용 Google 태그 관리자 SDK를 사용하여 다음을 수행하는 방법을 설명합니다.
화면 조회수 전송
앱에서 새 화면이 열릴 때마다 Google 애널리틱스로 화면 조회수를 전송하는 방법은 다음과 같습니다.
1. 화면 이름 변수 만들기
GTM에서 화면 이름 변수를 만들려면 다음 단계를 따르세요.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 변수를 클릭합니다.
- 사용자 정의 변수 아래에 있는 새로 만들기를 클릭합니다.
- 제목 없는 변수를 클릭하여 변수 이름 화면 이름을 입력합니다.
- 변수 유형으로 데이터 영역 변수를 선택합니다.
- screenName을 데이터 영역 변수 이름으로 입력하고 기본값인 unknown screen을 설정합니다.
- 변수 만들기를 클릭합니다.
2. 오픈 화면 이벤트 트리거 만들기
GTM에서 트리거를 만들어 유니버설 애널리틱스 화면 조회 태그를 실행하는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 트리거를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 트리거를 클릭하여 트리거 이름 OpenScreenEvent를 입력합니다.
- 맞춤 이벤트를 선택합니다.
- 실행 시점에서 다음 조건을 입력합니다.
- 트리거 만들기를 클릭합니다.
3. 유니버설 애널리틱스 화면 조회 태그 만들기
화면 열기 이벤트에서 실행된 유니버설 애널리틱스 화면 조회 태그를 만드는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 태그를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 태그를 클릭하여 태그 이름 Open Screen을 입력합니다.
- Google 애널리틱스 제품을 선택합니다.
- 추적 ID를 입력합니다.
- 트랙 유형으로 앱 보기를 선택합니다.
- 설정 더보기를 클릭합니다.
- 설정할 필드를 클릭합니다.
- + 필드 추가를 반복적으로 클릭하여 다음 필드를 추가합니다.
- 계속을 클릭합니다.
- 실행 시점에서 커스텀을 클릭합니다.
- 맞춤 트리거 OpenScreenEvent를 선택합니다.
- 저장을 클릭합니다.
- 태그 만들기를 클릭합니다.
4. 화면 열기 이벤트 및 화면 이름을 데이터 영역에 푸시
openScreen
이벤트 및 screenName
값을 데이터 영역에 푸시하는 코드를 앱에 추가합니다. 예를 들면 다음과 같습니다.
// ViewController.m // Push an 'openScreen' event to the data layer. // #import "ViewController.h" #import "TAGDataLayer.h" #import "TAGManager.h" @implementation ViewController - (void)viewDidAppear { [super viewDidAppear]; // NOTE: A GTM container should already have been opened, otherwise events // pushed to the DataLayer will not fire tags in that container. TAGDataLayer *dataLayer = [TAGManager instance].dataLayer; [dataLayer push:@{@"event": @"openScreen", // Event, name of Open Screen Event. @"screenName": @"Home Screen"}]; // Name of the screen name field, screen name value. } // Rest of the ViewController implementation @end
이벤트 전송
사용자가 앱의 UI 컨트롤 또는 콘텐츠와 상호작용할 때 Google 애널리틱스로 이벤트를 전송하는 방법은 다음과 같습니다.
다음 단계에서는 사용자가 동영상 재생을 시작할 때 이벤트가 Google 애널리틱스로 전송되는 방식을 보여줍니다.
1. (선택사항) 이벤트 변수 만들기
이벤트가 데이터 영역 변수를 사용하여 카테고리, 작업, 라벨, 값 필드를 나타내는 경우 먼저 이러한 변수를 만들어야 합니다. 이 예에서 동영상 재생 이벤트 태그는 데이터 영역 변수를 사용하여 동영상의 이름을 가져옵니다.
GTM에서 동영상 이름 변수를 만들려면 다음 단계를 따르세요.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 변수를 클릭합니다.
- 사용자 정의 변수 아래에 있는 새로 만들기를 클릭합니다.
- 제목 없는 변수를 클릭하여 변수 이름 video name을 입력합니다.
- 변수 유형으로 데이터 영역 변수를 선택합니다.
- 데이터 영역 변수 이름에 videoName을 입력하고 기본값을 알 수 없는 동영상으로 설정합니다.
- 변수 만들기를 클릭합니다.
2. 이벤트 트리거 만들기
GTM에서 이벤트 트리거를 만들어 유니버설 애널리틱스 이벤트 태그를 실행하는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 트리거를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 트리거를 클릭하여 트리거 이름 VideoPlayEvent를 입력합니다.
- 맞춤 이벤트를 선택합니다.
- 실행 시점에서 다음 조건을 입력합니다.
- 트리거 만들기를 클릭합니다.
3. 유니버설 애널리틱스 이벤트 태그 만들기
동영상 재생 이벤트에서 실행되는 유니버설 애널리틱스 이벤트 태그를 만드는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 태그를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 태그를 클릭하여 태그 이름 동영상 재생 이벤트를 입력합니다.
- Google 애널리틱스 제품을 선택합니다.
- 추적 ID를 입력합니다.
- 추적 유형으로 이벤트를 선택합니다.
- 다음 이벤트 추적 매개변수를 입력합니다.
- 설정 더보기를 클릭합니다.
- 설정할 필드를 클릭합니다.
- + 필드 추가를 반복적으로 클릭하여 다음 필드를 추가합니다.
- 계속을 클릭합니다.
- 실행 시점에서 커스텀을 클릭합니다.
- 맞춤 트리거 VideoPlayEvent를 선택합니다.
- 저장을 클릭합니다.
- 태그 만들기를 클릭합니다.
4. 이벤트 및 이벤트 변수 값을 데이터 영역으로 푸시
videoPlay
이벤트 및 videoName
값을 데이터 영역에 푸시하는 코드를 작성합니다. 예를 들면 다음과 같습니다.
// VideoPlayer.m // Push a 'videoPlay' event to the data layer. // #import "TAGDataLayer.h" #import "TAGManager.h" #import "Video.h" #import "VideoPlayer.h" @implementation VideoPlayer // Called when a user initiates a video playback. - (void)onPlay:(Video *)video { TAGDataLayer *dataLayer = [TAGManager instance].dataLayer; // This call assumes the container has already been opened, otherwise events // pushed to the DataLayer will not fire tags in that container. [dataLayer push:@{@"event": @"videoPlay", // Event, name of Video Play Event. @"videoName": video.title, // Additional data layer variables used by the event tag. @"screenName": @"Home Screen"}]; [self play:video]; } // Rest of the implementation @end
전자상거래 데이터 전송
사용자가 인앱 구매를 완료하면 거래 및 관련 항목을 Google 애널리틱스로 전송하려면 다음 단계를 따르세요.
지원되는 거래 및 상품 변수 이름의 목록은 지원되는 전자상거래 데이터 영역 변수를 참고하세요.
1. 트랜잭션 트리거 만들기
GTM에서 거래 트리거를 만들어 유니버설 애널리틱스 거래 태그를 실행하는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 트리거를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 트리거를 클릭하여 트리거 이름 TransactionCompleted를 입력합니다.
- 맞춤 이벤트를 선택합니다.
- 실행 시점에서 다음 조건을 입력합니다.
- 트리거 만들기를 클릭합니다.
2. 유니버설 애널리틱스 거래 태그 만들기
거래 이벤트에 의해 실행되는 유니버설 애널리틱스 거래 태그를 만드는 방법은 다음과 같습니다.
- Google 태그 관리자 계정에 로그인합니다.
- 모바일 컨테이너를 선택합니다.
- 왼쪽 탐색 메뉴에서 태그를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 제목 없는 태그를 클릭하여 태그 이름 Transaction Completed를 입력합니다.
- Google 애널리틱스 제품을 선택합니다.
- 추적 ID를 입력합니다.
- 추적 유형으로 거래를 선택합니다.
- 설정 더보기를 클릭합니다.
- 설정할 필드를 클릭합니다.
- + 필드 추가를 반복적으로 클릭하여 다음 필드를 추가합니다.
- 계속을 클릭합니다.
- 실행 시점에서 커스텀을 클릭합니다.
- 맞춤 트리거 TransactionCompleted를 선택합니다.
- 저장을 클릭합니다.
- 태그 만들기를 클릭합니다.
3. 거래 이벤트, 거래, 항목을 데이터 영역으로 푸시하여
거래 이벤트, 거래, 관련 항목을 데이터 영역에 푸시하는 코드를 작성합니다. 지원되는 거래 및 상품 변수 이름을 사용하여 거래 및 상품 데이터를 데이터 영역으로 푸시해야 합니다. 예를 들면 다음과 같습니다.
// Called when a user completes a transaction. - (void)onPurchaseCompleted:(Purchase *)purchase { TAGDataLayer *dataLayer = [TAGManager instance].dataLayer; // An array to store dictionaries of item data. NSMutableArray *purchasedItems = [NSMutableArray array]; // Push item data into dictionaries and store in the purchasedItems array. // Note that item.price and item.quantity must be of type NSString. for (id item in purchase.items) { [purchasedItems addObject:@{@"name": item.name, @"sku": item.sku, @"category": item.category, @"price": item.price, @"currency": @"USD", @"quantity": item.quantity}]; } // This call assumes the container has already been opened, otherwise events // pushed to the DataLayer will not fire tags in that container. // Note that purchase.tax, purchase.shipping, and purchase.total must be of type NSString. [dataLayer push:@{@"event": @"transaction", // Event, name of Transaction Event. @"transactionId": purchase.transactionId, // Additional fields required by the tag. @"transactionTotal": purchase.total, @"transactionAffiliation": @"In-app Store", @"transactionTax": purchase.tax, @"transactionShipping": purchase.shipping, @"transactionCurrency": @"USD", @"transactionProducts": purchasedItems}]; // Since the data layer is persistent, you should reset fields to [NSNull null] after // you are done pushing the transaction. [dataLayer push:@{@"transactionId": [NSNull null], @"transactionTotal": [NSNull null], @"transactionAffiliation": [NSNull null], @"transactionTax": [NSNull null], @"transactionShipping": [NSNull null], @"transactionCurrency": [NSNull null], @"transactionProducts": [NSNull null]}]; }
Android용 Google 태그 관리자 SDK를 사용하여 유니버설 애널리틱스 향상된 전자상거래 기능을 구현하는 방법에 대한 자세한 내용은 향상된 전자상거래를 참고하세요.
지원되는 전자상거래 데이터 영역 변수
범용 거래 태그는 다음과 같은 거래 및 항목 변수 이름을 지원합니다.
트랜잭션 변수
변수 이름 | 설명 | 유형 | 필수 |
---|---|---|---|
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 |
향상된 전자상거래 데이터 보내기
향상된 전자상거래 데이터를 전송하는 방법을 알아보려면 향상된 전자상거래 개발자 가이드를 참고하세요.