사용자 화면 추적
Hackle SDK는 Activity 단위로 화면 정보를 수집합니다.
SAA(Single Activity Architecture) 구조의 앱이거나 Compose UI 를 사용하는 경우 자동으로 화면 정보를 수집하기 어렵습니다.
$page_view 및 $engagement 이벤트를 정상적으로 수집하려면, 화면이 변경될 때마다 setCurrentScreen 메소드를 직접 호출해야 합니다.
setCurrentScreen
setCurrentScreen(screen) 메소드로 화면을 추적합니다.
- 화면 추적의 최소 단위 시간은 1초 입니다.
- 1초 이내에 변경된 페이지의
$engagement는 측정되지 않습니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| name | string | 필수 | 현재 화면의 명입니다. |
| className | string | 필수 | 별도의 클래스 명을 남기지 않을 경우 name과 동일한 값을 기입하면 됩니다. |
동일 화면에 대한 화면 추적은 할 수 없습니다.
이전 화면과 동일한(name과 className이 모두 동일한) Screen으로
setCurrentScreen을 호출한 경우 화면 전환이 되지 않은 것으로 인식되어 아무런 동직을 하지 않습니다.
$page_view,$engagement가 호출되지 않습니다.
예시
Compose UI를 사용하는 경우 ON_RESUME 이벤트가 발생할 때 화면 추적을 하는 것을 추천합니다.
val hackleApp = Hackle.app
val screen = Screen.builder("screenName", "className")
.build()
Hackle.app.setCurrentScreen(screen)HackleApp hackleApp = HackleApp.getInstance();
Screen screen = Screen.builder("screenName", "className")
.build();
hackleApp.setCurrentScreen(screen);@Composable
fun TrackScreen(screenName: String, className: String) {
val lifecycleOwner = LocalLifecycleOwner.current
DisposableEffect(lifecycleOwner, screenName, className) {
val observer = LifecycleEventObserver { _, event ->
// 뷰가 나타날 때 & 백그라운드 -> 포그라운드 전환될 때 화면 추적
if (event == Lifecycle.Event.ON_RESUME) {
val screen = Screen.builder(screenName, className).build()
hackleApp.setCurrentScreen(screen)
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
}
@Composable
fun MainScreen() {
TrackScreen("Main", "MainScreen")
}속성 (Property)
핵클 SDK는 이벤트(Event) 객체에 속성을 추가할 수 있도록 지원합니다.
- 이벤트 객체에 추가 가능한 속성 개수는 최대 64개입니다.
구분 | 타입 | 제약사항 |
|---|---|---|
속성 명(key) |
|
|
속성 값(value) |
|
|
예시
val hackleApp = Hackle.app
val screen = Screen.builder("screenName", "className")
.property("key", "value")
.build()
Hackle.app.setCurrentScreen(screen)HackleApp hackleApp = HackleApp.getInstance();
Screen screen = Screen.builder("screenName", "className")
.property("key", "value")
.build();
hackleApp.setCurrentScreen(screen);automaticScreenTracking 비활성화
SDK에서는 기본적으로 automaticScreenTracking이 활성화되어 있습니다.
Activity 단위의 자동 화면 정보 수집을 원하지 않는 경우 automaticScreenTracking를 비활성화 해야 합니다.
SDK를 초기화 할 때 automaticScreenTracking을 설정할 수 있습니다.
automaticScreenTracking이 활성화 된 상태에서setCurrentScreen를 통해 수동으로 화면 수집을 하는 경우,$page_view와$engagement가 과수집 되거나 의도하지 않은 속성으로 수집될 수 있습니다.수동으로 화면 정보를 수집하는 경우
automaticScreenTracking비활성화를 추천합니다.
Example
import io.hackle.android.Hackle
import io.hackle.android.HackleConfig
import io.hackle.android.initialize
val config = HackleConfig.builder()
.automaticScreenTracking(false)
.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()
.automaticScreenTracking(false)
.build();
HackleApp.initializeApp(getApplicationContext(), YOUR_APP_SDK_KEY, config, () -> {
// SDK ready to use.
});Updated 3 days ago
