全部產品
Search
文件中心

Application Real-Time Monitoring Service:資料預上報

更新時間:Jul 06, 2024

在某些情況下,例如SDK尚未完成初始化時,會導致資料上報出現問題。本文介紹如何使用ARMS前端監控SDK實現資料預上報。

會導致資料上報出現問題的情形

以下情形會導致資料上報出現問題:

  • 在頁面剛剛載入時,有一些資料需要上報,但此時SDK可能還未完成初始化,或者不確定是否已完成初始化。
  • 在應用的初始化邏輯中調用setConfig方法,但由於SDK是非同步載入的,此時可能還未載入完成。

解決辦法

SDK在__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', '我是另一個普通的訊息'];          

其中數組的第0個表示方法名,後面依次是入參。SDK初始化完成後,就會依次調用預先掛載到window.__bl.pipe上的方法及參數。

說明 在SDK初始化完成前,如果多次設定__bl.pipe的值,則以最後設定的為準。

如果不能確定SDK是否初始化完成,又不想添加太多判斷邏輯,也可以在SDK初始化完成後調用pipe(支援IE9及以上)。

例如,單頁面應用中,設定autoSend: false後,在應用初始化後上報第一次PV,此時並不確定SDK是否初始化完成。

// 設定頁面name為 'homepage',並且上報PV。
__bl.pipe = ['setPage', 'homepage'];