SDK ์ฐ๋
Hackle Android SDK ๋ Android API 16 ์ด์ (4.1 Jelly Bean)์ ์ง์ํฉ๋๋ค.
์์กด์ฑ ์ถ๊ฐ
repositories {
mavenCentral()
}build.gradle ํ์ผ์ ์์กด์ฑ์ ์ถ๊ฐํฉ๋๋ค.
dependencies {
implementation 'io.hackle:hackle-android-sdk:2.63.0'
}ProGuard
ProGuard๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, aar ์ํฐํฉํธ์ ๋๋ ํ ๊ท์น์ด ์๋์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์๋ ๊ท์น์ ํฌํจ์์ผ์ผ ํฉ๋๋ค.
-keep class io.hackle.android.** { *; }
-keep class io.hackle.sdk.** { *; }Third-party ์์กด์ฑ
ํตํด Android SDK๋ ์๋ third-party ์์กด์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ค๋ช |
|---|---|
com.squareup.okhttp3:okhttp:3.12.2 | HTTP/HTTPS ํด๋ผ์ด์ธํธ |
com.google.code.gson:gson:2.8.6 | JSON ์ง๋ ฌํ/์ญ์ง๋ ฌํ |
com.google.android.gms:play-services-base:17.3.0 | Google Play Services ๊ณตํต ๋ชจ๋ |
SDK ์ด๊ธฐํ
SDK๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ฐ๋์ HackleApp์ ์ด๊ธฐํ ํด์ผ ํฉ๋๋ค. HackleApp์ ์ด๊ธฐํ ํ๊ธฐ ์ํด SDK ํค๊ฐ ํ์ํฉ๋๋ค.
HackleApp์ SDK์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฉ์๋๋ค์ ์ ๊ณตํ๋ ํด๋์ค์ ๋๋ค.- SDK ํค๋ ํตํด ๋์๋ณด๋ ๋ด SDK ์ฐ๋ ์ ๋ณด์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
์ด๊ธฐํ ์ ํตํด ์๋ฒ๋ก๋ถํฐ ํ์ํ ์ ๋ณด๋ค์ ๊ฐ์ ธ์์ SDK์ ์ ์ฅํฉ๋๋ค.
์ด๊ธฐํ๋ ๋น๋๊ธฐ๋ก ์คํ๋๋ฉฐ, ์ด๊ธฐํ ์ ๋ง์ง๋ง ํ๋ผ๋ฏธํฐ๋ก ์ฝ๋ฐฑ์ ์ ๋ฌํ๋ฉด SDK ์ฌ์ฉ ์ค๋น๊ฐ ์๋ฃ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๊ธฐํ๊ฐ ์๋ฃ ๋๊ธฐ ์ ์ A/B ํ ์คํธ, ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ํธ์ถํ๋ฉด ๊ธฐ๋ณธ ๊ทธ๋ฃน(A), ๊บผ์ง(false)์ ๋ฆฌํดํฉ๋๋ค.
import io.hackle.android.Hackle
import io.hackle.android.initialize
Hackle.initialize(applicationContext, YOUR_APP_SDK_KEY) {
// SDK ready to use.
}import io.hackle.android.HackleApp;
HackleApp.initializeApp(getApplicationContext(), YOUR_APP_SDK_KEY);๊ถ์ฅ ์ด๊ธฐํ ์ ๋ต: ์คํ๋ ์ ํ๋ฉด์ ํตํ ์ด๊ธฐํ
์ฑ์ ์ฆ์ ์์ํ์ง ์๊ณ ์คํ๋ ์ ํ๋ฉด์ ํ์ํ๊ณ SDK๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ดํ ์ฝ๋ฐฑ์ ํตํด ์คํ๋ ์ ํ๋ฉด์ ๋ซ๊ณ ์ฌ์ฉ์๊ฐ ์ฑ๊ณผ ์ํธ์์ฉ์ ์์ํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๊ธฐํ ์ ์ฌ์ฉ์ ์ฃผ์
์ ์ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ SDK๋ฅผ ์ด๊ธฐํ ํ ์ ์์ต๋๋ค.
- ์ ์ ์ ๋ณด๋ฅผ ํฌํจํ์ง ์์ผ๋ฉด ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ฃผ์ ์ ํ์ง ์๊ณ , ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ ์๋ ๊ฒฝ์ฐ Hackle Device ID๋ฅผ device id๋ก ๊ฐ์ง๊ณ ์ ์ ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ ์ ์ ๋ณด๋ SDK ์ด๊ธฐํ ์ดํ์๋ ์ ์ ์ ๋ณด ์ค์ ํจ์๋ฅผ ํตํด ์์ ๋กญ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
์ด๊ธฐํ ์ ์ฃผ์ ํ ์ ์ ์ ๋ณด์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ ๋ณํฉํ์ง ์์ต๋๋ค.
ex) ์คํ ๋ฆฌ์ง์
userId: A๊ฐ ์ ์ฅ๋ ์ํ์์ ์ด๊ธฐํ ์deviceId: B๋ฅผ ์ฃผ์ ํ๋ ๊ฒฝ์ฐ,
userId: null, deviceId: B์ธ ์ ์ ๋ก ์ค์ ๋ฉ๋๋ค.
import io.hackle.android.Hackle
import io.hackle.android.initialize
import io.hackle.sdk.common.User
let user = User.builder()
.userId("142") // ์ฌ์ฉ์ ID
.deviceId("ae2182e0") // ๋๋ฐ์ด์ค ID
.build()
Hackle.initialize(applicationContext, YOUR_APP_SDK_KEY, user) {
// SDK ready to use.
}import io.hackle.android.HackleApp;
import io.hackle.sdk.common.User
User user = User.builder()
.userId("142") // ์ฌ์ฉ์ ID
.deviceId("ae2182e0") // ๋๋ฐ์ด์ค ID
.build()
HackleApp.initializeApp(getApplicationContext(), YOUR_APP_SDK_KEY, user, () -> {
// SDK ready to use.
});์ด๊ธฐํ ์ค์ ์ ๋ณด
์ค์ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ SDK๋ฅผ ์ด๊ธฐํ ํ ์ ์์ต๋๋ค.
import io.hackle.android.Hackle
import io.hackle.android.HackleConfig
import io.hackle.android.initialize
val config = HackleConfig.builder()
.build()
Hackle.initialize(applicationContext, YOUR_APP_SDK_KEY, config) {
// SDK ready to use.
}import io.hackle.android.HackleApp;
import io.hackle.android.HackleConfig;
HackleConfig config = HackleConfig.builder()
.build();
HackleApp.initializeApp(getApplicationContext(), YOUR_APP_SDK_KEY, config, () -> {
// SDK ready to use.
});์ค์ ์ต์
์ค์ | ๊ธฐ๋ฅ | ๊ธฐ๋ณธ๊ฐ | ์ง์ ๋ฒ์ |
|---|---|---|---|
exposureEventDedupIntervalMillis | ๋์ผํ ์ฌ์ฉ์๊ฐ ์ฐ์์ผ๋ก ๋ฐ์์ํจ ๋์ผํ A/B ํ ์คํธ, ๊ธฐ๋ฅํ๋๊ทธ ๋ถ๋ฐฐ๊ฒฐ๊ณผ์ ๋ํ ๋ ธ์ถ ์ด๋ฒคํธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ต์๊ฐ: 1000 (1์ด) ์ต๋๊ฐ:
| 60000 (1๋ถ) | 2.7.0+ (2.47.0 ์ดํ๋ถํฐ ์ฑ ์ข ๋ฃ ํ ์ฌ์์ ์์๋ ์ง์ํฉ๋๋ค.) |
eventFlushIntervalMillis | ์์ง๋ ์ด๋ฒคํธ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ ์ฃผ๊ธฐ์ ๋๋ค. ์ต์๊ฐ: 1000 (1์ด) ์ต๋๊ฐ: 60000 (1๋ถ) | 10000 (10์ด) | 2.10.0+ |
sessionTimeoutMillis | ์ธ์ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํฉ๋๋ค. | 1800000 (30๋ถ) | 2.13.0+ |
pollingIntervalMillis | ๋์๋ณด๋์์ ์ค์ ํ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ ํ ์ ์์ต๋๋ค. ์ต์๊ฐ : 60000 (60์ด) | -1 (์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ง ์์) | 2.19.0+ |
automaticScreenTracking | ํ๋ฉด ์๋ ์ถ์ ํ์ฑํ ์ฌ๋ถ | true | 2.39.0+ |
automaticAppLifecycleTracking | ์ฑ ์์ / ์ข ๋ฃ ์๋ ์ถ์ ํ์ฑํ ์ฌ๋ถ | true | 2.64.0+ |
์ธ์คํด์ค ๊ฐ์ ธ์ค๊ธฐ
์ด๊ธฐํ ์ดํ ์๋ ์ฝ๋๋ฅผ ํตํด HackleApp ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
import io.hackle.android.Hackle
import io.hackle.android.app
val hackleApp = Hackle.appimport io.hackle.android.HackleApp;
HackleApp hackleApp = HackleApp.getInstance();๋์๋ณด๋ ์ค์ ์ ๋ณด ๊ฐฑ์
์ด๊ธฐํ ์ดํ ๋์ ๋ณด๋ ์ค์ ์ ๋ณด ๊ฐฑ์ ์ด ํ์ํ ๊ฒฝ์ฐ ๋ช ์์ ์ผ๋ก ๊ฐฑ์ ํ ์ ์์ต๋๋ค.
ํด๋น ํจ์๋ 60์ด์ ํ๋ฒ ์ ํ์ ์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค.
hackleApp.fetch {
// done
}hackleApp.fetch(new Runnable() {
@Override
public void run() {
// done
}
});Updated 3 days ago
