사용자 화면 추적
Hackle SDK는 ViewController 단위로 화면 정보를 수집합니다.
ViewController를 1개만 사용하는 구조의 앱이거나 SwiftUI 를 사용하는 경우 자동으로 화면 정보를 수집하기 어렵습니다.
$page_view 및 $engagement 이벤트를 정상적으로 수집하려면, 화면이 변경될 때마다 setCurrentScreen 메소드를 직접 호출해야 합니다.
setCurrentScreen
setCurrentScreen(screen) 메소드에 인자로 화면 명과 화면의 클래스 명을 인자로 받아 화면을 추적합니다.
- 화면 추적의 최소 단위 시간은 1초 입니다.
- 1초 이내에 변경된 페이지의
$engagement는 측정되지 않습니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| name | string | 필수 | 현재 화면의 명입니다. |
| className | string | 필수 | 별도의 클래스 명을 남기지 않을 경우 name과 동일한 값을 기입하면 됩니다. |
동일 화면에 대한 화면 추적은 할 수 없습니다.
이전 화면과 동일한(name과 className이 모두 동일한) Screen으로
setCurrentScreen을 호출한 경우 화면 전환이 되지 않은 것으로 인식되어 아무런 동직을 하지 않습니다.
$page_view,$engagement가 호출되지 않습니다.
예시
Swift UI를 사용하는 경우 onAppear 와 onChange가 발생할 때 모두 화면 추적을 하는 것을 추천합니다.
let screen = Screen.builder(name: "screenName", className: "screenName")
.build()
Hackle.app()?.setCurrentScreen(screen: screen)HackleScreen *screen = [[[HackleScreenBuilder alloc] initWithName:@"screenName"
className:@"screenName"] build];
[[Hackle app] setCurrentScreenWithScreen:screen];struct MainView: View {
@Environment(\.scenePhase) var scenePhase
let screen = Screen.builder(name: "screenName", className: "screenName")
.build()
var body: some View {
VStack {
Text("메인 화면")
}
.onAppear {
// 뷰가 나타날 때 화면 추적
Hackle.app()?.setCurrentScreen(screen: screen)
}
.onChange(of: scenePhase) { oldPhase, newPhase in
// 백그라운드 -> 포그라운드 전환될 때 화면 추적
// 전환될 때 앱의 화면이 변하는 케이스가 없으면 호출하지 않아도 무방합니다.
if newPhase == .active {
Hackle.app()?.setCurrentScreen(screen: screen)
}
}
}
}속성 (Property)
핵클 SDK는 이벤트(Event) 객체에 속성을 추가할 수 있도록 지원합니다.
- 이벤트 객체에 추가 가능한 속성 개수는 최대 64개입니다.
구분 | 타입 | 제약사항 |
|---|---|---|
속성 명(key) |
|
|
속성 값(value) |
|
|
예시
let screen = Screen.builder(name: "screenName", className: "screenName")
.property("key", "value")
.build()
Hackle.app()?.setCurrentScreen(screen: screen)HackleScreen *screen = [[[[HackleScreenBuilder alloc] initWithName:@"screenName"
className:@"screenName"]
property:@"key" value:@"value"]
build];
[[Hackle app] setCurrentScreenWithScreen:screen];automaticScreenTracking 비활성화
SDK에서는 기본적으로 automaticScreenTracking이 활성화되어 있습니다.
ViewController 단위의 자동 화면 정보 수집을 원하지 않는 경우 automaticScreenTracking를 비활성화 해야 합니다.
SDK를 초기화 할 때 automaticScreenTracking을 설정할 수 있습니다.
automaticScreenTracking이 활성화 된 상태에서setCurrentScreen를 통해 수동으로 화면 수집을 하는 경우,$page_view와$engagement가 과수집 되거나 의도하지 않은 속성으로 수집될 수 있습니다.수동으로 화면 정보를 수집하는 경우
automaticScreenTracking비활성화를 추천합니다.
Example
let config = HackleConfigBuilder()
.automaticScreenTracking(false)
.build()
Hackle.initialize(sdkKey: YOUR_APP_SDK_KEY, config: config) {
// SDK ready to use.
}HackleConfigBuilder *builder = [[HackleConfigBuilder alloc] init];
[builder automaticScreenTracking:false];
HackleConfig *config = [builder build];
[Hackle initializeWithSdkKey:@"YOUR_APP_SDK_KEY" config:config completion:^{
// SDK ready to use.
}];Updated 3 days ago
