사용자 식별자와 속성
사용자 식별자 관리사용자 식별자는 사용자를 고유하게 식별하는 목적으로 사용합니다.
사용자 식별자의 의미와 중요성, 선택하는 기준 등에 대해서는 사용자 식별자 관리하기 문서를 참고하시기 바랍니다.
사용자 식별자
서버 측 SDK는 사용자를 특정할 수 없기 때문에 항상 사용자 객체를 파라미터로 직접 전달해야 합니다.
전달하는 사용자의 식별자는 직접 관리하는 Primary Key, 디바이스 식별자, 회원 아이디, 이메일, 해시값 등이 될 수 있습니다.
핵클에서 제공하는 식별자
핵클에서 기본으로 제공하는 식별자는 user_id와 device_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) |
|
|
속성 값(value) |
|
|
사용자 속성 추가
사용자 속성은 간단하게 추가할 수 있습니다.
테스트 그룹 분배, 기능 플래스, 사용자 이벤트 전송 등 핵클 기능을 호출할 때 파라미터로 전달하는 사용자 객체에 속성을 추가하면
해당 기능 호출과 함께 사용자 속성도 추가됩니다.
이 때 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);
});사용자 속성 설정
다른 핵클 기능을 호출하지 않고 사용자의 속성만 추가, 제거 할 수 있습니다.
지원하는 함수 | 설명 |
|---|---|
| 사용자 속성을 설정합니다. 속성 키에 이미 설정한 속성값이 있는 경우 덮어씁니다 |
| 사용자 속성 값을 한번만 설정합니다. 속성키에 대한 속성이 이미 있는 경우 무시됩니다. |
| 사용자 속성을 제거합니다. |
| 사용자의 모든 속성을 제거합니다. |
설정하고 싶은 사용자 속성으로 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)Updated 9 days ago
