앱로그 분석

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

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

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

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

시작하기 전에

Android용 최신 Analytics SDK를 다운로드하여 압축을 풀면 샘플 소스와 라이브러리가 포함되어 있습니다. 샘플 소스 구조를 참고하여 앱에 SDK를 적용합니다.

1. libs에 포함된 라이브러리를 복사합니다. kakao-android-sdk-analytics.jar는 필수로 필요하고, support-v4-r19.jar는 이미 다른 기능을 사용하기 위해 포함하고 있다면 포함하지 않아도 됩니다.

2. AndroidManifest.xml에 internet permission을 추가하고, com.kakao.sdk.AppKey 이름으로 앱생성시 발급된 네이티브 앱키를 설정합니다.

  <uses-permission android:name="android.permission.INTERNET"/>

  <application>
    ...
    <meta-data android:name="com.kakao.sdk.AppKey" android:value="AAAAAAAAAAAAAAAAAAAAAA"/>
  </application>

3. 더불어 앱로그 분석 기능 중 캠페인 메뉴를 사용하시려면 SDK가 com.android.vending.INSTALL_REFERRER 인텐트를 받을 수 있도록 아래와 같이 추가 설정을 합니다.

  <uses-permission android:name="android.permission.INTERNET"/>

  <application>
    ...
    <receiver android:name="com.kakao.kinsight.sdk.android.ReferralReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>
    ...
    <meta-data android:name="com.kakao.sdk.AppKey" android:value="AAAAAAAAAAAAAAAAAAAAAA"/>
  </application>

세션 관리

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

1. 세션 class를 import 합니다.

import com.kakao.kinsight.sdk.android.KinsightSession;

2. KisightSession을 멤버 변수로 선언합니다.

public static KinsightSession kinsightSession;

3. onCreate에서 세션 객체를 생성하고, open()를 호출합니다.

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ...
  kinsightSession = new KinsightSession(getApplicationContext());
  kinsightSession.open();
  ...
}

4. onResume에서 open()를 호출합니다.

public void onResume() {
  super.onResume();
  ...
  kinsightSession.open();
}

5. onPause에서 close()를 호출합니다.

public void onPause() {
  kinsightSession.close();
  ...
  super.onPause();
}

분석대상 추가

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

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

public void onYourOwnEvent() {
  ...
  kinsightSession.addEvent("use your own event name");
  ...
}

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

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

public void onYourOwnEvent() {
  ...
  final Map<String, Object> attributes = new HashMap<String, Object>();
  // attribute of an event can have values of string or number type
  attributes.put("object", "button");
  attributes.put("category", "book");
  attributes.put("itemCount", 1);
  attributes.put("price", 4.3);
  kinsightSession.addEvent("use your own event name", attributes);
  ...
}

2. 사용자가 이용한 화면을 세션에 등록하기 위해서는 해당 Activity의 onResume에서 tagScreen(String)를 호출합니다.

public void onResume() {
  super.onResume();
  ...
  kinsightSession.open();
  kinsightSession.tagScreen(“screen #1”);
}

Last Modified : 2017-07-28