SDK ์—ฐ๋™

๐Ÿ“˜

Hackle React Native SDK๋Š” React 16.8 ์ด์ƒ ๋ฐ React Native 0.64.1 ์ด์ƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

๐Ÿšง

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

npm install --save @hackler/react-native-sdk
yarn add @hackler/react-native-sdk

iOS

cd ios
pod install

Expo ์‚ฌ์šฉ ์‹œ ์˜์กด์„ฑ ์ถ”๊ฐ€

React Native SDK 3.17.0 ์ด์ƒ ๋ฒ„์ „์—์„œ Expo๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ

React Native SDK๋Š” Expo Go ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. expo prebuild ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.

npm install --save @hackler/react-native-sdk
yarn add @hackler/react-native-sdk

expo ์‚ฌ์šฉ ์‹œ์—๋Š” link๋‚˜ pod install์€ ์‹คํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.


์•ˆ๋“œ๋กœ์ด๋“œ ์„ค์ •

React Native SDK 3.25.0 ์ดํ•˜ ๋ฒ„์ „์—์„œ๋งŒ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
๐Ÿšง

SDK 3.26.0 ์ด์ƒ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ์•„๋ž˜ ์„ค์ •์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ์œผ๋กœ ์ง„ํ–‰ํ•ด ์ฃผ์„ธ์š”.

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ registerActivityLifecycleCallbacks๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

์ƒ์„ฑ๋œ Application ํด๋ž˜์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ AndroidManifest.xml์— ๋“ฑ๋กํ•ด ์ฃผ์„ธ์š”.

Application ํด๋ž˜์Šค์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ onCreate ํ•จ์ˆ˜ ์•„๋ž˜ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.

import android.app.Application;
import io.hackle.android.HackleApp;

public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    ...
    HackleApp.registerActivityLifecycleCallbacks(this);
    ...
  }
}
import android.app.Application
import io.hackle.android.Hackle
import io.hackle.android.registerActivityLifecycleCallbacks

class MyApplication : Application() {
  override fun onCreate() {
    super.onCreate()
    ...
    Hackle.registerActivityLifecycleCallbacks(this)
    ...
  }
}


SDK ์ดˆ๊ธฐํ™”

SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ createInstance()์— SDK ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜์—ฌ HackleReactNativeSDKClient๋ฅผ ์ƒ์„ฑํ•˜๊ณ  React ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ์‹ธ๋Š” HackleProvider์— ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • SDK ํ‚ค๋Š” ํ•ตํด ์„œ๋น„์Šค์˜ ๋Œ€์‹œ๋ณด๋“œ ์•ˆ์— ์œ„์น˜ํ•œ SDK ์—ฐ๋™ ์ •๋ณด์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™” ์‹œ ํ•ตํด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์™€ SDK์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์‹œ๊ฐ„์€ ์ˆ˜ ๋ฐ€๋ฆฌ ์ดˆ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ฆ‰์‹œ ๋ Œ๋”๋ง์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

import { createInstance, HackleProvider } from "@hackler/react-native-sdk";

// YOUR_APP_SDK_KEY ์ž๋ฆฌ์— SDK ํ‚ค๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.
const hackleClient = createInstance("YOUR_APP_SDK_KEY");

const App = () => {
  return (
    <HackleProvider hackleClient={hackleClient}>
      <YourApp />
    </HackleProvider>
  );
};

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

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

import { createInstance, HackleProvider } from "@hackler/react-native-sdk";

const config = {
  debug: true
};

const hackleClient = createInstance("YOUR_APP_SDK_KEY", config);

const App = () => {
  return (
    <HackleProvider hackleClient={hackleClient}>
      <YourApp />
    </HackleProvider>
  );
};

์„ค์ •

๊ธฐ๋Šฅ

๊ธฐ๋ณธ๊ฐ’

์ง€์› ๋ฒ„์ „

exposureEventDedupIntervalMillis

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

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

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

3.3.1+

debug

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

false

3.4.1+

pollingIntervalMillis

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

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

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

3.6.0+

sessionTimeoutMillis

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

1800000 (30๋ถ„)

3.11.0+


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

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

๐Ÿšง

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

hackleClient.fetch();