SDK ์—ฐ๋™

๐Ÿ“˜

JavaScript SDK๋Š” IE11+ ๋ฐ ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

JavaScript SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Promise, Map API๊ฐ€ ํ•„์ˆ˜๋กœ ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํด๋ฆฌํ•„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด core-js๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.


์˜์กด์„ฑ ์ถ”๊ฐ€

npm install --save @hackler/javascript-sdk
yarn add @hackler/javascript-sdk
<!-- HTML์˜ ๊ฒฝ์šฐ ์˜์กด์„ฑ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค -->


SDK ์ดˆ๊ธฐํ™”

SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ HackleClient ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•ด SDK ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • HackleClient๋Š” SDK์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  • SDK ํ‚ค๋Š” ํ•ตํด ์„œ๋น„์Šค์˜ ๋Œ€์‹œ๋ณด๋“œ ์•ˆ์— ์œ„์น˜ํ•œ SDK ์—ฐ๋™ ์ •๋ณด์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
import * as Hackle from "@hackler/javascript-sdk";

// YOUR_BROWSER_SDK_KEY๋กœ ์ดˆ๊ธฐํ™”
const hackleClient = Hackle.createInstance("YOUR_BROWSER_SDK_KEY");
<!-- ๊ธฐ์กด ์ฝ”๋“œ head ์•ˆ์— ์ถ”๊ฐ€ -->
<script src="https://cdn2.hackle.io/npm/@hackler/[email protected]/lib/index.browser.umd.min.js"></script>
<script>
  // YOUR_BROWSER_SDK_KEY๋กœ ์ดˆ๊ธฐํ™”
  window.hackleClient = Hackle.createInstance("YOUR_BROWSER_SDK_KEY");
</script>

์ดˆ๊ธฐํ™” ์™„๋ฃŒ

์ดˆ๊ธฐํ™” ์‹œ ํ•ตํด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์™€์„œ SDK์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™”๋Š” ๋น„๋™๊ธฐ๋กœ ์‹คํ–‰๋˜๋ฉฐ, await์œผ๋กœ ์ดˆ๊ธฐํ™” ์™„๋ฃŒ ์ „๊นŒ์ง€ ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿšง

์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ ๋˜๊ธฐ ์ „์— A/B ํ…Œ์ŠคํŠธ, ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ธฐ๋ณธ ๊ทธ๋ฃน(A), ๊บผ์ง(false)์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

async function initHackle(){
  await hackleClient.onInitialized();
  // SDK ready to use
}

// deprecated
hackleClient.onReady(() => {
  // SDK ready to use
});

์ดˆ๊ธฐํ™” ์„ค์ •์ •๋ณด

์„ค์ •์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ SDK๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const config = {
  debug: true
};

const hackleClient = Hackle.createInstance("YOUR_BROWSER_SDK_KEY", config);

์„ค์ • ์˜ต์…˜

ํ‚ค

๊ธฐ๋Šฅ

๊ธฐ๋ณธ๊ฐ’

์ง€์› ๋ฒ„์ „

debug

๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

false

1.0.0+

pollingIntervalMillis

๋Œ€์‹œ๋ณด๋“œ์—์„œ ์„ค์ •ํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Ÿ๊ฐ’ : 60000 (60์ดˆ)

-1 (์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Œ)

11.1.0+

exposureEventDedupIntervalMillis

๋™์ผํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ์†์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚จ ๋™์ผํ•œ A/B ํ…Œ์ŠคํŠธ, ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋…ธ์ถœ ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Ÿ๊ฐ’: 1000 (1์ดˆ) ์ตœ๋Œ“๊ฐ’: 3600000 (1์‹œ๊ฐ„)

36000 (1๋ถ„ / 11.23.0 ์ด์ƒ)

-1 (์ค‘๋ณต์ œ๊ฑฐ ํ•˜์ง€ ์•Š์Œ / 11.23.0 ๋ฏธ๋งŒ)

11.1.0+

sessionTimeoutMillis

์„ธ์…˜๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

1800000 (30๋ถ„)

11.8.0+

devTool

์‚ฌ์šฉ์ž ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

undefined

11.13.0+

autoOpenDevTool

์‚ฌ์šฉ์ž ํƒ์ƒ‰ ๋ฒ„ํŠผ์ด ์ž๋™์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

false

11.13.0+

sameSiteCookie

ํ•ตํด ์ฟ ํ‚ค์— sameSite ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ฟ ํ‚ค ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์ •์ฑ…์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Lax

11.20.0+

secureCookie

true ๋กœ ์„ค์ •ํ•˜์‹œ๋ฉด ํ•ตํด ์ฟ ํ‚ค์— Secure ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

false

11.20.0+

user

์ดˆ๊ธฐํ™” ์‹œ์ ์— ์‚ฌ์šฉ์ž๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

undefined

11.22.3+

์ดˆ๊ธฐํ™” ์‹œ ์‚ฌ์šฉ์ž ์ฃผ์ž…

config์— user๋ฅผ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์œ ์ € ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ SDK๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์œ ์ € ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ์ฟ ํ‚ค์— ์ €์žฅ๋œ ์œ ์ € ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ฟ ํ‚ค์— ์ €์žฅ๋œ ์œ ์ € ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Hackle Device ID๋ฅผ device id๋กœ ๊ฐ€์ง€๊ณ  ์œ ์ €๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ“˜

์œ ์ € ์ •๋ณด๋Š” SDK ์ดˆ๊ธฐํ™” ์ดํ›„์—๋„ ์œ ์ € ์ •๋ณด ์„ค์ • ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const user = {
  userId: "LOGIN_ID",
  deviceId: "CUSTOM_DEVICE_ID"
};

const config = {
  user: user
};

const hackleClient = Hackle.createInstance("YOUR_BROWSER_SDK_KEY", config);

๋Œ€์‹œ๋ณด๋“œ ์„ค์ • ์ •๋ณด ๊ฐฑ์‹ 

๋Œ€์‹œ๋ณด๋“œ ์„ค์ • ์ •๋ณด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐฑ์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿšง

ํ•ด๋‹น ํ•จ์ˆ˜๋Š” 60์ดˆ์— ํ•œ๋ฒˆ ์ œํ•œ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hackleClient.fetch();