카테고리 없음

GA4 (Google Analytics 4) 데이터 수집 전략

bubhyun 2025. 5. 18. 14:48
728x90

GA4 (Google Analytics 4) 데이터 수집 전략 설명

이 앱에서는 Firebase Analytics(GA4)를 활용하여 다양한 사용자 활동을 추적하고 있습니다. 주요 데이터 수집 방식은 다음과 같습니다:

1. 기본 구조 설정

  • 중앙 서비스: analytics_service.dart에서 모든 분석 이벤트 처리
  • 초기화: main.dart에서 Firebase Analytics 초기화
  • 위젯 래퍼: widget_analytics.dart에서 쉽게 이벤트를 추적할 수 있는 버튼 등 UI 컴포넌트 제공

2. 사용자 식별 및 속성

// 사용자 ID 설정

await analyticsService.setUserId(userIdStr);

// 사용자 속성 설정 (세그먼트화에 활용)

await analyticsService.setUserProperties({

'user_id': userIdStr,

'job': userData['job'] ?? '',

'company': userData['company'] ?? '',

'industry': userData['industry'] ?? '',

});

이를 통해 사용자를 식별하고 직무, 회사, 산업과 같은 핵심 특성으로 세그먼트화합니다.

3. 화면 조회 추적

// 화면 전환 시 자동 기록

analyticsService.logScreenView(

screenName: screenName,

screenClass: route.runtimeType.toString(),

);

AnalyticsRouteObserver는 화면 전환을 감시하여 각 페이지 방문을 자동으로 기록합니다.

4. 버튼 클릭 및 상호작용

// 버튼 클릭

analyticsService.logButtonClick('save_interests_button', parameters: { ... });

// 커스텀 이벤트

analyticsService.logCustomEvent('content_clicked', parameters: { ... });

특수 버튼 컴포넌트(AnalyticsButton, AnalyticsIconButton 등)가 자동으로 클릭 이벤트를 추적합니다.

5. 스크롤 및 인터랙션 트래킹

// 스크롤 활동 추적

analyticsService.logCustomEvent('home_content_scroll', parameters: {

'scroll_position_pixels': currentPos,

'scroll_distance': scrollDiff,

'scroll_percentage': (scrollPercentage * 100).toInt(),

});

// 비활성 상태 감지

analyticsService.logCustomEvent('home_content_inactive', parameters: {

'inactive_duration_seconds': secondsSinceLastInteraction,

});

타이머를 사용하여 스크롤 행동과 비활성(inactive) 상태를 정기적으로 추적합니다.

6. 세션 관리

// 세션 시작 기록

analyticsService.logSessionStart();

// 세션 종료 기록

analyticsService.logSessionEnd(sessionDuration: sessionDuration);

// 앱 상태 변경 기록

analyticsService.logAppStateChange(state: 'background', sessionDuration: duration);

앱의 라이프사이클(전경/배경/종료)에 따라 세션을 추적하고, 30분 이상 비활성 상태일 경우 새 세션으로 간주합니다.

7. 폼 제출 및 성능 측정

// 폼 제출 시작 시

analyticsService.logCustomEvent('interest_form_submit', parameters: { ... });

// 성공 시 소요 시간 측정

analyticsService.logCustomEvent('interest_save_success', parameters: {

'duration_ms': duration.inMilliseconds,

});

폼 제출 시작부터 완료까지의 시간을 측정하여 성능 데이터를 수집합니다.

8. 오류 추적

// 표준화된 오류 기록

analyticsService.logError(

errorType: 'server_connection',

errorMessage: e.toString(),

errorSource: 'main.dart',

additionalInfo: {'event': 'user_verification'}

);

모든 오류는 표준화된 형식으로 기록되어 문제 진단이 용이합니다.

9. WebView 콘텐츠 분석

// WebView 상호작용 이벤트 기록

analyticsService.logWebViewInteraction({

action: 'scroll',

contentId: widget.contentId,

url: widget.url,

additionalInfo: { ... }

});

WebView 내에서의 스크롤, 클릭, 활동 기간 등을 JavaScript 통합을 통해 추적합니다.

10. 푸시 알림 추적

// 알림 클릭 이벤트 기록

analyticsService.logNotificationClick({

contentId: contentId,

url: url,

source: source,

title: title,

});

푸시 알림의 수신, 클릭, 콘텐츠 조회 전환율을 추적합니다.

 

이 모든 데이터는 Firebase Analytics 콘솔에서 확인할 수 있으며, 사용자 행동 패턴, 기능 사용률, 문제점 등을 분석하여 앱 개선에 활용할 수 있습니다.

728x90