WebView2 モニタリング¶
Windows RUM SDK は、WPF、WinForms、WinUI 3 の Microsoft Edge WebView2 コントロールと連携し、ページ内の View、Action、Resource、Error をホストの Windows Session および View に関連付けることができます。
WebView2 データモニタリング¶
前提条件¶
- アプリケーションで Windows SDK の導入 が完了していること。
- プロジェクトに Microsoft Edge WebView2 がインストールされ、正常に初期化できること。
- 対象コントロールが
CoreWebView2およびEnsureCoreWebView2Async()を公開していること。
自動検出¶
EnableWebView はデフォルトで true です。デスクトップの自動収集を有効にすると、SDK はサポートされているコントロールツリー内で WebView2 を検出します。
GuanceSdk.EnableAutomaticInstrumentation(new AutomaticInstrumentationOptions
{
EnableWebView = true
});
動的に作成される、ライフサイクルが独立している、または連携タイミングを明示的に制御したい WebView2 については、明示的に関連付けることを推奨します。
明示的関連付け¶
拡張メソッドを使用することもできます。
同じコントロールを重複して関連付けても、再度注入されることはありません。コントロールが不要になったら、明示的に切り離すことができます。
コントロールが Disposed または Unloaded をトリガーした場合、SDK は自動的に関連付けをクリーンアップします。
収集内容¶
| データタイプ | 収集内容 |
|---|---|
| View | 初期ナビゲーション、完全ナビゲーション、History API のルート変更、ページタイトルと最終 URL |
| Action | ページのクリックおよびサポートされているユーザーインタラクション |
| Resource | fetch、XMLHttpRequest、Performance Resource エントリ |
| Error | JavaScript Error および未処理の Promise rejection |
SDK は関連付けられた各コントロールに独立したブリッジトークンを注入し、ホスト側で app_id、Session、View、SDK ID などの予約フィールドを上書きします。ページスクリプトはブリッジメッセージを介してホストの関連フィールドを変更することはできません。
ホスト View との関係¶
WebView2 のページデータはホストの Windows Session を引き継ぎ、現在のホスト View に関連付けられます。ページナビゲーションによりページ View データが生成されますが、独立した Windows SDK クライアントは作成されません。
1 つのウィンドウに複数の WebView2 が含まれている場合は、各コントロールをそれぞれ関連付け、コントロールのライフサイクルを安定させてください。
Log と Trace の境界¶
- Windows ホストは
GuanceSdk.AddLog()を使用して Log を書き込み、現在のホストの RUM コンテキストに従って関連付けを完了できます。 - WebView2 ブリッジは、現在のところページの
console出力を自動的に Windows Log に変換しません。 - Windows の
HttpClientTrace 設定は、ホストが発行するリクエストにのみ適用され、レンダラー内のfetchやXMLHttpRequestにヘッダーを注入することはありません。 - ページ側で独立した Log または Trace 機能が必要な場合は、ページが使用する Browser SDK の設定を使用し、同じ Resource の重複収集を避けてください。
プライバシーの境界¶
- URL クエリパラメータには、ホスト Resource と同じマスキング設定が適用されます。
- ページメッセージ内の URL フィールドは、RUM キューに入る前に再度処理されます。
- 認証ヘッダー、Cookie、Token などのパラメータはデフォルトでマスキングされます。
- パスワード、Token、ファイルの絶対パス、ユーザー入力の原文をページのカスタムフィールドで渡さないでください。
詳細な設定についてはプライバシーと権限の説明を参照してください。
実験的 Session Replay¶
Windows Session Replay はデフォルトで無効ですが、ホストの GuanceConfig.SessionReplay.Enabled = true 設定後、WebView2 で明示的に有効にして検証できます。SDK は Android WebView 互換の FTWebViewJavascriptBridge を注入します。ネイティブ設定で Replay が許可されている場合、getCapabilities() は records を返し、ページの Browser collector が生成する rrweb record はホストによって Windows Session および WebView View に関連付けられ、ネイティブの Replay キューを通じてアップロードされます。
ページは Browser RUM をロードし、window.DATAFLUX_RUM が利用可能になった後に最小限の初期化を実行する必要があります。まず init() を呼び出し、次に Session Replay を開始します。
window.DATAFLUX_RUM &&
window.DATAFLUX_RUM.init({
// Bridge モードでも受信アドレスは検証されますが、RUM データは
// FTWebViewJavascriptBridge を介して送信されるため、このアドレスにはリクエストしません。
datakitOrigin: "http://127.0.0.1",
});
window.DATAFLUX_RUM &&
window.DATAFLUX_RUM.startSessionReplayRecording();
ここでの datakitOrigin は Browser RUM 初期化の検証にのみ使用されます。固定値 http://127.0.0.1 を Bridge 検証プレースホルダーとして使用し、ローカルページで無効な Origin が発生するのを防ぎます。実際のアプリケーション ID、レポートアドレス、Session、サンプリング、プライバシーポリシーはすべてホストの Windows SDK によって提供されるため、ページ内で再設定しないでください。
Replay のサンプリングとプライバシーポリシーはホストの設定によって決定され、ページが上書きすることはできません。この機能は依然として実験的であり、安定した互換性の保証には含まれません。導入と検証の方法については、RUM 設定 および Electron ネイティブ Bridge を参照してください。
制限事項¶
- WebView2 レンダラー内の Long Task は、現在のブリッジ収集範囲外です。ホストの UI スレッドのブロックは Windows SDK によって収集されます。
- クロスオリジン iframe は、ブラウザの同一オリジンポリシーとスクリプト注入の境界により制限されます。
- WebView2 Session Replay は実験的な機能です。クロスオリジンフレーム、Canvas、カスタムレンダリングコンテンツ、プレーヤーの互換性は、ターゲットアプリケーションで個別に検証する必要があります。
よくあるトラブルシューティングの開始点¶
確認¶
- コントロールを関連付け、ページナビゲーションを 1 回完了します。
- ページ内のボタンをクリックします。
fetchまたはXMLHttpRequestを 1 回発行します。- 制御可能な JavaScript Error をトリガーします。
- コンソールで、ページ View、Action、Resource、Error がホスト Session に関連付けられていることを確認します。
初期化が失敗した場合は、GuanceSdk.AddDiagnosticListener() を使用して、WebView2 initialization failed、did not succeed、またはコントロールタイプの不一致などの診断を確認してください。