データ収集カスタムルール¶
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 もフィルタリングされません。