跳转至

数据采集自定义规则

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.nameFTRouteObserver 会优先获取该值。这个方法同样适用于 Dialog 类型页面,例如 showDialog()showTimePicker() 等。

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 具体情况进行判断,返回 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");
  },
);

文档评价

文档内容是否对您有帮助? ×