본문 바로가기

게임개발/Unity

[Unity] Firebase Analytics 애널리틱스 이벤트

 

1. 파이어베이스 시작하기

 

[Unity] Firebase 파이어베이스 시작하기 (tistory.com)

 

[Unity] Firebase 파이어베이스 시작하기

1. 유니티 프로젝트를 생성하고, 플랫폼을 Android로 변경한다. 2. Package Name을 설정한다. 3. 파이어베이스 프로젝트를 생성한다. mrw0119.tistory.com/150 [Firebase] 프로젝트 생성 1. Firebase 웹사이트..

mrw0119.tistory.com

 

 

2. FirebaseAnalytics 패키지를 임포트한다.

 

 

 

3. FirebaseManager 스크립트를 작성한다.

 

사실 Firebase Analytics 이벤트 호출은 간단하다.

 

그냥 FirebaseAnalytics.LogEvent("이벤트이름")를 호출해주면 끝이다.

 

파이어베이스 사용가능 여부 체크후 테스트를 위한 이벤트들을 호출한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using UnityEngine;
using Firebase;
using Firebase.Analytics;
 
public class FirebaseManager : MonoBehaviour
{
    FirebaseApp _app;
 
    void Start()
    {
        FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            if (task.Result == DependencyStatus.Available)
            {
                _app = FirebaseApp.DefaultInstance;
 
                LogEvent("test");
 
                LogEvent("param_test_int""IntParam"111);
 
                LogEvent("param_test_float""FloatParam"2.22f);
 
                LogEvent("param_test_string""StringParam""TEXT");
 
                LogEvent("param_test_array",
                    new Parameter(FirebaseAnalytics.ParameterCharacter, "warrior"),
                    new Parameter(FirebaseAnalytics.ParameterLevel, 5));
            }
            else
            {
                Debug.LogError("Could not resolve all Firebase dependencies: " + task.Result);
            }
        });
    }
 
    public void LogEvent(string eventName)
    {
        FirebaseAnalytics.LogEvent(eventName);
    }
 
    public void LogEvent(string eventName, string paramName, int paramValue)
    {
        FirebaseAnalytics.LogEvent(eventName, paramName, paramValue);
    }
 
    public void LogEvent(string eventName, string paramName, float paramValue)
    {
        FirebaseAnalytics.LogEvent(eventName, paramName, paramValue);
    }
 
    public void LogEvent(string eventName, string paramName, string paramValue)
    {
        FirebaseAnalytics.LogEvent(eventName, paramName, paramValue);
    }
 
    public void LogEvent(string eventName, params Parameter[] paramArray)
    {
        FirebaseAnalytics.LogEvent(eventName, paramArray);
    }
}
 
cs

 

 

3. 빌드하고 안드로이드폰에서 실행한후 Firebase 웹에서 Events를 확인한다.

 

 

아직 테스트 이벤트는 확인되지 않고, 자동 수집 이벤트만 보여진다.

 

※ 자동 수집 이벤트

Firebase Analytics는 사용자가 호출하는 이벤트 외에 특정 이벤트들을 자동수집한다.

대표적인 자동수집 이벤트는 다음과 같다.

- first_open: 앱 설치 또는 재설치후 처음 앱이 실행될때
- app_remove: 안드로이드 기기에서 앱이 삭제될때 (android)
- notification_open: FCM에서 보낸 알림을 사용자가 열때
- screen_view: 화면전환 발생
- session_start: 사용자가 앱 또는 웹에 참여할때
- user_engagement: 앱이 포그라운드 상태일때 주기적으로
- in_app_purchase: 사용자가 인앱 구매를 완료할때 (ios, android)


https://support.google.com/firebase/answer/9234069

 

테스트 이벤트가 확인되지 않는 이유는

 

모바일의 앱에서 이벤트 호출시마다 즉시즉시 파이어베이스에 업로드하지 않기 때문이다.

 

Firebase 문서에 따르면 앱은 대략 1시간동안 이벤트를 모아서 일괄 업로드한다.

 

그 이유는 배터리 절약 및 네트워크 데이터 사용량을 줄이기 위함이라 한다.

 

따라서 위의 Events 탭에서 실제 이벤트를 확인하기 위해서는 1시간가량을 기다려야 한다는 말이다.

 

하지만 우리는 그럴 여유가 없으므로 DebugView를 사용한다.

 

 

 

DebugView에서는 이벤트를 거의 실시간으로 확인할 수 있다. (대략 20~30초 딜레이는 있다)

 

하지만 DebugView에서 이벤트를 확인하기 위해서는 앱을 Firebase 디버그모드로 실행해야 한다.

 

디버그모드 활성화를 위해서는 adb 명령을 사용한다.

 

 

4. adb를 실행하기 위해 고급 시스템 설정으로 들어가서 환경 변수를 등록한다.

 

adb 실행파일은 Android SDK의 platform-tools 폴더에 위치한다.

 

편의상 어디서나 adb를 실행할 수 있도록 platform-tools 폴더를 찾아 Path 등록을 해준다.

 

 

 

5. 안드로이드폰을 연결한후 윈도우즈 cmd창에서 adb 명령을 입력한다.

 

우선 안드로이드폰은 개발자모드, USB 디버깅이 활성화되어 있어야 한다.

 

그리고 다음과 같이 cmd창에 adb 명령을 입력한다.

 

 

adb shell setprop debug.firebase.analytics.app <package_name>

 

 

이렇게 별다른 에러없이 파일이 실행되었다면 해당 앱이 Firebase Analytics의 디버그 모드로 변경된 것이다.

 

(설정된 디버그모드는 앱을 삭제하고 재설치해도 지속된다.)

 

 

6. 그럼 이제 앱을 재실행하여, DebugView에서 로그를 확인한다.

 

 

참고로 디버그모드 상태에서 호출되는 이벤트는 실제 Events에는 포함되지 않는다.

 

 

그리고 앱 삭제후 재설치하여 다시 이벤트를 호출하면, 같은 폰이라도 새로운 디버그 기기로 등록된다.

 

 

 

 

※ Gradle Failed 빌드 오류
간혹 Firebase SDK Import 후에 빌드 오류가 날때가 있었는데,
Assets-> Reimport All 로 해결되었다.