사용자 식별자와 속성

📘

사용자 식별자 관리

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

사용자 식별자

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

const user = {
  userId: "143", // 사용자 ID (핵클 통합 식별자 사용가능)
  deviceId: "ae2182e0", // 디바이스 ID (핵클 통합 식별자 사용가능)
  identifiers: {
    myCustomId: "42" // Custom ID
  }
}

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

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

사용자 속성(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)을 추가한 것을 확인할 수 있습니다.

const user = {
  userId: "143",
  deviceId: "ae2182e0",
  properties: {
    age: 30,
    grade: "GOLD",
    is_paying_user: false
  }
}

// 테스트 그룹 분배
hackleClient.onReady(function() {
  const variation = hackleClient.variation(experimentKey, user);
});

// 기능 플래그 결정
hackleClient.onReady(function() {
  const featureOn = hackleClient.isFeatureOn(featureKey, user);
});

// 사용자 이벤트 전송
hackleClient.onReady(function() {
  hackleClient.track({ key: "purchase" }, user);
});

사용자 속성 업데이트

사용자 속성을 추가, 제거 할 수 있습니다.

설정하고 싶은 사용자 속성으로 PropertyOperations 객체를 인스턴스화 합니다. 다음 updateUserProperties 를 호출하여 사용자 속성을 업데이트 합니다. 한번에 여러개의 속성을 설정할 수도 있습니다.

import { PropertyOperationsBuilder } from "@hackler/javascript-sdk"

const user = {
  userId: "143",
  deviceId: "ae2182e0",
}

const operations = new PropertyOperationsBuilder()
  .set("age", 42)
  .set("grade", "GOLD")
  .setOnce("sign_up_date", "2020-07-03")
  .build()

hackleClient.updateUserProperties(operations, user)

set

사용자 속성을 설정합니다. 설정한 속성값으로 덮어씁니다.

const operations = new PropertyOperationsBuilder()
    .set("age", 42)
    .set("grade", "GOLD")
    .build();

hackleClient.updateUserProperties(operations, user);

setOnce

사용자 속성 값을 한번만 설정합니다. 속성키에 대한 속성이 이미 있는 경우 setOnce 는 무시됩니다. 예를들어 사용자에 대한 가입일, 초기 가입 위치 등을 설정할 수 있습니다.

const operations = new PropertyOperationsBuilder()
    .setOnce("sign_up_date", "2020-07-03")
    .setOnce("initial_location", "Seoul")
    .build();

hackleClient.updateUserProperties(operations, user);
<script>
  const operations = new Hackle.PropertyOperationsBuilder()
    .setOnce("sign_up_date", "2020-07-03")
    .setOnce("initial_location", "Seoul")
    .build();

  hackleClient.updateUserProperties(operations);
</script>

unset

설정된 사용자 속성을 제거합니다.

const operations = new PropertyOperationsBuilder()
    .unset("membership_type")
    .build();

hackleClient.updateUserProperties(operations, user);
<script>
  const operations = new Hackle.PropertyOperationsBuilder()
      .unset("membership_type")
      .build();

  hackleClient.updateUserProperties(operations);
</script>

clearAll

사용자의 모든 속성을 제거합니다.

const operations = new PropertyOperationsBuilder()
    .clearAll()
    .build();

hackleClient.updateUserProperties(operations, user);
<script>
  const operations = new Hackle.PropertyOperationsBuilder()
      .clearAll()
      .build();

  hackleClient.updateUserProperties(operations);
</script>