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