Search
💻

Google Analytics.. 너 대체 뭐니

Date
2024/08/06
Part
안드로이드
Writer
Whether to upload blog
이번에 처음 Google Analytics라는 것을 알게 되고, 이게 대체 무엇인지 어떻게 사용하는지 궁금해 공식 문서를 살펴보면서 정리를 해보았다.

Google Analytics가 뭔데?

Google 애널리틱스는 앱 사용 및 사용자 참여에 대한 통계를 제공하는 무료 앱 측정 솔루션이다. 이를 통해사람들이 웹, Apple 또는 Android 앱을 사용하는 방식을 파악할 수 있다.
다양한 이벤트와 사용자 속성을 SDK가 자동으로 포착하며 개발자는 맞춤 이벤트를 직접 정의하여 비즈니스에 고유한 가치를 갖는 항목을 측정할 수 있다. 캡처된 데이터는 Firebase Console의 대시보드에서 확인할 수 있다.
Google 애널리틱스는 앱의 사용량과 행동 데이터를 수집한다. 이 SDK는 다음 두 가지 기본 유형의 정보를 로깅한다.
이벤트: 사용자 행동, 시스템 이벤트, 오류 등 앱에서 발생하는 상황.
사용자 속성: 사용자층을 나눈 세그먼트를 기술하고자 개발자가 정의하는 언어 환경설정, 지리적 위치 등의 속성입니다. (ex. 연령, 앱 버전, 국가..etc)

이벤트 로깅

애널리틱스는 몇 가지 이벤트를 자동으로 로깅하며 별도로 코드를 추가하지 않아도 이벤트를 수신할 수 있다.
앱에서 데이터를 추가로 수집해야 하는 경우 서로 다른 애널리틱스 이벤트 유형을 최대 500개까지 로깅할 수 있다. 앱에서 로깅할 수 있는 이벤트의 총분량에는 제한이 없다.
이벤트 이름은 대소문자를 구분한다.즉, 이름은 동일하지만 대소문자만 다른 두 이벤트를 로깅하면 서로 다른 이벤트 2개로 인식됩니다.

이벤트 유형

이벤트 4가지 유형으로 구분할 수 있다.
자동 수집 이벤트
향상된 측정 이벤트
추천 이벤트
맞춤 이벤트

자동 수집 이벤트

웹사이트 또는 앱에서 Google 애널리틱스를 설정할 때 기본적으로 수집되는 이벤트이다.
Firebase용 Google 애널리틱스 SDK 또는 gtag.js를 사용하면 추가로 코드를 작성하지 않아도 이러한 이벤트를 수집할 수 있다.
이벤트 종류(현재 우리가 관심있을 것들만 정리해보았습니다.)
이벤트
자동으로 트리거되는 시점
매개변수
app_clear_data (앱)
사용자가 앱 데이터를 재설정 또는 삭제하여 모든 설정과 로그인 데이터를 삭제할 때 Android만 해당
app_exception (앱)
앱이 비정상 종료되거나 장애 또는 예외가 발생할 때 이 이벤트는 Firebase Crashlytics를 통합할 때 전송됩니다.
fatal, timestamp, engagement_time_msec
app_remove (앱)
애플리케이션 패키지가 Android 기기에서 삭제(제거)될 때 Android만 해당 이 이벤트는 Google Play Console에서 보고되는 일일 기기 제거 수 및 일일 사용자 제거 수 측정항목과는 다릅니다. app_remove 이벤트는 설치 소스에 관계없이 애플리케이션 패키지 삭제를 집계하며 값은 보고서에서 지정한 기간에 따라 달라집니다. 일일 기기 제거 수 및 일일 사용자 제거 수 측정항목은 애플리케이션 패키지가 Google Play에서 설치된 경우에만 애플리케이션 패키지 삭제를 집계하며, 하루에 한 번 보고됩니다.
app_store_refund (앱)
Google Play에서 인앱 구매를 환불할 때 Android만 해당 이 이벤트는 BigQuery로 내보내지 못합니다.
product_id, value, currency, quantity
error (앱)
오류가 있어 기록될 수 없는 이벤트 대신 기록됩니다. _err (firebase_error), _ev (firebase_error_value), and _el (firebase_error_length) 매개변수에 추가 정보가 포함됩니다. 이 이벤트는 보고서에 표시되지 않으며 BigQuery로 내보내지 못합니다.
firebase_error, firebase_error_value
first_open (앱)
앱 설치 또는 재설치 후 처음으로 앱을 실행할 때이 이벤트는 사용자가 기기에 앱을 다운로드할 때가 아니라 앱을 처음으로 사용할 때 트리거됩니다. 순수 다운로드 횟수는 Google Play Console 또는 iTunesConnect에서 확인하세요.Apple의 iOS 14 앱 추적 프롬프트를 수락하는 사용자의 first_open 주요 이벤트 측정을 지원합니다.
previous_gmp_app_id, updated_with_analytics, previous_first_open_count, system_app, system_app_update, deferred_analytics_collection, reset_analytics_cause, engagement_time_msec
first_visit (앱, 웹)
사용자가 웹사이트를 처음 방문하거나 애널리틱스를 사용하는 Android 인스턴트 앱을 처음으로 실행할 때
screen_view (앱)
화면 전환이 발생하고 다음 기준 중 하나가 충족될 때 • 이전에 설정된 화면이 없음 • 새 화면 이름이 이전 화면 이름과 다름 • 새 화면 클래스 이름이 이전 화면 클래스 이름과 다름 • 새 화면 ID가 이전 화면 ID와 다름
firebase_screen, firebase_screen_class, firebase_screen_id, firebase_previous_screen, firebase_previous_class, firebase_previous_id, engagement_time_msec
user_engagement (앱, 웹)
앱이 포그라운드에 있거나 웹페이지가 최소 1초간 포커스 내에 있을 때 자세히 알아보기
engagement_time_msec
웹사이트 또는 앱에서 Google 애널리틱스를 설정하고 향상된 측정을 사용 설정한 경우 수집되는 이벤트입니다.
해당 이벤트도 자동으로 수집됩니다.
이벤트를 보았을 때 앱보다는 웹을 대상으로한 이벤트 같아서 따로 명시하지 않겠습니다.
사용자가 구현하지만 사전 정의된 이름과 매개변수가 적용된 이벤트이다. 이러한 추천 이벤트를 통해 기존 보고 및 향후 보고 기능을 활용할 수 있다.
이러한 이벤트는 추가적인 맥락이 있어야 의미가 있으므로 이벤트가 자동 전송되지는 않는다.
이벤트 종류(현재 우리가 관심있을 것들만 정리해보았습니다.)
모든 속성
Google에서는 모든 비즈니스 카테고리에 속하는 고객 모두가 다음 이벤트를 사용하기를 권장.
이벤트
사용자에 의해 트리거되는 시점
양식을 제출하거나 정보를 요청할 때
로그인할 때
웹사이트 또는 앱의 콘텐츠를 선택할 때
웹사이트 또는 앱에서 계정에 가입할 때
온보딩 프로세스 중 튜토리얼을 시작할 때
온보딩 프로세스 중 튜토리얼을 완료할 때
온라인 판매
사이트 또는 앱에서 판매를 측정하려는 경우 다음의 이벤트를 사용할 것을 권장.
이벤트를 전송하면 전자상거래 구매 보고서가 채워집니다. 이러한 이벤트에 대한 자세한 내용은 웹사이트의 전자상거래 측정을 참고하세요. 앱 프로젝트의 이벤트에 대한 내용은 전자상거래 측정(앱)을 확인하세요.
이벤트
사용자에 의해 트리거되는 시점
상품 또는 서비스 목록에서 항목을 선택할 때
상품을 조회할 때
상품 또는 서비스 목록을 조회할 때
이벤트 확인
설정 후 DebugView 도구를 사용하여 추천 이벤트를 모니터링한다.
 실시간 보고서를 확인하여 이벤트가 트리거될 때 실제 사용자로부터 발생하는 이벤트를 확인할 수 있다.
코드 작성 예시
FirebaseAnalytics 인스턴스를 만든 후 이 인스턴스를 사용하여 logEvent() 메서드로 이벤트를 로깅할 수 있다.
추천 이벤트: com.google.firebase.analytics.FirebaseAnalytics.Event 클래스 참조를 확인.
사전 정의된 매개변수: com.google.firebase.analytics.FirebaseAnalytics.Param 참조를 확인.
블로그에서 가져온 코드 예시
SELECT_CONTENT 이벤트 로깅 예시
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { param(FirebaseAnalytics.Param.ITEM_ID, id) param(FirebaseAnalytics.Param.ITEM_NAME, name) param(FirebaseAnalytics.Param.CONTENT_TYPE, "image") }
Kotlin
복사
공식문서 코드 예시
사전 정의된 매개변수뿐 아니라 다음과 같은 매개변수를 이벤트에 추가할 수 있다! [맞춤 매개변수]
맞춤 매개변수를 애널리틱스 보고서에서 측정기준 또는 측정항목으로 사용할 수 있습니다. 숫자가 아닌 이벤트 매개변수 데이터에는 맞춤 측정기준을, 숫자로 보다 잘 표현되는 매개변수 데이터에는 맞춤 측정항목을 사용할 수 있습니다. SDK를 사용하여 맞춤 매개변수를 로깅한 후에는 이러한 맞춤 매개변수가 애널리틱스 보고서에 표시되도록 측정기준이나 측정항목을 등록합니다. 애널리틱스 > 이벤트 > 맞춤 정의 관리 > 맞춤 측정기준 만들기를 사용하여 등록하면 됩니다.
모든 보고서에 적용될 수 있는 잠재고객 정의에 맞춤 매개변수를 사용할 수 있습니다. 앱을 BigQuery 프로젝트에 연결한 경우 BigQuery로 내보내는 데이터에도 맞춤 매개변수가 포함됩니다. Google 애널리틱스 4 BigQuery Export에서 샘플 쿼리 등을 확인하세요. [VALUE 매개변수]
 VALUE는 이벤트에 해당하는 핵심 측정항목을 집계하는 데 유용한 범용 매개변수입니다. 수익, 거리, 시간, 점수 등을 예시로 들 수 있습니다.
사용자의 사용 사례에 적합한 다른 이벤트가 없는 경우에만 맞춤 이벤트를 생성하는 사용자 정의 이벤트이다.
가끔 자동 수집되거나 추천 이벤트가 아닌 액션을 보고서에서 분석하려는 사용자가 있을 수 있습니다. 이 경우에는 맞춤 이벤트를 구현하는 것이 좋습니다.
주의 할 점
맞춤 이벤트를 만들기 전에 먼저 생성하려는 이벤트가 자동 수집 이벤트를 통해 수집되거나 추천 이벤트로 추천되지 않았는지 확인.
보고서에 사용되는 측정기준 및 측정항목이 기존 이벤트를 사용해 자동으로 채워지므로 이러한 이벤트를 사용하는 것이 더 좋다.
모바일 앱 사용자당 하루에 최대 500개의 고유한 이벤트를 수집할 수 있습니다. 예를 들어 사용자 2명이 서로 다른 앱 인스턴스에서 각기 다른 이벤트를 트리거하면 700개의 고유한 이벤트가 표시될 수 있습니다.
자동으로 수집되는 이벤트 및 향상된 측정 이벤트는 이러한 한도의 영향을 받지 않습니다.
맞춤 이벤트 구현 방법
맞춤 이벤트의 구성 요소는 다음과 같다.
맞춤 이벤트 이름
맞춤 이벤트 이름은 이벤트에 맞게 선택하는 이름입니다. 이름에는 이벤트로 측정하고자 하는 항목이 명시되어야 합니다. 예를 들어 기부를 측정하는 경우 이름으로 '기부'를 선택할 수 있다.
맞춤 이벤트의 이름을 지정하기 전에 이름이 이벤트 이름 지정 규칙(예: 대소문자 구분, 예약된 이름 사용 불가, 문자로 시작해야 함) 및 이벤트 이름 지정 한도(즉 40자(영문 기준) 미만)를 준수하는지 확인. (이 조건들을 충족해야 Google 애널리틱스에서 이벤트를 수집하고 처리할 수 있음.)
맞춤 이벤트와 연결된 맞춤 이벤트 매개변수
맞춤 이벤트의 이벤트 매개변수는 발생한 액션에 대한 추가 정보를 제공한다. 예를 들어 액션의 성공 여부, 이벤트 발생 시점 또는 상호작용 중에 사용자가 선택한 사항을 측정할 수 있다.
매개변수는 키-값 쌍으로 구성
수집하는 정보를 알 수 있는 매개변수 이름
해당 상호작용의 매개변수와 연결된 매개변수 값
코드 예시
firebaseAnalytics.logEvent("share_image") { param("image_name", name) param("full_text", text) }
Kotlin
복사
공식문서 코드 예시
블로그에서 가져온 코드 예시

Android 스튜디오 디버그 로그에서 이벤트 보기

상세 로깅을 사용 설정하여 SDK의 이벤트 로깅을 모니터링하면 이벤트가 올바르게 로깅되는지 확인할 수 있습니다. 여기에는 자동으로 로깅되는 이벤트와 수동으로 로깅되는 이벤트가 모두 포함됩니다.
안드로이드 디바이스에서 Firebase Analytics(FA) 관련 로그의 로그 레벨을 VERBOSE로 설정하는 명령어입니다. 이를 통해 Firebase Analytics SDK에서 발생하는 자세한 로그를 확인할 수 있습니다.
adb shell setprop log.tag.FA VERBOSE
Kotlin
복사
Firebase Analytics Service와 관련된 로그의 로그 레벨을 VERBOSE로 설정하는 명령어입니다. 이 명령어는 Firebase Analytics 서비스 관련한 자세한 로그 메시지를 출력하도록 설정합니다.
adb shell setprop log.tag.FA-SVC VERBOSE
Kotlin
복사
Android 디바이스에서 실시간으로 로그를 보기 위한 명령어입니다. 이 명령어는 특정 태그를 가진 로그 메시지를 필터링하여 출력합니다.
adb logcat -v time -s FA FA-SVC
Kotlin
복사
DebugView를 사용하면 개발 기기에서 앱이 로깅하는 원시 이벤트 데이터를 거의 실시간으로 확인할 수 있습니다.

디버그 모드 사용 설정

일반적으로 앱이 로깅하는 이벤트는 약 1시간 동안 취합된 후 일괄 업로드됩니다. 이렇게 하는 이유는 최종 사용자 기기의 배터리를 절약하고 네트워크 데이터 사용량을 줄이기 위함입니다. 그러나 개발 기기에서 디버그 모드를 사용 설정하여 이벤트를 업로드하는 지연 시간을 최소화하면 애널리틱스 구현을 검증하고 DebugView 보고서에서 결과를 조회할 수 있습니다.
Android 기기에서 애널리틱스 디버그 모드를 사용 설정하려면 다음 명령어를 실행합니다.
adb shell setprop debug.firebase.analytics.appPACKAGE_NAME
Plain Text
복사
이 동작은 다음 명령어를 실행하여 디버그 모드를 명시적으로 사용 중지할 때까지 유지됩니다.
adb shell setprop debug.firebase.analytics.app .none.
Plain Text
복사

이벤트 데이터 보고

개발 기기에서 디버그 모드를 사용 설정한 후 Google 애널리틱스의 상단 탐색 메뉴에서 StreamView 옆의 화살표를 선택하고 DebugView를 선택하여 DebugView로 이동합니다.
그런 다음 앱 사용을 시작하여 DebugView 보고서에 앱의 이벤트가 로깅되는지 확인합니다.
Google 애널리틱스는 화면 전환을 추적하고 현재 화면에 관한 정보를 이벤트에 첨부하므로 사용자 참여 또는 사용자 행동과 같은 측정항목을 화면별로 추적할 수 있다. (자동 수집 이벤트 → SCREEN_VIEW)
애널리틱스는 현재 포커스에 있는  Activity 등의 클래스 이름같이 애플리케이션 내의 화면에 관한 몇 가지 정보를 자동으로 추적한다.
화면 전환이 발생하면 애널리틱스는 새 화면을 식별하는 screen_view 이벤트를 로깅하고 firebase_screen_class 매개변수(예: menuViewController 또는 MenuActivity) 및 생성된 firebase_screen_id가 자동으로 태그된다.

화면 조회수 추적 사용 중지

Android의 경우 AndroidManifest.xml 파일의 <application> 태그 내에 다음 설정을 중첩함으로써 자동 화면 조회수 보고를 중지할 수 있다.
<meta-data android:name="google_analytics_automatic_screen_reporting_enabled" android:value="false" />
Kotlin
복사

수동 화면 추적

자동 추적 사용 설정 여부와 관계없이 screen_view 이벤트를 수동으로 로깅할 수 있다.
Android의 경우 onResume에서 로깅할 수 있다. screen_class를 설정하지 않으면 애널리틱스는 호출할 때 포커스에 있는 UIViewController 또는 Activity를 기반으로 기본값을 설정한다.
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) { param(FirebaseAnalytics.Param.SCREEN_NAME, screenName) param(FirebaseAnalytics.Param.SCREEN_CLASS, "MainActivity") }
Kotlin
복사

참고