Kotlin

[Kotlin] 애널리틱스 로그 보내기 - Analytics

eulBlue 2023. 11. 26. 00:00

📱테스트 환경

Samsung Galaxy Android 13 • Android 10


애널리틱스에 이런식으로 이벤트 이름 별 이벤트 수 에 바로 보이게 집계할 수 있도록 하는 방법을 알아보도록 하자.

01. build.gradle ( app ) 종속성 추가

apply plugin: 'com.google.gms.google-services'

dependencies {
    ...
    implementation 'com.google.firebase:firebase-analytics:17.4.1'
    implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
    implementation("com.google.firebase:firebase-analytics-ktx")
}

02. AndroidManifast.kt meta-data 추가

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@mipmap/ic_launcher_round" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/mint" />

03. logFirebaseEvent.kt 함수 생성

suspend fun logFirebaseEvent(eventId: String, eventName: String, context: Context, type: String) {
    val firebaseAnalytics = FirebaseAnalytics.getInstance(context)
    withContext(Dispatchers.IO) {
        val bundle = Bundle().apply {
            putString(FirebaseAnalytics.Param.ITEM_ID, eventId)
            putString(FirebaseAnalytics.Param.ITEM_NAME, eventName)
            putString(FirebaseAnalytics.Param.CONTENT_TYPE, type)
        }
        firebaseAnalytics.logEvent(eventId, bundle)
    }
}

suspend 는 비동기로 코드를 실행시키고 있다 보니 넣었다. 비동기로 처리하지않을꺼면 빼도 상관은 없다.

애널리틱스로 전달할 데이터를 Bundle 로 만들어 주고, logEvent 를 통해서 이벤트를 애널리틱스로 보내주는 간단한 함수이다.

사용하는 방법은

private val scope = CoroutineScope(Dispatchers.IO)

scope.launch {
    logFirebaseEvent("splash_activity_view", "앱 방문", this@SplashActivity, "view_displayed")
}

scope.launch {
    logFirebaseEvent("help", "도움말", context, "button")
}

scope.launch {
    logFirebaseEvent("조회", "조회", this@ContentsActivity, "notification")
}

이런식으로 데이터를 보내주고있는데, type 은 종류가 많으니 애널리틱스에 가서 설명을 읽어보고, 자신에게 맞는 방식으로

데이터를 전송해주면 될 것 같다.