1 SDK原理概述
1.1 原理
SDK提供兩種API調用方式
通過aplus環境變量直接調用API的方式
向SDK的指令隊列aplus_queue發送API指令的方式
注:兩種方式任選其一,可以混用
1.1.1 通過aplus環境變量直接調用API
API直接調用的方式代碼書寫上更為簡潔,格式如下:
const { aplus } = 小程序平臺環境變量 //如微信wx、支付寶my、字節tt、百度 swan等
aplus.${APIName}($arguments) //arguments 為指定 API 的入參
其中APIName包括:
setMetaInfo: 覆蓋SDK的已有默認設置
appendMetaInfo: 追加SDK的默認配置
getMetaInfo:獲取 SDK 的當前配置
record:用于發送事件日志
sendPV:用于發送頁面日志
arguments為每個API調用的入參
1.1.2 向指令隊列aplus_queue發送API指令
向SDK發送API指令的方式,您通過向SDK的指令隊列 aplus_queue發送指令,由SDK來執行指令,進而完成您的需求,指令格式如下:
const { aplus_queue } = 小程序平臺環境變量 //如微信wx、支付寶my、字節tt、百度 swan等
aplus_queue.push({
'action': "$APIName",
'arguments': [$arguments] //arguments 為指定 API 的入參
})
action 參數代表發送指令的 API 名稱,其入參為一個字符串,取值為枚舉值,可用的枚舉值如下
aplus.setMetaInfo:覆蓋SDK的已有默認設置
aplus.appendMetaInfo: 追加SDK的默認配置
aplus.getMetaInfo:獲取 SDK 的當前配置
aplus.record:用于發送事件日志
aplus.sendPV:用于發送頁面日志
arguments 參數為 action 中指定 API 的入參,格式是一個數組,數組內的元素順序與 API 定義的入參順序一致
1.2 示例
1.2.1 通過aplus環境變量直接調用API示例
const { aplus } = 小程序平臺環境變量 //如微信wx、支付寶my、字節tt、百度 swan等
//覆蓋 SDK 的默認設置
aplus.setMetaInfo(metaName, metaValue);
//追加 SDK 的默認設置,僅針對metaValue是數組Array或者對象Object的類型有效
aplus.appendMetaInfo(metaName, metaValue)
//獲取 SDK 的當前配置
aplus.getMetaInfo(metaName);
//用于發送事件日志
aplus.record(trackerEventCode, eventType, eventParams);
//用于發送頁面日志
aplus.sendPV(pageEventConfig, userData);
1.2.2 向指令隊列aplus_queue發送API指令調用示例
const { aplus_queue, aplus } = 小程序平臺環境變量 //如微信wx、支付寶my、字節tt、百度 swan等
//覆蓋 SDK 的默認設置
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: [metaName, metaValue]
});
//追加 SDK 的默認設置,僅針對metaValue是數組Array或者對象Object的類型有效
aplus_queue.push({
action: 'aplus.appendMetaInfo',
arguments: [metaName, metaValue]
});
//獲取 SDK 的當前配置
aplus.getMetaInfo(metaName);
//用于發送事件日志
aplus_queue.push({
action: 'aplus.record',
arguments: [trackerEventCode, eventType, eventParams]
});
//用于發送頁面日志
aplus_queue.push({
action: 'aplus.sendPV',
arguments: [pageEventConfig, userData]
});
2 日志打印
const aplusConfig = {
metaInfo: {
...
'DEBUG': true, //開啟調試模式
...
}
};
輸出日志示例:
3 日志發送策略
QuickTracking 小程序 SDK默認事件上報策略為:
正常請求日志非聚合上報
請求日志間隔1s秒發送
默認最多占用1個小程序網絡請求通道
默認請求超時時間是3s,默認請求超時時間的設置優先級低于某些平臺小程序在app.json中統一設置networkTimeout的設置(示例鏈接為微信小程序)
3.1 開啟日志聚合上報(可選)
某些場景下希望SDK的請求上報可以聚合上報,可以通過增加SDK的配置項max-queue-count完成聚合上報功能,示例:
const aplusConfig = {
metaInfo: {
...
//可選,控制聚合日志條數,默認不聚合,建議最多配置1~5之間的數字
'max-queue-count': 1,
...
}
};
如下圖所示:若設置為max-queue-count = 5,則會在收集到5條日志時,才會向服務端上報請求;
若未滿5條,則會在退出小程序時自動上報。
注意:
微信小程序要求“短時間內發起太多請求會觸發小程序并行請求數據量的限制,同時太多請求也可能導致加載慢等問題,應合理控制請求數量,甚至做請求的合并”,因此建議使用上述的「日志聚合上報」。
max-queue-count值不建議配置過大,聚合上報的條數越大,單次請求日志占用的帶寬越大,存在網絡丟數風險
3.2 修改SDK網絡請求占用通道數量(可選)
某些小程序平臺(如微信小程序等)要求在短時間內如果發起太多網絡請求,會造成頁面性能受影響,建議合理控制請求數量,甚至做到請求合并(參考3.1 SDK功能描述), QuickTracking小程序默認的網絡請求通道最多占用1個,如需修改示例如下:
const aplusConfig = {
metaInfo: {
...
//可選,最多同時占用的請求通道數量,默認是1,支持配置1~5之間的數字
'aplus-mini-requests-limit': 1,
...
}
};
3.3 修改SDK默認請求超時時間(可選)
各個小程序平臺默認的網絡請求超時時間各不相同,某些平臺如微信、抖音、支付寶、釘釘,支持自定義請求超時時間,通過修改SDK的配置項aplus-request-timeout可以自定義sdk請求的超時時間,默認是3000ms,配置示例如下:
const aplusConfig = {
metaInfo: {
...
//可選,設置默認請求超時時間,單位是ms
'aplus-request-timeout': 3000,
...
}
};
注:各平臺小程序也支持在app.json中統一設置networkTimeout,如果開發者在app.json應用了networkTimeout配置,則統一配置的優先級更高。下面截圖示來源于微信小程序官方文檔,其他平臺小程序請各自參考各平臺官方文檔說明。
4 應用基礎信息配置
在SDK引入部分,可以修改或者追加一些默認設置
const aplusConfig = {
metaInfo: {
'appKey': '', //QuickTracking 創建應用時填寫的Appkey, 必填
'trackDomain': '', //采集日志上報域名,必填
'_user_id': 'testUserId', //按需上報, 小程序自身的登錄賬號id,如需要計算分析用戶賬號緯度的數據
'autoGetOpenid': true, //自動獲取openid設置 (推薦!目前僅支持微信小程序 )
'DEBUG': true, //打開調試日志
// '_hold': 'BLOCK', // 如果是異步場景,需先阻塞日志上報,待openid等設置成功后,再上報
'appVersion': ''//可選,您當前小程序的版本,默認為devtools
}
};
import { initQTSDK } from './utils/qt_mini.umd.js';
initQTSDK(aplusConfig);
MetaName | 元配置說明 | metaValue賦值說明 | 支持版本 |
DEBUG | 開啟后,控制臺將輸出SDK 埋點日志 | true為打開日志,false為關閉日志 | all |
appVersion | 設置當前小程序的版本 | 請填寫當前小程序的版本 | all |
appKey | 平臺系統中創建應用時填寫的Appkey | 需要在平臺中獲取埋點小程序對應的appkey | all |
aplus-rhost-v | 采集上報域名(Deprecated) | 在平臺的采集信息中可以獲取 | all |
trackDomain | 采集上報域名 | 在平臺的采集信息中可以獲取 | v2.0.0開始 |
autoGetOpenid | 自動采集openid | 布爾值,默認為false 與代碼獲取openid的方式二選一 | all |
_anony_id | 設置設備唯一標識 | 業務自定義的匿名用戶ID ,針對支付寶取 alipayid, 針對微信取 openid | all |
_dev_id | 微信小程序中設置unionid | 微信小程序中設置unionid | all |
_user_id | 設置userid | 業務自定義的登錄賬號ID | all |
_hold | 發送Hold信號. 在 SDK整個生命周期內, _hold可以設置多次,但BLOCK與START設置必須成對出現,否則會影響日志上報 | 枚舉類型, 可用值及說明如下:
| all |
max-queue-count | 開啟sdk日志聚合 | number值,默認是undefined,支持配置數字1~5 | all |
aplus-request-timeout | 設置sdk默認請求超時時間 | number值,單位是毫秒。默認是3000ms,支持平臺包括微信、抖音、支付寶、釘釘 | v2.0.0開始 |
aplus-mini-requests-limit | 設置sdk最多同時占用的網絡請求通道數 | number值,默認是1,支持數字1~5 | v2.0.8開始 |
aplus-preset-events-disabled | 用于關閉sdk默認采集的預制事件 | 默認是undefined,支持以數組類型來賦值,示例:
| v2.0.8開始 |