[Firebase] Unity 분석 및 로그 기능 정리

이준영·2026년 1월 15일
post-thumbnail

저번에 Gemini로 대충 만들고 넘어간 분석 및 로그 기능에 대해서 공부를 좀 해보려고 한다.

FirebaseManager 코드 분석

Gemini 형님이 짜준 코드

1. 비동기 환경 검사 (CheckAndFixDependenciesAsync)

FirebaseApp.CheckAndFixDependenciesAsync()
  • 역할: 이 코드가 가장 핵심. 유저의 기기(안드로이드/iOS)에 Firebase가 작동하기 위한 필수 구글 서비스가 설치되어 있는지 확인.

  • 비동기(Async): 이 작업은 네트워크나 로컬 환경을 조회해야 하므로 시간이 걸릴 수 있음. 그래서 메인 게임 화면이 멈추지 않게 백그라운드에서 실행.

2. 작업 완료 후 처리 (ContinueWith)

.ContinueWith(task => { ... })
  • 역할: "검사가 끝나면 이 중괄호{} 안의 내용을 실행해라"라는 뜻.

  • task.Result: 검사 결과가 성공인지 실패인지 정보를 담고 있음.

3. 상태 체크 및 초기화 (DependencyStatus.Available)

if (dependencyStatus == DependencyStatus.Available) {
    FirebaseApp app = FirebaseApp.DefaultInstance;
    Debug.Log("Firebase가 준비되었습니다!");
}
  • 역할: 기기 환경에 문제가 없다면 DefaultInstance(기본 설정값)를 호출하여 앱과 Firebase 서버를 연결.

  • 중요: 이 과정이 없으면 이후에 호출하는 LogEvent는 아무리 호출해도 무시되거나 에러 발생.

4. 이벤트 전송 (LogEvent)

초기화 직후에 두 가지 타입의 로그를 보내고 있음.

  • FirebaseAnalytics.EventAppOpen:
    • 이것은 상수(Constant). 직접 "app_open"이라고 적는 것보다 오타 위험이 적고, Firebase가 내부적으로 "이건 앱이 켜진 거구나"라고 바로 인식하는 표준 규격.
  • "test_event_success":
    • 이것은 커스텀 이벤트. 개발자가 직접 지은 이름으로, Firebase 콘솔의 이벤트 목록에 이 이름이 그대로 뜨게 됩니다.

FirebaseAnalytics

행동 기록 (LogEvent)

가장 핵심이 되는 기능. 단순히 "클릭했다"가 아니라, 의미 있는 데이터를 남기는 것이 포인트.

  • LogEvent(string name): 파라미터 없이 사건 발생만 기록.

    • 가장 많이 쓰는 예: app_open (앱 실행), tutorial_begin (튜토리얼 시작), login (로그인 버튼 클릭)
  • LogEvent(string name, Parameter[] parameters): 상세 정보를 담아 보냄.

    • 가장 많이 쓰는 예:
      1. level_up: 유저가 레벨업했을 때 (새 레벨 수치 포함)
      2. spend_virtual_currency: 게임 머니를 썼을 때 (아이템 이름, 소모량 포함)
      3. ad_impression: 광고를 끝까지 봤을 때 (광고 종류 포함)

사용자 분류 (User Properties & ID)

"누가" 이 행동을 했는지 그룹화하여 분석할 때 사용.

  • SetUserId(string id): 유저 한 명을 고유하게 식별.

    • 활용: "A라는 유저가 어제는 폰으로, 오늘은 패드로 접속했다"는 것을 하나로 묶어 분석할 수 있게 함.
  • SetUserProperty(string name, string value): 유저에게 '꼬리표'를 붙임.

    • 가장 많이 쓰는 예:
      1. user_type: "paying" (과금러) vs "free" (무과금)
      2. ab_test_group: "A_Group" vs "B_Group" (업데이트 전 테스트 그룹 구분)
      3. last_stage: "Stage_5" (유저가 현재 머물고 있는 최고 단계)

환경 및 앱 관리 (Screen & Session)

분석 대시보드를 깔끔하게 유지하기 위한 설정들

  • LogScreenView: 현재 유저가 보고 있는 화면 이름을 강제로 지정.

    • 활용: 유니티는 보통 한 Scene 안에서 UI만 바뀌는 경우가 많아 Firebase가 화면 전환을 인식 못 할 때가 있음. 이때 "Lobby", "Store", "InGame" 등을 명시해 줌.
  • SetSessionTimeoutDuration(long milliseconds): 세션 기준을 정함.

    • 활용: 앱을 끄고 몇 분 뒤에 다시 켜야 '새로운 접속'으로 인정할지 정함. (기본값은 30분.)

많이 쓰는 추천 이벤트 (Gemini 피셜)

직접 이름을 짓지 않고 Firebase가 미리 정의해둔 상수를 쓰는 것이 대시보드 리포트 생성에 유리

상수 이름실제 의미활용도
EventLevelUp레벨 달성유저 성장 속도 파악
EventEarnVirtualCurrency재화 획득게임 내 인플레이션 모니터링
EventPurchase실제 결제매출 분석 (가장 중요)
EventAppUpdate앱 업데이트구버전 유저 비율 파악
profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글