SDK ์—ฐ๋™

๐Ÿ“˜

Hackle Flutter SDK๋Š” Flutter SDK 2.0.0 ์ด์ƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Flutter SDK๋Š” Android SDK, iOS SDK ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜ OS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • Android API 16 (4.1 Jelly Bean) ์ด์ƒ
  • iOS 10 ์ด์ƒ

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

SDK ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

flutter pub add hackle
dependencies:
	hackle: ^2.7.0
๐Ÿšง

SDK ์„ค์น˜/์—…๋ฐ์ดํŠธ ํ›„ ์•ฑ์„ ์ƒˆ๋กญ๊ฒŒ ๋นŒ๋“œํ•ด์•ผ ์—ฐ๋™์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.



SDK ์ดˆ๊ธฐํ™”

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

  • HackleApp์€ SDK์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  • SDK ํ‚ค๋Š” ํ•ตํด ์„œ๋น„์Šค์˜ ๋Œ€์‹œ๋ณด๋“œ ์•ˆ์— ์œ„์น˜ํ•œ SDK ์—ฐ๋™ ์ •๋ณด์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๐Ÿšง

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

import "package:hackle/hackle.dart";

await HackleApp.initialize(YOUR_APP_SDK_KEY);

๊ถŒ์žฅ ์ดˆ๊ธฐํ™” ์ „๋žต: ์Šคํ”Œ๋ ˆ์‹œ ํ™”๋ฉด์„ ํ†ตํ•œ ์ดˆ๊ธฐํ™”

์•ฑ์„ ์ฆ‰์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์Šคํ”Œ๋ ˆ์‹œ ํ™”๋ฉด์„ ํ‘œ์‹œํ•˜๊ณ  SDK๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ฝœ๋ฐฑ์„ ํ†ตํ•ด ์Šคํ”Œ๋ ˆ์‹œ ํ™”๋ฉด์„ ๋‹ซ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


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

SDK ์ดˆ๊ธฐํ™” ์‹œ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import "package:hackle/hackle.dart";

HackleConfig config = HackleConfigBuilder()
  .build();

await HackleApp.initialize(YOUT_APP_SDK_KEY, hackleConfig: config);

์„ค์ •

๊ธฐ๋Šฅ

๊ธฐ๋ณธ๊ฐ’

์ง€์› ๋ฒ„์ „

exposureEventDedupIntervalMillis

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

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

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

๋ชจ๋“  ๋ฒ„์ „

debug

๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•˜๊ณ , ์ด๋ฒคํŠธ๋ฅผ ์ฆ‰์‹œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

false

2.1.0+

pollingIntervalMillis

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

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

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

2.3.0+

sessionTimeoutMillis

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

1800000 (30๋ถ„)

2.9.0+

automaticScreenTracking

Android / iOS ๋‹จ์—์„œ ๋ฐœ์ƒํ•˜๋Š”
Activity / ViewController์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•ด์„œ
ํ™”๋ฉด ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

true

2.21.0+


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

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

๐Ÿšง

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

HackleApp.fetch();