사용자 식별자와 속성

📘

사용자 식별자 관리

사용자 식별자는 사용자를 고유하게 식별하는 목적으로 사용합니다.
사용자 식별자의 의미와 중요성, 선택하는 기준 등에 대해서는 사용자 식별자 관리하기 문서를 참고하시기 바랍니다.

직접 관리하는 사용자 식별자 사용

서버 측 SDK는 사용자를 특정할 수 없기 때문에 항상 사용자 식별자를 파라미터로 직접 전달해야 합니다.
전달하는 식별자는 직접 관리하는 Primary Key, 디바이스 식별자, 회원 아이디, 이메일, 해시값 등이 될 수 있습니다.

예시

테스트 그룹 분배 후 사용자 이벤트 전송을 하는 상황을 예로 들면 다음과 같습니다.

User user = User.of("ae2182e0");

// 테스트 그룹 분배
Variation variation = hackleClient.variation(experimentKey, user);

// 사용자 이벤트 전송
hackleClient.track(event, user);
val user: User = Hackle.user("ae2182e0")

// 테스트 그룹 분배
val variation: Variation = hackleClient.variation(experimentKey, user)

// 사용자 이벤트 전송
hackleClient.track(event, user)

추가 식별자

기본 식별자 외의 추가 식별자는 아래 예시 코드를 통해 전송할 수 있습니다.

User user = User.builder("ae2182e0") // 기본 제공 식별자
    .userId("143")                   // 사용자 ID (핵클 통합 식별자 사용가능)
    .deviceId("ae2182e0")            // 디바이스 ID (핵클 통합 식별자 사용가능)
    .identifier("myCustomId", "42")  // Custom ID
    .build()
val user = Hackle.user("ae2182e0") { // 기본 제공 식별자
    userId("143")                    // 사용자 ID (핵클 통합 식별자 사용가능)
    deviceId("ae2182e0")             // 디바이스 ID (핵클 통합 식별자 사용가능)
    identifier("myCustomId", "42")   // Custom ID
}

속성(Property)

핵클 SDK는 사용자(User) 객체에 속성을 추가할 수 있도록 지원합니다.

  • 속성은 속성명(key)과 속성값(value)을 한 쌍으로 보내야 합니다.
  • 사용자 객체에 추가 가능한 속성 개수는 최대 64개입니다.

속성명(key)

  • 일반적인 변수명처럼 만들되 식별하기 쉽게 만드는 것을 권장합니다.
  • 글자수 제한은 64자입니다. (64 characters)
  • 대소문자를 구분하지 않습니다. 예를 들어 AGE와 age는 동일한 속성명으로 인식합니다.

속성값(value)

  • value는 boolean, string, number 타입을 지원합니다.
  • string 타입인 경우 글자수 제한은 64자입니다. (64 characters)
  • string 타입은 대소문자를 구분합니다. 예를 들어 APPLE과 apple은 서로 다른 속성값으로 인식합니다.
  • number 타입인 경우 정수 최대 15자리, 소수점 최대 6자리를 지원합니다.

예시

사용자(User) 객체는 테스트 그룹 분배, 기능 플래그 결정, 사용자 이벤트 전송에서 파라미터로 사용됩니다.
아래 예시에서는 세 가지 속성(age, grade, is_paying_user)을 추가한 것을 확인할 수 있습니다.

User user = User.builder(userId)
    .property("age", 30)
    .property("grade", "GOLD")
    .property("is_paying_user", false)
    .build();
    
// 테스트 그룹 분배  
Variation variation = hackleClient.variation(experimentKey, user);

// 기능 플래그 결정
boolean featureOn = hackleClient.isFeatureOn(featureKey, user);

// 사용자 이벤트 전송
hackleClient.track(event, user);
val user: User = Hackle.user(userId) {
    property("age", 30)
    property("grade", "GOLD")
    property("is_paying_user", false)
}
    
// 테스트 그룹 분배
val variation: Variation = hackleClient.variation(experimentKey, user)

// 기능 플래그 결정
val featureOn: Boolean = hackleClient.isFeatureOn(featureKey, user)

// 사용자 이벤트 전송
hackleClient.track(event, user)