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

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

SDK 개요

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

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

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

시작하기

요구사양

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

설정

  • Xcode를 열고 새 iPhone OS 프로젝트를 만듭니다.
  • SDK의 라이브러리 디렉터리에서 새 프로젝트로 GANTracker.hlibGoogleAnalytics.a를 드래그합니다.
  • 프로젝트에 CFNetwork 프레임워크를 포함하고 libsqlite3.0.dylib에 연결합니다.

모바일 앱용 Google 애널리틱스 SDK는 iOS 2.0 이상을 실행하는 모든 iPhone 또는 iPod Touch에서 사용할 수 있습니다. 라이브러리는 네이티브 애플리케이션을 지원하는 모든 iOS 버전과 호환됩니다.

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

SDK 사용

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

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

샘플 및 권장사항

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

EasyTracker 라이브러리

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

트래커 시작

[GANTracker sharedTracker]를 통해 가져온 추적기 싱글톤에서 startTrackerWithAccountID 메서드를 호출하여 추적기를 시작합니다. 이 메서드는 주로 앱 대리자의 applicationDidFinishLaunching 메서드에서 직접 호출합니다. 웹 서비스 ID, 필수 전달 기간, 선택적 위임을 전달합니다. 예를 들면 다음과 같습니다.

#import "BasicExampleAppDelegate.h"

#import "GANTracker.h"

// Dispatch period in seconds
static const NSInteger kGANDispatchPeriodSec = 10;

@implementation BasicExampleAppDelegate

@synthesize window = window_;

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  // **************************************************************************
  // PLEASE REPLACE WITH YOUR ACCOUNT DETAILS.
  // **************************************************************************
  [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-0000000-1"
                                        dispatchPeriod:kGANDispatchPeriodSec
                                              delegate:nil];

  NSError *error;
  if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1
                                                       name:@"iPhone1"
                                                      value:@"iv1"
                                                  withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackEvent:@"my_category"
                                       action:@"my_action"
                                        label:@"my_label"
                                        value:-1
                                   withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackPageview:@"/app_entry_point"
                                   withError:&error]) {
    // Handle error here
  }

  [window_ makeKeyAndVisible];
}

- (void)dealloc {
  [[GANTracker sharedTracker] stopTracker];
  [window_ release];
  [super dealloc];
}

@end

페이지 조회 및 이벤트 추적

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

맞춤 변수 사용

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

전자상거래 추적 이용하기

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

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

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

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

다음 샘플 코드를 사용하여 시작할 수 있습니다.

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   */
- (void) processPurchase:Purchase purchase {
  [[GANTracker sharedTracker] addTransaction:[purchase transactionId]
                                  totalPrice:[purchase totalPrice]
                                   storeName:[purchase store]
                                    totalTax:[purchase tax]
                                shippingCost:[purchase shipping]
                                   withError:&error];
  if (error) {
    // Handle error
  }
  for (PurchaseItem item in [purchase items]) {
    [[GANTracker sharedTracker] addItem:[purchase transactionId]
                                itemSKU:[item itemSKU]
                              itemPrice:[item price]
                              itemCount:[item count]
                           itemCategory:[item category]
                              withError:&error];
    if (error) {
      // Handle error
    }
  }

  if ([purchase isConfirmed]) {
    [[GANTracker sharedTracker] trackTransactions:&error];
  } 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.
    [[GANTracker sharedTracker] clearTransactions:&error];
  }
}

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

IP 익명 처리

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

다음은 설정 방법의 예입니다.

 [[GANTracker sharedTracker] setAnonymizeIp:YES];

언제든지 anonymizeIp를 설정할 수 있습니다.

샘플링 레이트 설정

sampleRate 속성을 사용하여 샘플링 레이트를 설정할 수 있습니다. 애플리케이션에서 애널리틱스 트래픽이 많이 생성되는 경우 샘플링 레이트를 설정하면 샘플링된 데이터를 사용하여 보고서가 생성되지 않을 수 있습니다. 샘플링은 순 사용자 전체에 걸쳐 일관되게 나타나므로 샘플링 레이트를 사용 설정하면 트렌드와 보고에 무결성이 유지됩니다. sampleRate 매개변수는 NSUInteger이며 0과 100 사이의 값을 가질 수 있습니다. 다음은 sampleRate를 95%로 낮추는 예입니다.

 [[GANTracker sharedTracker] setSampleRate:95];

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

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

일괄 조회

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

알려진 문제

  • 추천/트래픽 소스: 현재 iOS 기기에서 앱 다운로드의 캠페인/추천 소스를 추적할 수 없습니다.
  • 다음 상황에서는 dispatch를 호출하지 않는 것이 좋습니다.
    • applicationWillTerminate 메서드에서
    • applicationDidEnterBackground
    • stopTracker에 전화하기 전에
    이렇게 하면 조회가 두 번 전송될 수 있습니다. 대신 dispatchSynchronous: 메서드를 사용하세요.
  • 다른 스레드에서 GANTracker 메서드를 호출하면 모호한 SQLite 오류가 발생할 수 있습니다. 모든 호출이 동일한 스레드에서 이루어져야 합니다.
  • 캠페인 추적

    일반 캠페인 추적

    iOS용 Google 애널리틱스 SDK 버전 1.3에서는 이제 캠페인 추천을 추적할 수 있습니다. 예를 들어 애플리케이션에서 맞춤 URL 스키마를 구현하는 경우 캠페인 쿼리 매개변수가 포함된 URL을 만들 수 있습니다. 이러한 URL에 대한 응답으로 애플리케이션이 실행되면 쿼리 매개변수를 가져와 이를 setReferrer에 전달하여 정보가 Google 애널리틱스에 저장되도록 할 수 있습니다.

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

      [[GANTracker sharedTracker] setReferrer:referrer withError:&error];
    

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

    두 번째 제한사항은 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