데이터 수집 커스텀 규칙¶
View¶
자동 수집¶
방법 1: routes를 통한 수집¶
MaterialApp.navigatorObservers에 FTRouteObserver를 추가하고, MaterialApp.routes에 이동할 페이지를 설정합니다. routes의 key가 페이지 이름(view_name)이 됩니다.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
routes: <String, WidgetBuilder>{
'logging': (BuildContext context) => Logging(),
'rum': (BuildContext context) => RUM(),
'tracing_custom': (BuildContext context) => CustomTracing(),
'tracing_auto': (BuildContext context) => AutoTracing(),
},
);
}
}
Navigator.pushNamed(context, "logging");
방법 2: FTMaterialPageRoute를 통한 수집¶
MaterialApp.navigatorObservers에 FTRouteObserver를 추가하고, 커스텀 FTMaterialPageRoute를 통해 위젯의 runtimeType에서 페이지 이름을 추출합니다. 이때 widget 클래스명이 페이지 이름(view_name)이 됩니다.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
);
}
}
Navigator.of(context).push(
FTMaterialPageRoute(builder: (context) => new NoRouteNamePage()),
);
예제는 다음을 참조하세요 여기.
방법 3: RouteSettings.name을 통한 수집¶
Route 타입 페이지에서 RouteSettings.name을 커스텀 설정하면, FTRouteObserver가 해당 값을 우선적으로 가져옵니다. 이 방법은 showDialog(), showTimePicker() 등 Dialog 타입 페이지에도 동일하게 적용됩니다.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeRoute(),
navigatorObservers: [
FTRouteObserver(),
],
);
}
}
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => new NoRouteNamePage(),
settings: RouteSettings(name: "RouteSettingName"),
),
);
위 세 가지 방법은 하나의 프로젝트에서 혼용하여 사용할 수 있습니다.
절전 및 깨우기 이벤트 수집¶
0.5.1-pre.1 미만 버전에서 애플리케이션의 절전 및 깨우기 동작을 수집해야 하는 경우 다음 코드를 추가해야 합니다.
class _HomeState extends State<HomeRoute> {
@override
void initState() {
FTLifeRecycleHandler().initObserver();
}
@override
void dispose() {
FTLifeRecycleHandler().removeObserver();
}
}
자동 수집 필터링¶
0.5.0-pre.1 이상 버전에서만 지원됩니다.
FTRouteObserver¶
MaterialApp(
navigatorObservers: [
FTRouteObserver(routeFilter: (Route? route, Route? previousRoute) {
if (filterConfig) {
return true;
}
return false;
}),
],
)
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| routeFilter | RouteFilter | 아니요 | 페이지 메서드 콜백으로, 현재 진입한 route와 이전 route를 기준으로 판단합니다. true를 반환하면 조건에 맞는 데이터를 필터링합니다. |
FTDialogRouteFilterObserver¶
DialogRoute 타입 페이지(예: showDialog(), showTimePicker() 등)를 필터링합니다.
MaterialApp(
navigatorObservers: [
FTDialogRouteFilterObserver(filterOnlyNoSettingName: true),
],
)
showAboutDialog(
context: context,
routeSettings: RouteSettings(name: "About"),
);
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| filterOnlyNoSettingName | bool | 아니요 | RouteSettings.name이 null인 Route 페이지만 필터링합니다. |
Resource¶
자동 수집 필터링¶
FTRUMManager().setConfig(...)의 isInTakeUrl 콜백을 통해 수집이 필요하지 않은 Resource 데이터를 필터링할 수 있습니다.