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开始 |