menu
Is this helpful?

# Android

::: 팁

구현하기 전에 데이터 액세스 준비를 확인해 주세요.

Android SDK는 Android 4.0 (API 14) 이상의 버전을 지원합니다.

Android SDK (aar 형식)의 크기는 약 200KB입니다.

:::

최신 버전: 3.0.0-beta.1 다운로드 (opens new window)

업데이트 시간: 2023-10-17

소스 코드: Source Code (opens new window)

# 1. SDK 구현

# 1.1 자동 구현

  • Project 레벨의 build.gradle 파일에 다음을 추가해 주세요.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
}
  • Module의 카탈로그에서 build.gradle 파일에 다음을 추가해 주세요.
dependencies {
    implementation 'cn.thinkingdata.android:ThinkingAnalyticsSDK:3.0.0-beta.1'
}

# 1.2 수동 구현

  1. 다운로드 및 압축 해제 Android SDK (opens new window)
  2. libs 폴더에 ThinkingSDK.aar 추가

  1. build.gradle에서 다음을 추가하세요
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
}

# 2. 초기 (init) 설정

//메인 스레드에서 SDK 초기화
//방법 1
TDAnalytics.init(this, APPID, SERVER_URL);

//방법 2
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);

파라미터 설명:

  • APPID: 프로젝트의 APPID, TE 프로젝트 관리 화면에서 얻을 수 있습니다.
  • SERVER_URL: 데이터 전송 URL
    • SaaS의 경우 프로젝트 관리 → 데이터 액세스 URL에서 확인해 주세요.
    • 프라이빗 구축의 경우, 데이터 전송 URL을 지정할 수 있습니다.

Android 9.0+에서는 기본적으로 HTTP 요청이 제한되어 있으므로, HTTPS를 사용해 주세요.

# 3. 주요 기능

주요 기능을 사용하기 전에, 유저 식별 규칙을 확인해 주세요.

SDK는 게스트 ID를 자동으로 생성하고, 로컬에 저장됩니다; 유저가 로그인하기 전에, 게스트 ID를 신분 식별 ID로 사용됩니다.

주의: 게스트 ID는 유저가 앱을 재설치할 때 리셋됩니다.

# 3.1 계정 ID

설정유저가 로그인할 때, 로그인을 호출하고 유저의 계정 ID를 설정할 수 있습니다. TE 플랫폼은 계정 ID를 신원 확인 ID로 사용하고 로그아웃을 호출하기 전까지 유지합니다. 로그인을 여러 번 호출하면 이전의 계정 ID가 덮어씌워집니다.

// 유저의 로그인 고유 식별자, 데이터 추적에서의 #account_id에 해당합니다. #Account_id는 현재 TE입니다.
instance.login("TE");

이 방법으로는 로그인 이벤트가 전송되지 않습니다.

# 3.2 퍼블릭 이벤트 속성 설정

퍼블릭 이벤트 속성은 모든 이벤트에 포함되는 속성입니다. setSuperProperties를 호출하여 설정할 수 있습니다. 이벤트를 전송하기 전에 퍼블릭 이벤트 속성을 설정해 주세요.

예: 플레이어의 레벨, 전투력, 보유한 아이템 등

try {
        JSONObject superProperties = new JSONObject();
        superProperties.put("channel","TE");//string
        superProperties.put("age",1);//number
        superProperties.put("isSuccess",true);//boolean
        superProperties.put("birthday",new Date());//time

        JSONObject object = new JSONObject();
        object.put("key", "value");
        superProperties.put("object",object);//object
```JSONObject object1 = new JSONObject();
        object1.put("key", "value");
        JSONArray  arr    = new JSONArray();
        arr.put(object1);
        superProperties.put("object_arr",arr);//array object

        JSONArray  arr1    = new JSONArray();
        arr1.put("value");
        superProperties.put(arr1);//array
        //set super properties
        instance.setSuperProperties(superProperties);
    } catch (JSONException e) {
        e.printStackTrace();
    }

퍼블릭 이벤트 속성은 캐시에 저장되며, 앱을 시작할 때마다 호출할 필요가 없습니다. 만약 호출한다면 setSuperProperties: 이전에 설정한 퍼블릭 이벤트 속성은 덮어씌워집니다.

  • Key는 해당 속성의 이름으로 string 타입이며, 영문자와 숫자, "_"를 포함하며, 최대 50 문자입니다. TE 시스템은 일괄적으로 소문자로 통일됩니다.
  • Value는 해당 속성의 값으로, String, Number, Bloon, Time, object, array, list object를 지원합니다.

이벤트 속성, 유저 속성은 퍼블릭 이벤트 속성과 일치해야 합니다.

# 3.3 자동 수집 이벤트의 On/Off

클라이언트 SDK는 일부 이벤트를 자동으로 수집할 수 있으며, 실제 업무 상황에 따라 on/off를 설정하십시오. 아래는 참고용입니다. 자세한 내용은 자동 수집 가이드를 참조하십시오.

//TDAnalytics.TDAutoTrackEventType.APP_START  //APP 설치 이벤트
//TDAnalytics.TDAutoTrackEventType.APP_START //APP 시작 이벤트
//TDAnalytics.TDAutoTrackEventType.APP_END  //APP 종료 이벤트

//开启自动采集事件
TDAnalytics.enableAutoTrack(TDAnalytics.TDAutoTrackEventType.APP_START | TDAnalytics.TDAutoTrackEventType.APP_END
        | TDAnalytics.TDAutoTrackEventType.APP_INSTALL);

# 3.4 이벤트 전송

track을 호출하여 이벤트를 전송합니다. 미리 데이터 플랜을 준비하고 전송하십시오. 아래는 모델 코드입니다. 예: 아이템 구매

try {
    JSONObject properties = new JSONObject();
    properties.put("product_name","아이템");
    instance.track("product_buy",properties);
} catch (JSONException e) {
    e.printStackTrace();
}

이벤트 이름은 string 타입이며, 영문자와 숫자, "_"를 포함하여 최대 50 문자까지 입력 가능합니다.

# 3.5 유저 속성 설정

일반적인 유저 속성에 대해서는, UserSet을 사용하여 설정할 수 있지만, UserSet은 원래의 값을 덮어씁니다. 원래 해당 속성에 값이 없는 경우, 속성이 새로 생성됩니다. 아래는 코드 예시입니다.

try {
    //the username now is TA
    JSONObject properties = new JSONObject();
    properties.put("username","TA");
    instance.user_set(properties);
    //the userName now is TE
    JSONObject newProperties = new JSONObject();
    newProperties.put("username","TE");
    instance.user_set(newProperties);
} catch (JSONException e) {
    e.printStackTrace();
}

# 4. 코드 예시 (Example Code)

아래의 코드 예시에 모든 작업이 포함되어 있으며, 아래 순서대로 사용하는 것을 권장합니다:

ThinkingAnalyticsSDK instance;
if (privacy policy is authorized) {
    instance = ThinkingAnalyticsSDK.sharedInstance(this, TE_APP_ID, TE_SERVER_URL);
    instance != null{
      //유저가 로그인한 경우, 유저의 계정 ID를 고유 식별자로 설정할 수 있습니다
      instance.login("TE");
      //퍼블릭 이벤트 속성을 설정한 후, 각 이벤트는 퍼블릭 이벤트 속성을 가집니다
      try {
        JSONObject superProperties = new JSONObject();
        superProperties.put("channel","te");//문자열
        superProperties.put("age",1);//숫자
        superProperties.put("isSuccess",true);//불리언
        superProperties.put("birthday",new Date());//시간

        JSONObject object = new JSONObject();
        object.put("key", "value");
        superProperties.put("object",object);//객체
JSONObject object1 = new JSONObject();
        object1.put("key", "value");
        JSONArray  arr    = new JSONArray();
        arr.put(object1);
        superProperties.put("object_arr",arr);//개체 그룹

        JSONArray  arr1    = new JSONArray();
        arr1.put("value");
        superProperties.put(arr1);//배열
        //퍼블릭 이벤트 속성 설정
        instance.setSuperProperties(superProperties);
      } catch (JSONException e) {
        e.printStackTrace();
      }

      //자동 추적 활성화
      List<ThinkingAnalyticsSDK.AutoTrackEventType> eventTypeList = new ArrayList<>();
      eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL);
      eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START);
      eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END);
      instance.enableAutoTrack(eventTypeList);//이벤트 업로드
      try {
       JSONObject properties = new JSONObject();
       properties.put("product_name","product name");
       instance.track("product_buy",properties);
      } catch (JSONException e) {
       e.printStackTrace();
      }

      //유저 속성 설정
      try {
        JSONObject userProperties = new JSONObject();
        userProperties.put("username","TE");
        instance.user_set(userProperties);
       } catch (JSONException e) {
         e.printStackTrace();
       }
    }
}