사용자 식별자와 속성

📘

사용자 식별자 관리

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

사용자 식별자

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

핵클에서 제공하는 식별자

핵클에서 기본으로 제공하는 식별자는 user_iddevice_id 입니다

const user = {
  userId: "143",        // 사용자 ID
  deviceId: "ae2182e0", // 디바이스 ID
}

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

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

추가 식별자

기본 식별자(device_id, user_id) 외의 식별자 타입을 추가할 경우 아래와 같이 설정할 수 있습니다.

📘

추가 식별자는 핵클 통합 식별자로 통합되지 않습니다.

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


사용자 속성(Property)

핵클 SDK는 사용자 속성을 추가할 수 있도록 지원합니다.

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

구분

타입

제약사항

속성 명(key)

string

  • 글자수 제한은 128자입니다. (128 characters)
  • 대소문자를 구분하지 않습니다.
    예를 들어 AGE와 age는 동일한 속성명으로 인식합니다.

속성 값(value)

boolean, string, number, array

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

사용자 속성 추가

사용자 속성은 간단하게 추가할 수 있습니다.

테스트 그룹 분배, 기능 플래스, 사용자 이벤트 전송 등 핵클 기능을 호출할 때 파라미터로 전달하는 사용자 객체에 속성을 추가하면
해당 기능 호출과 함께 사용자 속성도 추가됩니다.
이 때 PropertyOperations 객체에 set 을 이용하여 속성을 추가하는 것과 동일하게 동작합니다.

아래 예시에서는 세 가지 속성(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);
});

사용자 속성 설정

다른 핵클 기능을 호출하지 않고 사용자의 속성만 추가, 제거 할 수 있습니다.

지원하는 함수

설명

set

사용자 속성을 설정합니다. 속성 키에 이미 설정한 속성값이 있는 경우 덮어씁니다

setOnce

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

unset

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

clearAll

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


설정하고 싶은 사용자 속성으로 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")
  .unset("membership_type")
  .build()

hackleClient.updateUserProperties(operations, user)