사용자 화면 추적
사용자 화면 추적은 Flutter SDK 2.21.0
이상에서 사용하실 수 있습니다.
Flutter에서의 화면 이동은 아래 Flutter 개발자 문서를 참고해주세요.
Flutter는 기본적으로 단일 Activity/ViewController 구조를 사용하므로, 자동으로 화면 정보를 수집하기 어렵습니다.
$page_view
및 $engagement
이벤트를 정상적으로 수집하려면, 화면이 변경될 때마다 setCurrentScreen
메소드를 직접 호출해야 합니다.
setCurrentScreen
setCurrentScreen(screen)
메소드에 인자로 화면 명과 화면의 클래스 명을 인자로 받아 화면 추적합니다.
- 화면 추적의 최소 단위 시간은 1초입니다.
- 1초 이내에 변경된 페이지의
$engament
는 측정되지 않습니다.
예시
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;
}
HackleApp.setCurrentScreen(Screen(name: name, className: name));
}
}
Screen
현재 화면 정보를 담은 객체입니다.
name과 className은 nullable 하지 않기 때문에 익명 라우팅을 하는 경우 화면 추적을 할 수 없습니다.
name
현재 화면의 명입니다.
className
현재 화면의 클래스 명입니다.
별도의 클래스 명을 남기지 않을 경우 name과 동일한 값을 기입하면 됩니다.
(optional) automaticScreenTracking 비활성화
SDK에서는 기본적으로 automaticScreenTracking
이 활성화되어 있습니다.
automaticScreenTracking
옵션을 통해서는 Android/iOS의 Activity 및 ViewController의 이동이 추적됩니다.
Flutter에서 MainActivity 및 ViewController의 추적을 원하지 않는 경우 automaticScreenTracking
를 비활성화 해야 합니다.
SDK를 초기화 할 때 automaticScreenTracking
을 설정할 수 있습니다.
예시
await HackleApp.initialize("YOUR_API_KEY",
hackleConfig: HackleConfigBuilder()
.automaticScreenTracking(false)
.build());
Updated about 5 hours ago