본문 바로가기
Develop/Android

[Android] 엠플리튜드(Amplitude) 안드로이드에 설치하기

by bona.com 2024. 10. 15.

<terning>에서 앱을 릴리즈 한 후, 유저의 경험을 바탕으로 앱을 업데이트 하기 위해 엠플리튜드(Amplitude)를 도입하기로 했다.

그래서 안드로이드 프로젝트에 엠플리튜드를 설치하는 방법에 대해 설명하도록 하겠다.

 

엠플리튜드

엠플리튜드란, 사용자의 행동 분석을 용이하게 해주는 도구이다.

유저의 데이터가 쌓이면, 어느 버튼을 많이 누르는지, 앱의 리텐션은 얼마나 되는지 등을 분석할 수 있다.

 

그럼 지금부터 어떻게 설치하는 지 알아보자.

 

엠플리튜드 사용을 위해서 메니페스트에 권한을 추가해준다.

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

 

그리고 엠플리튜드 사용을 위한 라이브러리도 추가해준다.

[versions]
amplitude = "1.17.3"

[libraries]
amplitude = { group = "com.amplitude", name = "analytics-android", version.ref="amplitude" }

 

엠플리튜드를 위한 클래스를 정의해주고 CompositionLocal을 통해 사용하도록 해준다.

그러면 아래의 track() 함수를 통해 이벤트를 추적하는 것이다.

val LocalTracker = staticCompositionLocalOf<AmplitudeTracker> {
    error("No AmplitudeTracker provided")
}

class AmplitudeTracker @Inject constructor(
    @ApplicationContext private val context: Context
) {
    private val amplitude = Amplitude(
        Configuration(
            apiKey = AMPLITUDE_KEY,
            context = context
        )
    )

    fun track(type: EventType, name: String, properties: Map<String, Any?> = emptyMap()) {
        if (DEBUG) {
            Timber.d("Amplitude: ${type.prefix}_$name properties: $properties")
        }
        amplitude.track(eventType = "${type.prefix}_$name", eventProperties = properties)
    }
}

 

이벤트 타입은 회원가입을 알리는 SIGNUP과  클릭을 알리는 CLICK으로 나눴다. 

이는 취향에 맞게 적어주면 된다. 

(이벤트를 분리해야 데이터를 추적하기 편하다.)

enum class EventType(val prefix: String) {
    SIGNUP("signup"),
    CLICK("click"),
}

 

해당 그래들 파일에는 디버그 모드와 릴리즈 모드의 엠플리튜드 키를 나누어주었다.

그래야 개발을 할 때 테스트하면서 쌓이는 데이터와 실제 유저가 사용하는 데이터를 구분할 수 있기 때문이다.

buildTypes {
    debug {
        val devAmplitude = properties["amplitudeDevKey"] as? String ?: ""
        buildConfigField("String", "AMPLITUDE_KEY", devAmplitude)
    }
    release {
        val prodAmplitude = properties["amplitudeProdKey"] as? String ?: ""
        buildConfigField("String", "AMPLITUDE_KEY", prodAmplitude)
    }
}

 

마지막으로 추적하는 코드는 다음과 같다.

track() 함수의 type으로 이벤트 설정해주고, name으로 어떤 내용인지 넣어주면 된다.

 

예를 들어, 아래처럼 같이 작성하면

amplitudeTracker.track(
      type = EventType.CLICK,
      name = "home_filtering"
  )

 

데이터는 이렇게 쌓인다.

 

이때 사용자가 어떤 값을 눌렀는지 파악하고 싶으면 프로퍼티 매개변수에 추가해주면된다.

 amplitudeTracker.track(
    type = EventType.CLICK,
    name = "onboarding_completed",
    properties = mapOf(
        "grade" to state.grade,
        "workingPeriod" to state.workingPeriod,
        "startYear" to state.startYear,
        "startMonth" to state.startMonth
    )
)

 

그럼 아래처럼 데이터가 쌓이는 것을 확인할 수 있다.

마무리

단순 개발이 아니라 유저의 반응을 토대로 개발하는 것은 좋은 경험이 될 것 같다.

<terning> 프로젝트에 엠플리튜드를 설치한 PR도 같이 남기도록 하겠다.

https://github.com/teamterning/Terning-Android/pull/289

 

[FEAT/#288] 엠플리튜드 설치 by leeeyubin · Pull Request #289 · teamterning/Terning-Android

closed [FEAT] 엠플리튜드 설치 #288 ⛳️ Work Description 엠플리튜드 설치 📸 Screenshot 📢 To Reviewers 혼자 테스트 해보면서 엠플리튜드 잘 돌아가는 거 확인했습니다! 디코에서 로컬 프로퍼티 바뀐 거

github.com