본문 바로가기

개발관련

[Flutter] Flutter 앱에 Firebase Analytics 추가할 경우, DebugView 사용 방법 및 삽질 경험 공유

adb shell setprop debug.firebase.analytics.app PACKAGE_NAME # debug 모드 설정 시 사용, PACKAGE_NAME은 자기 앱의 패키지명을 넣자
adb shell setprop debug.firebase.analytics.app .none. # debug 모드 해제 시 사용

Flutter 앱에 Firebase Analytics를 추가하는 작업은 상당히 간단한 편이기 때문에 아마 문서를 보면 잘 따라할 수 있을 것이라고 생각된다. Firebase Analytics를 추가했다고 가정하겠다. 추가하는 작업이 궁금하다면 다음 링크를 보고 작업하면 될 것 같다. https://firebase.google.com/docs/analytics/get-started?platform=flutter 

 

Google 애널리틱스 시작하기  |  Firebase용 Google 애널리틱스

5월 10일, Google I/O에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Google 애널리틱스 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. iOS+ Android

firebase.google.com

 

Firebase Analytics를 추가했다면 앞으로의 기획 및 사업 방향에 대해 도움을 줄만한 데이터를 얻을 수 있게 될 것이다. 클릭률, 전환율, 체류시간, 또 직접 커스텀 이벤트를 로깅할 수도 있다. 이렇게 이벤트를 로깅할 때, Analytics SDK가 로깅되는 즉시 실시간으로 서버에 송신하지는 않는다고 한다. 약 1시간 정도까지 이벤트를 모아서 배치로 서버에 송신되는 메커니즘이라고 한다. 이런 경우, 내가 구현한  Analytics 관련 코드를 검증하기 위해서는 조금 번거로울 수 있다. 이렇게 나의 구현을 검증하기 위해서, Analytics SDK가 잘 구동되는지 검증하기 위해서 딱 맞춤인 것이 debug mode이다. Debug mode로 로깅되는 이벤트들은 운영 환경의 측정 결과에 영향을 주지 않도록 측정 결과에서는 제외된다고 한다.

 

다음 구글 문서 링크를 참고하면 어떻게 debug mode를 켤 수 있는지 나와있다. Flutter에 대해서 따로 설명이 있지는 않고 iOS, Android에 대해서만 설명이 있는데, 설명을 보고 따라하다보면 Flutter로 개발하는 입장에서 삽질할만한 함정이 있다. (오늘 함정에 빠져서 몇시간을 헤맨 것 같다;;)

 

아래 설정을 하고 google analytics의 DebugView에 이벤트가 잘 로깅이 되면 설정이 잘 된 것이다. 하지만 함정에 빠진다면,,, DebugView에 이벤트가 안 찍힐 수가 있다. 함정을 잘 피하도록 하자.

 

1) Android의 경우

안드로이드의 경우, 터미널에서 명령어를 통해서 디버그 모드를 설정하면 된다.

 

Debug mode 설정 시)

adb shell setprop debug.firebase.analytics.app PACKAGE_NAME

Debug mode 해제 시)

adb shell setprop debug.firebase.analytics.app .none.

 

함정 돌파법) https://stackoverflow.com/questions/42769236/firebase-analytics-debug-view-does-not-show-anything

함정1) 안드로이드 기기 및 에뮬레이터의 시간이 잘 맞춰져있는지 확인한다.

함정2) 그래도 안되면 app storage 를  clear하자. (보통, 앱 아이콘을 꾹 눌러서 정보 아이콘 누르면 메뉴가 나올 것이다. 필자는 이것을 하니까 해결됐다)

함정3) 그래도 안되면 앱을 지웠다 다시 설치하자.

 

2) iOS의 경우

Xcode에서 Product > Scheme > Edit Scheme으로 들어가면 커맨드 라인 인자를 줄 수 있다. 설정 시에는 '-FIRDebugEnabled' 인자를 해제 시에는 '-FIRDebugDisabled' 인자를 넣어주자.

 

여기서의 함정은

함정 관련 링크) https://github.com/flutter/flutter/issues/17043

함정) Xcode에서 준 인자가 'flutter run'이나 Android Studio의 Run에서는 적용이 안 된다는 것이다. 필자는 Android Studio의 Run을 사용하는데 터미널을 확인했을 때 '-FIRDebugEnabled' 옵션이 적용되지 않았다는 식의 로그가 찍혀서 많이 찾다가 위 github 이슈를 발견하였다. 인자를 적용하고 싶다면 Xcode에서 Run을 해야한다. 이 함정 때문에 많이 헤맸다.

그외 헷갈리는 점) '-FIRDebugEnabled'도 있고 '-FIRAnalyticsDebugEnabled'도 있다. 전자는 구글의 문서에서 설명하는 인자고 후자는 로그를 찍었을 때 나오는 설명에서 말해주는 인자이다. 어떤 것을 써도 상관은 없다는 듯 하다.

 

 

그 외에도 예전에 패키지명을 작업 중간에 변경을 해서 설정이 꼬여서 그걸로도 삽질을 좀 한 것 같다. 역시 개발은 삽질을 피할 수 없는 것인가... ㅋㅋㅋ 누군가는 좀 더 빠르게 함정을 피해갔으면 좋겠다.

 

좋은 하루 되세요 :)