跳转至

数据采集自定义规则

View

自动 View 采集规则要求 ft-sdk 0.1.17 及以上版本,并需要开启 FTRUMConfig.setEnableTraceUserView(true)。

使用 setViewTrackingHandler(handler, type) 配置 Router、Navigation 或两者的自动 View 处理器。type 可取 FTViewTrackingType.ROUTER、NAVIGATION、ALL;省略时默认为 ALL。处理器接收源类型对应的 FTViewTrackingContext:Router 场景可读取 routerPageInfo,Navigation 场景可读取 navigationInfo。返回 null 会跳过该自动 View;返回 HandlerView 可重命名并添加属性。

import {
  FTRUMConfig,
  FTViewTrackingContext,
  FTViewTrackingHandler,
  FTViewTrackingType,
  HandlerView
} from '@guancecloud/ft_sdk/Index';

const viewHandler: FTViewTrackingHandler = {
  resolveHandlerView: (context: FTViewTrackingContext): HandlerView | null => {
    // 不采集登录页的自动 View。
    if (context.viewName === 'LoginPage') {
      return null;
    }

    // Router 场景可使用 ArkUI 路由信息进行过滤或重命名。
    if (context.trackingType === FTViewTrackingType.ROUTER &&
      context.routerPageInfo.path.startsWith('pages/internal/')) {
      return new HandlerView('InternalPage', { page_scope: new String('internal') });
    }

    return new HandlerView(context.viewName);
  }
};

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserView(true)
  .setViewTrackingHandler(viewHandler, FTViewTrackingType.ALL);
注意

resolveHandlerView 的入参为 FTViewTrackingContext,而不是单独的 View 名称字符串。请在升级后按 trackingType 区分 routerPageInfo 与 navigationInfo,避免访问不属于当前来源的字段。该处理器仅影响自动 View,不影响 FTRUMGlobalManager.startView(...) 等手动 View 采集。

Action

自动 Action 采集规则要求 ft-sdk 0.1.16 及以上版本,并需要开启 FTRUMConfig.setEnableTraceUserAction(true)。

通过 setActionTrackingHandler(...) 设置处理器。返回 null 时,SDK 不采集该 Action;返回 undefined 时,SDK 按默认自动采集流程上报 Action 名称、属性、位置和 View 关联信息。

import {
  ActionEventWrapper,
  FTActionTrackingHandler,
  FTRUMConfig
} from '@guancecloud/ft_sdk/Index';

const actionHandler: FTActionTrackingHandler = {
  resolveHandlerAction: (event: ActionEventWrapper): null | undefined => {
    const source = event.getSource();

    // 忽略指定组件触发的 Action。
    if (source?.getId() === 'ignore_action_view') {
      return null;
    }

    // 其他操作继续使用 SDK 的默认自动采集逻辑。
    return undefined;
  }
};

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserAction(true)
  .setActionTrackingHandler(actionHandler);
注意

返回 null 的 Action 会被跳过;返回 undefined 时,SDK 继续默认自动采集。该处理器仅影响自动 Click 采集,不影响手动调用 FTRUMGlobalManager.addAction(...) 或 startAction(...)。

ActionEventWrapper 提供以下信息:

  • getSource():触发操作的 ArkUI FrameNode;可用于按组件 ID、类型或自定义属性过滤。
  • getSourceType():操作来源类型。当前 HarmonyOS 自动采集链路传入 ActionSourceType.CLICK_VIEW。
  • getExtra():附加信息;当前自动 Click 采集未传入附加信息,返回 null。

Resource

自动 Resource 过滤要求 ft-sdk 0.1.17 及以上版本,并需要开启 FTRUMConfig.setEnableTraceUserResource(true)。通过 setResourceUrlHandler(...) 设置处理器后,isInTakeUrl(url) 返回 true 会跳过该 URL 的自动 Resource 采集,返回 false 则继续采集。

import {
  FTInTakeUrlHandler,
  FTRUMConfig
} from '@guancecloud/ft_sdk/Index';

class ResourceUrlHandler extends FTInTakeUrlHandler {
  isInTakeUrl(url: string): boolean {
    return url.startsWith('https://telemetry.example.com/');
  }
}

const rumConfig = new FTRUMConfig()
  .setEnableTraceUserResource(true)
  .setResourceUrlHandler(new ResourceUrlHandler());

该规则仅作用于 RCP、Axios 和 NetworkKit 的自动 Resource 采集;不会阻止 Trace Header 注入,也不会过滤通过 FTRUMGlobalManager 手动上报的 Resource。

文档评价

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