menu
Is this helpful?

# Java

::: 팁

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

Java SDK는 JDK1.7버전 이상을 지원합니다.

:::

최신 버전:v3.0.0

업데이트 시간:2023-11-29

다운로드:Source Code (opens new window)

# 1. SDK 구현

  1. Maven을 사용하여 SDK를 구현하고, pom.xml 파일에 다음과 같은 요청 정보를 입력해 주세요.
<dependencies>
    // others...
    <dependency>
        <groupId>cn.thinkingdata</groupId>
        <artifactId>thinkingdatasdk</artifactId>
        <version>3.0.0-beta.1</version>
    </dependency>
</dependencies>
  1. Logbus 설치

TE 시스템을 통해 빠르고 정확한 데이터 전송을 위해, SDK와 LogBus를 함께 사용하여 서버 데이터의 데이터 리포트를 권장합니다.

# 2. 초기 설정

다음은 SDK의 초기 설정 포맷 코드입니다:

TDAnalytics te = new TDAnalytics(new TDLoggerConsumer(LOG_DIRECTORY), false);

LOG_DIRECTORY는 로컬 액세스 파일의 주소가 됩니다.

# 3. 주요 기능

게스트 ID와 계정 ID를 정확하게 연동하기 위해, 게임 내에서 게스트 ID와 계정 ID를 모두 사용하는 경우, 이들 ID를 동시에 업로드하는 것을 권장합니다. 동시에 업로드하지 않을 경우, 유저가 중복으로 계산될 수 있습니다.

# 3.1 이벤트 전송

track을 사용하여 이벤트 전송을 합니다. 사전에 데이터 트래킹 정책을 준비한 후, 전송해 주세요. 다음은 모델 코드입니다.

// 이벤트 속성 설정
Map<String,Object> properties = new HashMap<String,Object>();
// 유저의 IP 주소를 설정하면 TE는 IP 주소에 따라 유저의 지리적 위치 정보를 분석합니다
properties.put("#ip", "192.168.1.1");//string
properties.put("channel","te");//string
properties.put("age",1);//number
properties.put("isSuccess",true);//bool
properties.put("birthday",new Date());//datatime
    
Map<String,Object>  object = new HashMap<String,Object>();
object.put("key", "value");
superProperties.put("object",object);//object
        
Map<String,Object> object1 = new HashMap<String,Object>();
object1.put("key", "value");

List<Object>  arr   = new ArrayList<Object>();
arr.put(object1);
properties.put("object_arr",arr);//object group
        
List<String>  arr1    = new ArrayList<String>();
arr1.put("value");
properties.put("arr",arr1);//array

try {
     te.track("account_id","distinct_id","payment",properties);
} catch (Exception e) {
     System.out.println("except:"+e);
}
  • 이벤트 이름은 string 타입으로, 영문자와 숫자, "_"를 포함하며 최대 50자입니다.
  • Key는 해당 속성의 이름으로 string 타입이며, 영문자와 숫자, "_"를 포함하여 최대 50자입니다. TE 시스템은 일괄적으로 소문자로 통일됩니다.
  • Value는 해당 속성의 값으로, String, Number, Bloon, Time, object, array, list object를 지원합니다.

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

# 3.2 유저 속성 설정

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

//유저 이름은 TA입니다
Map<String,Object> userProperties = new HashMap<String,Object>();
userProperties.put("user_name", "TA");
try {
   te.userSet("account_id","distinct_id",userProperties);
} catch (Exception e) {
  System.out.println("except:"+e);
}
 
//유저 이름은 TE입니다
Map<String,Object> newUserProperties = new HashMap<String,Object>();
newUserProperties.put("user_name", "TE");
try {
   te.userSet("account_id","distinct_id",newUserProperties);
} catch (Exception e) {
  System.out.println("except:"+e);
 }

# 4. 코드 예시 (Example Code)

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

//SDK를 초기화하고 로컬 파일을 쓰기 위한 디렉토리로 LOG_DIRECTORY를 설정합니다.
ThinkingDataAnalytics te = new ThinkingDataAnalytics(new LoggerConsumer(LOG_DIRECTORY));

//이벤트전송
Map<String,Object> properties = new HashMap<String,Object>();
//유저의 IP 주소를 설정하면 TE는 IP 주소에 따라 유저의 지리적 위치 정보를 분석합니다
properties.put("#ip", "192.168.1.1");//string
properties.put("channel","te");//string
properties.put("age",1);//number
properties.put("isSuccess",true);//bool
properties.put("birthday",new Date());//datetime
    
Map<String,Object>  object = new HashMap<String,Object>();
object.put("key", "value");
superProperties.put("object",object);//object
        
Map<String,Object> object1 = new HashMap<String,Object>();
object1.put("key", "value");

List<Object>  arr   = new ArrayList<Object>();
arr.put(object1);
properties.put("object_arr",arr);//object group
        
List<String>  arr1    = new ArrayList<String>();
arr1.put("value");
properties.put(arr1);//array
try {
     te.track("account_id","distinct_id","payment",properties);
} catch (Exception e) {
     System.out.println("except:"+e);
}

//유저 속성 설정
Map<String,Object> userProperties = new HashMap<String,Object>();
userProperties.put("user_name", "TE");
try {
   te.user_set("account_id","distinct_id",userProperties);
} catch (Exception e) {
  System.out.println("except:"+e);
}
//flush API를 호출하면 즉시 데이터가 파일에 기록됩니다.
//생산 환경에서는 잦은 플러시 호출로 인한 IO나 네트워크 오버헤드가 발생하지 않도록 주의해야 합니다
te.flush();