基础功能

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包括:

  1. setMetaInfo: 覆盖SDK的已有默认设置

  2. appendMetaInfo: 追加SDK的默认配置

  3. getMetaInfo:获取 SDK 的当前配置

  4. record:用于发送事件日志

  5. 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, //开启调试模式
  	...
	}
};

输出日志示例:image

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条,则会在退出小程序时自动上报。

image

注意:

  1. 微信小程序要求“短时间内发起太多请求会触发小程序并行请求数据量的限制,同时太多请求也可能导致加载慢等问题,应合理控制请求数量,甚至做请求的合并”,因此建议使用上述的「日志聚合上报」。

  2. 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配置,则统一配置的优先级更高。下面截图示来源于微信小程序官方文档,其他平台小程序请各自参考各平台官方文档说明。

image

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设置必须成对出现,否则会影响日志上报

枚举类型, 可用值及说明如下:

  • "START":  开启日志发送

  • "BLOCK": 阻止日志发送,可以在 BLOCK状态之前,完善发送日志前的准备工作 

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,支持以数组类型来赋值,示例:

'aplus-preset-events-disabled': [
 '$$_share', //预制分享事件
 '$$_reach_bottom', //预制触底事件
 '$$_perf_warning', //预制网络性能事件
 '$$_user_profile', //用户属性上报事件
 ]

v2.0.8开始