本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹如何使用ARMS前端監控開始監控其他類別的小程序,即除釘釘小程序、支付寶小程序和微信小程序之外的各類符合標準規范的小程序,以及相關的通用配置、API方法和進階場景。
基礎使用方法
基礎方法包含引入npm包并初始化、上報和設置安全域名這三個步驟:
引入npm包并初始化:
在小程序的項目中引入
@arms/js-sdk
npm包,以便使用該模塊來上報日志。npm install @arms/js-sdk
將以下內容添加至/utils目錄下的monitor.js文件中以完成初始化。
說明您可以自定義JS文件的名稱和存放位置。
import MiniProgramLogger from '@arms/js-sdk/miniapp'; const Monitor = MiniProgramLogger.init({ pid: 'xxx', uid: 'userxxx', // 設置用戶uid,用于統計UV信息。 region: 'cn', // 指定應用部署的地域:中國設為cn,中國以外地域設為sg。默認值為cn。 // 基礎小程序監控需要手動傳入RPC。請按照實際業務寫實現方法,以下示例為釘釘E應用中的調用方式。 sendRequest: (url, resData) => { // 此部分由業務方配置,支持Get/Post上報。 // demo in dingding var method = 'GET'; var data; if (resData) { method = 'POST'; data = JSON.stringify(resData); } dd.httpRequest({ url: url, method: method, data: data, fail: function (error) { //... } }); }, // 手動傳入獲取當前頁面路徑的方法。請按照實際業務寫實現方法,以下示例為釘釘E應用中的調用方式。 getCurrentPage: () => { // 此部分由業務方配置。 if (typeof getCurrentPages !== 'undefined' && typeof getCurrentPages === 'function') { var pages = (getCurrentPages() || []); var pageLength = pages.length; var currPage = pages[pageLength - 1]; return (currPage && currPage.route) || null; } } }); export default Monitor;
說明關于參數的詳細配置,請參見通用SDK配置項。
上報日志:
在app.js中,使用以下兩種方法之一上報日志:
使用Monitor.hookApp(options)方法靜默捕獲Error類日志。其中的options即為App層相應的Object配置。
import Monitor from '/utils/monitor'; App(Monitor.hookApp({ onError(err) { console.log('進入onError:', err); }, onLaunch() { console.log('進入onLaunch'); }, onShow(options) { }, onHide() { } }));
使用Monitor.error(err) 方法手動上報Error類日志。
import Monitor from '/utils/monitor'; App({ onError(err) { Monitor.error(err); console.log('進入onError:', err); }, onLaunch() { console.log('進入onLaunch'); }, onShow(options) { }, onHide() { } });
在page的JS文件中,使用以下兩種方法之一上報日志:
使用Monitor.hookPage(options)方法靜默上報PV、Health數據。
說明此方法不支持靜默上報API請求。
import Monitor from '/utils/monitor'; Page(Monitor.hookPage({ data: {}, onLoad(query) { }, onReady() { // 頁面加載完成。 }, onShow() { }, onLoad(query) { }, onHide() { }, onUnload() { }, onTitleClick() { /** * 統計打點數據,自定義打點。 * @desc */ Monitor.sum('titleClick'); } }));
設置安全域名:
如果region設為
cn
,則將https://arms-retcode.aliyuncs.com
添加到合法域名。如果region設為
sg
,則將https://arms-retcode-sg.aliyuncs.com
添加到合法域名。
API方法
方法 | 參數 | 備注 |
hookApp | {} | 請傳入原有的App參數。可用于在App的生命周期中自動打點。 |
hookPage | {} | 請傳入原有的Page參數。可用于在Page的生命周期中自動打點。 |
setCommonInfo | {[key: string]: string;} | 設置日志基礎字段,可用于灰度發布等場景。 |
setConfig | {[key: string]: string;} | 設置config字段,具體操作,請參見SDK參考。 |
pageShow | {} | Page Show打點,發送PV數據。 |
pageHide | {} | Page Hide打點,發送Health數據。 |
error | String/Object | 錯誤日志打點。 |
api | 請參見前端接口說明 | API類日志上報。 |
sum/avg | String | 自定義求和、求均值日志上報。 |
小程序監控項目如需使用hookApp、hookPage嵌入生命周期打點,必須符合標準小程序關于App和Page的規范,即App層有onError,Page層有onShow、onHide、onUnload。使用方法示例,請參見基礎使用方法。
大部分日志上報API與Web端監控SDK一致,其他API的使用方法如下:
如需發送當前頁面的PV數據,則在Page的onShow方法下調用pageShow() 方法。
說明請勿與hookPage()方法同時使用此方法,否則會造成PV類日志重復上報。
import Monitor from '/util/monitor'; Page({ onShow: function() { Monitor.pageShow(); } })
如需發送當前頁面的Health類數據,統計當前頁面的健康度和頁面停留時間,則在Page的onHide和onUnload方法下調用pageHide()方法。
說明請勿與hookPage()方法同時使用此方法,否則會造成日志重復上報。
import Monitor from '/util/monitor'; Page({ onHide: function() { Monitor.pageHide(); }, onUnload: function() { Monitor.pageHide(); } ... })
進階場景
當基礎使用方法無法滿足需求時,請參見以下進階場景:
設置uid(主要用于統計UV信息)
如果在監控SDK初始化之前,能夠獲得與用戶有關的信息,則可以直接設置uid。
如果在監控SDK初始化之前,無法獲得與用戶有關的信息,則可以在應用onShow前獲取用戶信息,然后通過setCommonInfo({uid: 'xxx'}); 設置uid。
設置小程序相關的公共信息
請使用setCommonInfo方法設置小程序相關的公共信息。ARMS前端監控會對以下字段進行統計分析:
sr:屏幕尺寸
vp:瀏覽器窗口可見區域
dpr:屏幕像素比
ul:文檔語言
dr:文檔Referrer
ct:網絡連接類型(例如WiFi或3G)
警告切勿使用setCommonInfo方法設置過多字段,否則可能超出請求的限制長度,從而導致請求失敗。
通用SDK配置項
ARMS前端監控提供一系列SDK配置項,讓您能夠通過設置參數來滿足額外需求。以下是適用于本文場景的通用配置項。
|
|
|
|
|
pid | String | 項目唯一ID,由ARMS在創建站點時自動生成。 | 是 | 無 |
uid | String | 用戶ID,用于標識訪問用戶,可手動配置,用于根據用戶ID檢索。如果不配置,則由SDK隨機自動生成且每半年更新一次。 | 否 | 由SDK自動生成 |
tag | String | 傳入的標記,每條日志都會攜帶該標記。 | 否 | 無 |
release | String | 應用版本號。建議您配置,便于查看不同版本的上報信息。 | 否 |
|
environment | String | 環境字段,取值為:prod、gray、pre、daily和local,其中:
| 否 |
|
sample | Integer | 日志采樣配置,值為1~100的整數。對性能日志和成功API日志按照 | 否 |
|
behavior | Boolean | 是否為了便于排查錯誤而記錄報錯的用戶行為。 | 否 |
|
ARMS前端監控還提供了更多SDK配置項,可滿足進一步的需求。更多信息,請參見SDK參考。