221110 TIL [Firebase analytics 정리]

Doogie·2022년 11월 10일
0

최근 취업을 하게 되어 블로그건 개인 플젝이건 건들일 시간이 없었다...

일단 회사에서 주어진 업무는 앱을 완전히 인수인계 받기 전에 firebase에 대한 조사(?) 및 어플에 기능을 심는 것이었는데(일단 로아랑에 테스트 해봄)

어플에 심는 것 자체는 어렵지 않았다 firebase 프로젝트를 만들고 필요한 pod을 설치해서 로그를 보내기만 하는 아주 간단한 과정이었다

import FirebaseAnalytics

    private func sendLogingEvent(_ userInfo: UserInfo) {
        switch storage.mainUser.value?.name {
        case "최지근":
            FirebaseAnalytics.Analytics.logEvent("search_user_info_최지근",
                                                 parameters: ["class": userInfo.mainInfo.class,
                                                              "server": userInfo.mainInfo.server])
        case "최두기":
            FirebaseAnalytics.Analytics.logEvent("main_character_최두기",
                                                 parameters: ["class": userInfo.mainInfo.class,
                                                              "server": userInfo.mainInfo.server])
            
        default:
            FirebaseAnalytics.Analytics.logEvent("search_user_info_unknown",
                                                 parameters: ["class": userInfo.mainInfo.class,
                                                              "server": userInfo.mainInfo.server])
        }
    }

userInfo를 매개변수로 받는 sendLogingEvent가 호출되면 대표캐릭터가 누구인지에 따라 검색된 캐릭터의 정보가 로그로 전송되는 것이다
즉, 대표 캐릭터가 "최지근" 일때, "search_user_info_최지근"이라는 이벤트로 전송되며 파라미터로 현재 검색된 캐릭터의 클래스와 서버 정보가 전송된다 이다

그럼 나는 대표캐릭터가 최지근일 경우 가장 많이 검색된 캐릭터의 클래스와 서버 정보를 데이터로 볼 수 있을 줄 알았다

[문제 발생]


결론적으로 전송된 데이터들을 볼 수는 있으나 매우매우매우 큰 문제는 이벤트는 정상적으로 데이터로 쌓이나 파라미터로 전달한 상세정보는 30분 뒤면 휘발된다는 것이다

그니까 대표캐릭터가 최지근인 사람의 검색 횟수는 이벤트이기 때문에 계속해서 볼 수 있지만 그 검색된 정보들의 통계는 보지 못한다는 것...

[해결 방법]

- 1. 자동 수집 정보 이용

firebase analytics기능을 사용하면 사용자 행동기반으로 자동으로 연령, 지역, 성별 등의 정보를 수집하는 것 같다 (내가 아무 설정을 해주지 않아도 이런 필터가 있어서 걸 수 있는 걸 보면?)

이 정보를 사용하면 특정 이벤트에 대한 연령, 지역, 성별 분포를 확인 가능하다
단, 반대의 경우는 어렵다
(ex. '대표캐릭터가 최지근인 사람들의 연령 분포도'는 확인이 가능하지만
'20대 사용자들의 대표 캐릭터 중 최지근이 얼마나 많은 비율을 차지하는지'는 가능은 하겠다만 이벤트를 일일이 찾아 수작업으로 정리를 하는 외에는 방법이 없어 보인다)

즉, 이 방법도 데이터 수집에는 한계가 있다

- 2. 맞춤 매개변수(custom definition)사용

기존 방식대로 매개변수를 전송할 때는 30분 뒤면 매개변수에 대한 정보는 휘발 되었지만 맞춤 매개변수를 이용하면 휘발되지 않는 매개변수를 보낼 수 있다 단! 한 개만...
이벤트 하나당 한가지의 매개변수만 전송이 가능한데 거기다가 이벤트는 50개 까지 밖에 설정을 못한다

예를들어서 '20대 유저들이 가장 많이 검색하는 캐릭터 명, 클래스, 서버명'을 알고 싶다면

  • 이벤트명: search_age_20_30(1), 매개변수명: name
  • 이벤트명: search_age_20_30(2), 매개변수명: class
  • 이벤트명: search_age_20_30(3), 매개변수명: serverName

이런 식으로 세개의 이벤트를 보내서 확인을 해야한다

즉, 이 방법 또한 이벤트 개수 제한도 있고 1번보다는 낫겠지만 결국에 수기로 데이터화 해야한다

- 3. BigQuery연동

BigQuery에 연동을 하면 처음에 사용한 방식 대로 이벤드 - 여러개의 파라미터 를 전송하면 BigQuery에 저장이 되며 SQL로 교집합을 찾아내거나 하는 것 같은데 기본적인 문법만 알아도 사용을 할 수 있어 보인다
그래서 가장 최선의 방법은 이 방법으로 확인이 되고 있으며 이 부분에 대해서는 추 후 작성할 예정

마무리

Firebase analytics에 대해 앱 분석 툴이다 라고만 알고 있었지 정확히 어떻게 사용하며 어떤 정보까지 수집할 수 있는지는 몰랐는데 사용방법은 그리 어렵지 않다는 것을 알았고 swift외 적으로도 필요한 지식이 있다는 것을 깨달았으며 다른 개발자분들한테 물어봐도 기본적인 SQL정도는 알고 있어야 협업하기에 편하다는 의견으로 보아 조만간 이 내용에 대해서도 알아봐야겠다

profile
끊임없이 문을 여는 개발자

0개의 댓글