본문 바로가기

Data & MarTech/Amplitude

[Amplitude] 앰플리튜드 SDK 개발 - 1. Quickstart

반응형

앰플리튜드 SDK 개발 - 1. Quickstart


Introduction - 들어가며

개인적으로 2017년도에 처음 접해보고 사용할 기회가 없었는데, 최근에 Amplitude와 같은 Product Analytics Tool이 워낙 많은 회사에서 사용하고 있어 어떤 기능을 제공하는지 SDK단위로 하나씩 분석해 보려고 합니다. 

Distro Dojo 2017

 

Quickstart

1. 계정 만들기

Amplitude는 무료로 시작이 가능하다. Sign Up 페이지에서 사용할 메일 주소 및 관련 정보를 등록하면 된다.

Amplitude 가입하기

 

2. SDK 적용하기

Amplitude는 각 플랫폼별로 SDK를 제공하고 있고, 대부분의 모바일 플랫폼을 지원하고 있습니다. 

지원 플랫폼
  • Browser
  • Node
  • Android
  • iOS
  • iOS-Beta (Swift only)
  • JRE: Java SDK (Android SDK 아님)
  • Python
  • React Native
  • Flutter
  • Go
  • Unity
  • Unreal

테스트를 위해 Android Platform을 선택해서 초기화 및 이벤트 데이터를 전송해 보도록 하겠습니다. Quickstart대로 5단계 순서대로 구현 및 데이터 확인을 진행합니다.

SDK Quickstart Guide

 

Initialize the library(라이브러리 초기화)

Install the dependency

app build.grade에 dependency 추가
dependencies {
    implementation 'com.amplitude:analytics-android:1.+'
}

amplitude dependency 추가

Add permission
  • AndroidManifest.xml에 권한 추가
    • 가이드와 같이 INTERNET, READ_PHONE_STATE permission도 추가합니다.

permission 추가

Initialization

초기화 코드에 추가합니다. Amplitude 가이드에 따르면 MainActivity 또는 Application class에 선언할 것을 권장하고 있습니다.

import com.amplitude.android.Amplitude;

Amplitude amplitude =  new Amplitude(new Configuration(
    apiKey = AMPLITUDE_API_KEY,
    context = applicationContext
));

초기화 시 API Key가 필요합니다. API Key는 아래 그림과 같이 상단 오른쪽에 있는 '나사'모양 버튼을 클릭한 다음 Organization settings > Projects에서 선택이 가능합니다. 저는 jworks라는 이름의 프로젝트를 생성하였는데 해당 프로젝트를 클릭하면 Project 정보 중 API Key가 있는 것을 확인할 수 있습니다. 'Show'를 클릭한 다음 API Key를 복사해서 위 소스의 Key값으로 사용하면 됩니다.

Organization settings 클릭
생성한 프로젝트 선택
API Key 확인

 


Send data

Event 데이터를 Amplitude로 보내는 기능입니다. 데이터는 버퍼처리되어 30초마다 flush된다고 합니다. 따라서 Amplitude에서 데이터 조회 시 몇초 딜레이가 발생할 수 있습니다. 

아래 샘플코드는 이벤트 트래킹 예시입니다. 첫번째 코드예시는 기본 이벤트 전송(추가 프로퍼티 없이 이벤트명만 전송), 두번째 예시는 이벤트명과 프로퍼티를 함께 전송하는 경우입니다. 앰플리튜드에서는 유저행동에 대한 정보수집을 유연하게 확장할 수 있도록 SDK에서 프로퍼티를 추가할 수 있도록 제공하고 있습니다.

// Track a basic event
amplitude.track("Button Clicked");
// Track events with optional properties
amplitude.track("Button Clicked", new HashMap() {{
    put("buttonColor", "primary");
}});

 

import com.amplitude.android.Amplitude;
import com.amplitude.android.Configuration;
import com.amplitude.android.DefaultTrackingOptions;

public class MainActivity extends AppCompatActivity {
	Configuration configuration;
	
    ...(생략)...
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // Track a basic event
        amplitude.track("StartApp");
    }
}

실제 구현코드도 MainActivity에 Amplitude SDK가 초기화되도록 선언하였습니다. 아래 코드는 앱 실행 시점을 트래킹하도록 'StartApp'이란 이벤트명으로 수집되도록 하였습니다.


Check for success

User Look-Up 메뉴를 클릭한 다음 이벤트 스트림 섹션에서 이벤트데이터로 적용한 것과 동일한 이벤트명/시점에 트리거링되어 들어오는지 확인합니다. 

User Look-Up

Event Stream에서 코드에 적용한 것과 같이 'StartApp' 이벤트가 들어온 것을 확인할 수 있습니다. 그리고 아래 그림을 보면 중요한 점을 확인할 수 있는데, Device ID가 자동으로 수집되고 있고 그 외에도 User Properties 항목으로 기본적으로 자동수집되는 데이터들이 있음을 알 수 있습니다.

User Look-Up > Event Stream


Complete code example(앰플리튜드 제공 코드)

아래 코드를 보면 Identity란 object 선언 후 해당 object를 amplitude.identify()에 set하는 것을 확인할 수 있습니다. 이 기능은 User Property를 수집하여 Profile에 반영되도록 할 수 있는 기능입니다.

package com.amplitude.android.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.amplitude.android.Amplitude;
import com.amplitude.core.events.Identify;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Amplitude amplitude = new Amplitude(new Configuration(
            apiKey = AMPLITUDE_API_KEY,
            context = applicationContext
        ));

        Identify identify = new Identify().set("user-platform", "android")
        amplitude.identify(identify);

        amplitude.track("test event properties", new HashMap() {{
            put("test", "test event property value");
        }});
    }
}

Enforce event schemas(Ampli)

Ampli라는 기능은 다소 생소한 부분일 것 같습니다. 간단히 말해 Ampli는 사전 정의된 Event 타입 정의에 따라 수집되도록 강제함으로써 Production 환경에서 이벤트 트래킹시 발생할 수 있는 휴먼에러를 줄이는 것을 방지해 줍니다. 여기서 또 생소한 용어인 '트래킹 플랜(Tracking Plan)'이 있는데 Ampli를 사용하기 위해선 Tracking Plan을 추가해야 합니다. 아래 그림과 같이 Data 탭을 선택하면 Tracking Plan 설정이 가능하니 참고하시기 바랍니다.

Amplitude Data
 

Ampli - Amplitude Developer Center

Overview of Ampli architecture, workflow, and common usage

www.docs.developers.amplitude.com

 

참고자료

Amplitude Academy
 

Amplitude Academy | Resources to help power your product growth

Learn how to power your product growth using Amplitude Analytics, Experiment, and Customer Data Platform (CDP). Watch a video or take a course!

academy.amplitude.com

 

반응형