사용자 화면 추적
Flutter에서의 화면 이동은 아래 Flutter 개발자 문서를 참고해주세요.
Flutter는 기본적으로 단일 Activity/ViewController 구조를 사용하므로, 자동으로 화면 정보를 수집하기 어렵습니다.
$page_view 및 $engagement 이벤트를 정상적으로 수집하려면, 화면이 변경될 때마다 setCurrentScreen 메소드를 직접 호출해야 합니다.
setCurrentScreen
setCurrentScreen(screen) 메소드로 화면을 추적합니다.
- 화면 추적의 최소 단위 시간은 1초 입니다.
- 1초 이내에 변경된 페이지의
$engagement는 측정되지 않습니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| name | string | 필수 | 현재 화면의 명입니다. |
| className | string | 필수 | 별도의 클래스 명을 남기지 않을 경우 name과 동일한 값을 기입하면 됩니다. |
동일 화면에 대한 화면 추적은 할 수 없습니다.
이전 화면과 동일한(name과 className이 모두 동일한) Screen으로
setCurrentScreen을 호출한 경우 화면 전환이 되지 않은 것으로 인식되어 아무런 동직을 하지 않습니다.
$page_view,$engagement가 호출되지 않습니다.
예시
NavigatorObserver의 didPush, didPop과 같은 라우트 변경 감지 메소드 안에서 setCurrentScreen을 호출하는 방식을 권장합니다.
import "package:hackle/hackle.dart";
class HackleRouteObserver extends NavigatorObserver {
final NavigationService _navigationService = NavigationService();
@override
void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {
super.didPush(route, previousRoute);
_setCurrentScreen(route);
}
@override
void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {
super.didPop(route, previousRoute);
if (previousRoute != null) {
_setCurrentScreen(previousRoute);
}
}
@override
void didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}) {
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
if (newRoute != null) {
_setCurrentScreen(newRoute);
}
}
void _setCurrentScreen(Route route) {
var name = route.settings.name;
if (name == null || name.isEmpty) {
return;
}
var screen = Screen.builder(name: name, className: name).build();
HackleApp.setCurrentScreen(screen);
}
}속성 (Property)
핵클 SDK는 이벤트(Event) 객체에 속성을 추가할 수 있도록 지원합니다.
- 이벤트 객체에 추가 가능한 속성 개수는 최대 64개입니다.
구분 | 타입 | 제약사항 |
|---|---|---|
속성 명(key) |
|
|
속성 값(value) |
|
|
예시
var screen = Screen.builder(name: name, className: name)
.property("key", "value")
.build();
HackleApp.setCurrentScreen(screen);automaticScreenTracking 비활성화
SDK에서는 기본적으로 automaticScreenTracking이 활성화되어 있습니다.
MainActivity 및 ViewController의 추적을 원하지 않는 경우 automaticScreenTracking를 비활성화 해야 합니다.
SDK를 초기화 할 때 automaticScreenTracking을 설정할 수 있습니다.
automaticScreenTracking이 활성화 된 상태에서setCurrentScreen를 통해 수동으로 화면 수집을 하는 경우,$page_view와$engagement가 과수집 되거나 의도하지 않은 속성으로 수집될 수 있습니다.수동으로 화면 정보를 수집하는 경우
automaticScreenTracking비활성화를 추천합니다.
예시
await HackleApp.initialize("YOUR_API_KEY",
hackleConfig: HackleConfigBuilder()
.automaticScreenTracking(false)
.build());Updated 3 days ago
