앱로그 분석

앱로그 분석(Analytics)은 사용자의 앱 이용에 관한 다양한 지표를 실시간으로 제공하여, 사용자들이 앱을 이용하는 패턴을 파악할 수 있고, 앱을 이용하는데 있어 어떤 문제점은 없는지 진단할 수 있도록 도와 줍니다.

앱로그 분석이 제공하는 기능은 다음과 같습니다.

  • Usage(이용자수/이용횟수) : 얼마나 많은 사용자가 앱을 이용하는지 또는 사용자들이 앱을 얼마나 많이 실행하는지에 대한 지표를 제공합니다. 사용자가 앱을 실행하는 단위를 세션(session)이라고 정의합니다. 세션은 사용자가 앱을 실행한 후부터 그 실행을 마칠 때까지의 일련의 과정을 포함합니다.
  • Events(이벤트발생수) : 사용자들이 앱을 이용할 때 어떤 메뉴/기능을 많이 사용하는지에 대한 지표를 제공합니다. 사용자가 앱을 사용하는 도중에 어떤 행동을 한다면 그것을 이벤트로 정의하고 이를 분석할 수 있습니다.
  • Engagement(참여도) : 사용자들이 앱을 한번 실행하면 얼마나 오래 사용하는지, 얼마만에 다시 찾는지 또는 얼마나 많이 사용했는지에 대한 지표를 제공합니다.
  • Retention(잔존율) : 앱을 처음으로 이용한 사용자가 얼마나 지속적으로 이용하고 있는지에 관한 지표를 제공합니다. 높은 잔존율을 보게 된다면 미래의 성공을 기대할 수 있고, 혹시 낮은 잔존율을 확인한다면 어떤 원인이나 문제가 있는지 분석하여 잔존율을 높일 수 있습니다.
  • Revisit(재발생율) : 관찰하고자 하는 사용자의 행동 즉 정의한 이벤트가 얼마나 꾸준히 일어나는지에 대한 지표를 제공합니다.
  • Flow(사용흐름) : 사용자들이 앱을 사용하는 일련의 순서를 알아 볼 수 있습니다. 앱을 사용하면서 마주하는 앱의 화면(screen)을 기준으로 할 수도 있고, 사용자의 행동 즉 이벤트(event)를 기준으로 하여 앱을 이용하는 과정을 분석할 수 있습니다.
  • Funnel(퍼널 분석): 연속된 이벤트의 각 단계마다 사용자 수의 변화 및 전환율을 제공합니다.
  • Custom Metric(커스텀 메트릭): 앱 개발자가 임의로 정의한 메트릭으로 통계를 보는 기능을 제공합니다. 이벤트를 연산자에 따라 조합하여 커스텀 메트릭을 정의할 수 있습니다.
  • Monetization(수익): 사용자 행동으로부터 매출 등 수익이 얼마나 발생하였는지 등에 관련한 지표를 제공합니다.

앱로그 분석을 사용해본적이 없는 분들을 앱로그 분석 상담하러 가기를 이용하시면 이벤트 정의하는 방법과 분석데이타를 보는 방법을 가이드 받으실 수 있습니다.

시작하기 전에

iOS용 최신 Analytics SDK를 다운로드 합니다. 해당 파일에는 앱로그 분석을 위한 라이브러리, 헤더 파일 및 프로젝트 파일이 포함된 샘플 소스들이 포함되어 있습니다. 샘플 소스 구조를 참고하여 앱에 SDK를 적용합니다.

1. 압축이 풀린 sdk 폴더 안에는 libKinsight-SDK-iOS.a 및 KinsightSession.h 파일이 존재합니다. 해당 Static 라이브러리 및 헤더 파일을 분석하고자 하는 앱의 프로젝트에 추가합니다.

sdk-ios-analytics-add-sdk

2. 다음의 Dynamic 라이브러리 및 Framework들을 앱의 프로젝트에 추가합니다.

  • libsqlite3.dylib
  • libz.dylib
  • CoreTelephony.framework
  • Security.framework

sdk-ios-analytics-add-libs

3. 프로젝트 설정 중 TARGETS의 Build Settings에서 Linking > Other Linker Flags에 아래의 항목을 추가합니다.

  • -ObjC
  • -all_load

sdk-ios-analytics-add-linker-flag

4. 카카오 개발자 웹사이트에 등록된 해당 앱의 네이티브 앱 키를 프로젝트 plist 파일에 등록을 합니다. "KAKAO_APP_KEY"라는 이름으로 Key를 추가하고, Type은 String, Value는 해당 앱의 네이티브 앱 키 값으로 등록합니다.

sdk-ios-analytics-add-app-key

5. KinsightSession.h 헤더 파일을 import 합니다.

#import “KinsightSession.h”

6. Analytics SDK를 초기화하기 위해 AppDelegate의 didFinishLaunchingWithOptions에서 initialize관련 코드를 추가합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    // Analytics 세션 관리를 위한 라이브러리 객체 초기화
    [[KinsightSession shared] initialize];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    ...
}

앱로그 분석을 위한 프로젝트 설정 및 예제 코드의 경우 Analytics SDK내에 포함된 샘플 프로젝트(samples 폴더)를 참고하셔도 됩니다.

세션 관리

앱로그 분석의 기본 단위는 세션으로 앱의 실행부터 종료까지의 과정을 의미합니다. 따라서 세션을 정의하기 위해 AppDelegate에서 세션을 열고 닫는 메소드를 반드시 호출해 주어야 합니다.
세션을 시작하면 분석용 데이타를 업로드 합니다. 만약 지금 시작하려는 세션이 바로 전의 세션이 종료된 후로부터 짧은 시간이 경과되었다면, 새로운 세션을 시작하는 대신에 이전의 세션을 다시 재개합니다. 시작된 세션은 반드시 종료되어야 합니다. 종료시에도 전송이 가능한 데이타를 업로드합니다.

다음과 같이 AppDelegate에서 App의 종료, 재시작에 대한 처리를 적용합니다.

- (void)applicationWillResignActive:(UIApplication *)application {
    // 세션 종료
    [[KinsightSession shared] close];
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 세션 종료
    [[KinsightSession shared] close];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // 세션 열기
    [[KinsightSession shared] resume];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // 세션 열기
    [[KinsightSession shared] resume];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    // 세션 종료
    [[KinsightSession shared] close];
}

분석대상 추가

사용자 행동을 분석하기 위해 세션에 사용자 이벤트를 등록할 수 있습니다.

1. 사용자 액션에 이벤트를 등록하기 위해서는 사용자 액션을 처리하는 메소드에서 addEvent를 호출합니다.

- (void)yourOwnEventHandler {
  ...
  // 사용자 액션(event) 등록
  [[KinsightSession shared] addEvent:@"your own event name"];
  ...
}

2. 이벤트뿐만 아니라 이벤트와 관련된 부가 속성을 같이 등록하기 위해서는 사용자 액션을 처리하는 메소드에서 addEvent:attributes:를 호출합니다.

이벤트의 부가 속성의 경우 NSDictionary로 구성하여야 하며, Key는 스트링, Value Object의 경우 스트링 또는 숫자의 타입(NSString, NSNumber 등)만 지원됩니다(최대 10개 지원).

- (void)yourOwnEventHandler {
  ...
  NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
  // attribute of an event can have values of string or number type
  [attributes setObject:@"book" forKey:@"category"];
  [attributes setObject:@"button" forKey:@"object"];
  [attributes setObject:[NSNumber numberWithInt:3] forKey:@"count"];
  [attributes setObject:[NSNumber numberWithFloat:11.1] forKey:@"price"];
  [[KinsightSession shared] addEvent:@"your own event name" attributes:attributes];
  ...
}

3. 사용자가 이용한 화면을 세션에 등록하기 위해서는 해당 UIViewController의 viewDidAppear에서 tagScreen를 호출합니다.

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    // 화면(screen) 등록
    [[KinsightSession shared] tagScreen:@"screen #1"];
}

Last Modified : 2017-07-28