Android
의존성 추가
repositories {
mavenCentral()
}build.gradle 파일에 의존성을 추가합니다.
dependencies {
implementation 'io.hackle:hackle-android-sdk:2.66.1'
}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 기능을 호출하지 마세요.
초기화는 비동기로 진행되며, 핵클 서버와의 동기화가 끝나야 완료됩니다. 초기화가 완료되기 전에 SDK 기능을 호출하면 SDK가 정상적으로 동작하지 않거나 이벤트가 유실될 수 있습니다.
A/B 테스트, 기능 플래그, 리모트 컨피그가 정상 동작하지 않습니다. 실제 분배 결과 대신 기본 그룹(
A), 꺼짐(false), 호출 시 전달한 기본값을 리턴합니다. (사유:SDK_NOT_READY)노출 이벤트가 기록되지 않습니다. 사용자가 실제로 실험 대상이었더라도 노출로 집계되지 않아 실험 결과가 왜곡될 수 있습니다.
이벤트가 유실될 수 있습니다.
track()으로 수집한 이벤트가 전송되지 않을 수 있습니다.이벤트에 세션 ID가 부정확하게 남을 수 있습니다.
인앱 메시지가 노출되지 않습니다. 발동 조건은 이벤트가 수집되는 시점에 평가되며, 초기화 완료 전에 수집된 이벤트는 초기화 이후 다시 평가되지 않습니다.
SDK 기능 호출은 반드시 초기화 완료 이후에 실행해 주세요.
권장 초기화 전략: 스플레시 화면을 통한 초기화
앱을 즉시 시작하지 않고 스플레시 화면을 표시하고 SDK를 초기화합니다. 이후 콜백을 통해 스플레시 화면을 닫고 사용자가 앱과 상호작용을 시작할 수 있도록 합니다.
초기화 시 사용자 주입
유저 정보를 포함하여 SDK를 초기화 할 수 있습니다.
유저 정보를 포함하지 않으면 로컬 스토리지에 저장된 유저 정보를 사용합니다.
유저 정보를 포함하는 경우 로컬 스토리지에 저장된 유저 정보는 사용하지 않습니다.
사용자 주입을 하지 않고, 로컬 스토리지에 저장된 유저 정보도 없는 경우 Hackle Device ID를 device id로 가지고 유저를 사용합니다.
초기화 시 주입한 유저 정보와 로컬 스토리지에 저장된 유저 정보는 병합하지 않습니다.
ex) 스토리지에 userId: A 가 저장된 상태에서 초기화 시 deviceId: B 를 주입하는 경우,
userId: null, deviceId: B인 유저로 설정됩니다.
초기화 설정정보
설정정보를 포함하여 SDK를 초기화 할 수 있습니다.
설정 옵션
exposureEventDedupIntervalMillis*
동일한 사용자가 연속으로 발생시킨 동일한 A/B 테스트, 기능플래그 분배결과에 대한 노출 이벤트를 제거합니다.
최솟값: 1000 (1초)
최댓값: 86400000(24시간)
60000 (1분)
2.7.0+
eventFlushIntervalMillis
수집된 이벤트를 서버로 전송하는 주기입니다.
최솟값: 1000 (1초)
최댓값: 60000 (1분)
10000 (10초)
2.10.0+
pollingIntervalMillis
대시보드에서 설정한 정보를 주기적으로 업데이트 할 수 있습니다.
최솟값 : 60000 (60초)
-1 (주기적으로 업데이트하지 않음)
2.19.0+
automaticScreenTracking
화면 자동 추적 활성화 여부
true
2.39.0+
automaticAppLifecycleTracking
앱 시작 / 종료 자동 추적 활성화 여부
true
2.64.0+
sessionPolicy
세션 유지 조건과 만료 조건을 설정합니다.
ALWAYS_NEW_SESSION ,
1800000
2.65.0+
optOutTracking
옵트아웃 활성화 여부.
false
2.65.0+
evaluationMode
평가 방식을 설정합니다.
LOCAL
4.0.0+
sessionTimeoutMillis
(deprecated)
세션만료 시간을 설정합니다. sessionPolicy를 사용해 주세요.
1800000 (30분)
2.13.0+
평가 방식 설정
평가를 SDK에서 직접 수행할지, 핵클 서버가 미리 수행한 결과를 조회할지 선택할 수 있습니다.
설정하지 않으면 기본값인 EvaluationMode.LOCAL(로컬 평가)로 동작합니다.
원격 평가를 사용하면 기기 내부에 사용자 정보를 저장하지 않습니다. 기존에 로컬 평가를 사용하며 저장된 사용자 정보가 있는 경우 삭제 처리합니다.
두 방식의 차이와 선택 기준은 평가 방식 문서를 참고 바랍니다.
세션 정책 설정
세션 정책을 설정하여 세션의 유지 조건과 만료 조건을 제어할 수 있습니다.
인스턴스 가져오기
초기화 이후 아래 코드를 통해 HackleApp 인스턴스를 가져올 수 있습니다.
대시보드 설정 정보 갱신
초기화 이후 대시 보드 설정 정보 갱신이 필요한 경우 명시적으로 갱신 할 수 있습니다.
해당 함수는 60초에 한번 제한적으로 호출할 수 있습니다.
마지막 업데이트