数据采集自定义规则¶
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():触发操作的 ArkUIFrameNode;可用于按组件 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。