콘텐츠로 이동

데이터 수집 커스텀 규칙

View

자동 수집

방법 1: routes를 통한 수집

MaterialApp.navigatorObserversFTRouteObserver를 추가하고, MaterialApp.routes에 이동할 페이지를 설정합니다. routeskey가 페이지 이름(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.navigatorObserversFTRouteObserver를 추가하고, 커스텀 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.namenull인 Route 페이지만 필터링합니다.

Resource

자동 수집 필터링

FTRUMManager().setConfig(...)isInTakeUrl 콜백을 통해 수집이 필요하지 않은 Resource 데이터를 필터링할 수 있습니다.

await FTRUMManager().setConfig(
  androidAppId: appAndroidId,
  iOSAppId: appIOSId,
  isInTakeUrl: (url) {
    return url.startsWith("https://url.rule");
  },
);

문서 평가

이 페이지가 도움이 되었나요?