SDK の初期化が完了していないなど、特定のケースではデータレポートが失敗することがあります。このトピックでは、Application Real-Time Monitoring Service (ARMS) フロントエンド監視の SDK を使用してデータを事前にレポートする方法について説明します。
データレポートの失敗が発生するシナリオ
データレポートの失敗は、以下のシナリオで発生する可能性があります。
- ページの読み込み中に一部のデータをレポートする必要があるが、SDK の初期化が完了していないか、初期化結果を確認できない。
- アプリケーションの初期化ロジックで setConfig メソッドが呼び出されます。ただし、SDK は非同期で読み込まれるため、読み込みが完了していない可能性があります。
解決策
SDK は、pipe 属性を __bl オブジェクトに追加し、事前に呼び出された情報を __bl.pipe 変数にキャッシュします。次のコードは例を示しています。
__bl.pipe = [
// 現在のHTMLページをAPIリクエストとして報告します。
['api', '/index.html', true, performance.now, 'SUCCESS'], // これは __bl.api(api, success, time, code, msg) と同等です。
// SDKの初期化後、シングルページアプリケーション(SPA)の自動解決を有効にします。
['setConfig', {enableSPA: true}]
]; 単一のデータレコードをレポートするには、次のコマンドを実行します。
__bl.pipe = ['msg', 'I'm another generic message']; 配列の0番目はメソッド名で、その後に入力パラメーターが続きます。SDK の初期化が完了すると、SDK は window.__bl.pipe にアタッチされているメソッドとパラメーターを1つずつ呼び出します。
説明 SDK の初期化が完了する前に、
__bl.pipe パラメーターの値が複数回設定された場合、最後に設定された値が有効になります。SDK の初期化が完了したかどうかが不明で、判断ロジックをあまり追加したくない場合は、SDK の初期化後に pipe メソッドを呼び出すことができます。これは、Internet Explorer 9 以降でサポートされています。
たとえば、SPA で autoSend: false を指定した後、アプリケーションの初期化後にページビュー(PV)データが初めてレポートされます。ただし、初期化が完了したかどうかは判断できません。
// ページの名前をホームページに設定し、PVデータを報告します。
__bl.pipe = ['setPage', 'homepage'];