一些常见统计场景
- 统计自定义事件(统计某个特定区域的点击事件)
- 错误上报(上报脚本错误,网络请求错误等)
- 性能数据上报(网络请求用时,小程序启动用时等)
总而言之,可用实现一套针对小程序自己的数据上报系统。
微信原生开发:
-
克隆项目到本地配置好wxa: wxa/src/config.js
-
安装依赖 & build
npm install
npm run build
-
将dist/wxa/ 目录拷贝进实际项目里
-
引入wxa, 初始化。
var wxa = require('./path/wxa/').default
wxa.init()
wxa.start()
wepy 框架使用方法如下: 克隆此仓库到你的本地,将wxa项目文件夹拷贝到小程序的src目录下。
- 配置wxa: wxa/src/config.js
// 注意: 数据统计和错误上报,性能上报这三个接口可以一样可以都不同。
const wxaConfig = {
project: 'myMiniProgram', // 项目名称
trackUrl: 'https://****/batch', // 数据统计接口URL
errorUrl: 'https://****/batch', // 错误上报接口URL
performanceUrl: 'https://****/batch', // 性能上报接口URL
version: '0.1', // 数据统计版本号
prefix: '_wxa_', // 项目内部使用前缀
priority: ['track', 'performance', 'error'],
// 发送请求的优先级,发送时,会按数组定义的顺序依次发送某个事件类型
useStorage: true, // 是否开启storage缓存
debug: false, // 是否开启调试(显示log)
autoTrack: true, // 自动上报 onShow, onHide, 分享等 内置事件
errorReport: false, // 是否开启错误上报
performanceReport: false, // 接口性能上报
maxReportNum: 20, // 当次上报最大条数
intervalTime: 15, // 定时上报的时间间隔,单位 s, 仅当开启了定时上报有效。
networkList: ['wifi', '5g', '4g', '3g', // 允许上报的网络环境(枚举,表示在此数组里的网络环境就允许上报)
opportunity: 'pageHide'
// pageHide、appHide、realTime(实时上报)、timing(定时上报) 上报的时机,四选一
}
- app.wepy 中引入文件。
import wxa from './src/wxa/src/index.js'
wxa.init() // 初始化wxa
- 在获取用户登录后,设置用户信息。(也可以省略次步骤,这样统计的就是匿名信息。)
// 比如,用户登录成功后,后台会返回userId,userName等用户唯一标识,后台据此来区分某个独立的用户。
wxa.setUserInfo({userId: 10001, userName: '***'})
- 开启上传
wx.wxa.start()
- 统计事件
// 比如,我们想要统计某一个按钮的统计事件
wx.wxa.track({
event: 'CLICK', // 事件名称
btnName: 'BUY',
other: '****',
.......
})
// 在内部,我们会组合成一条更具体的数据(包含了事件创建的时间戳,事件发生的页面path, 以及系统信息等。),然后存入log数组中,等到上报时机到了,我们就会统一上报数据。
- 支持配置是否自动拦截 特殊事件,如 appLaunch, appShow, onHide 等APP, Page 事件
- 支持配置是否使用wxStorage缓存统计数据。
- 支持配置数据上报的网络环境
- 支持配置上报的时机(实时,定时,页面onHide时等)
- 微信原生小程序
- wepy1.x
- wepy2.0
- 更多框架支持中....
* wxa.init() // 初始化wxa
* wxa.setUserInfo(info) // 设置用户信息
* wxa.start() // 开启上报数据
* wxa.stop() // 停止上报数据
* wxa.track(data) // 统计事件
* wxa.errorReport(data) // 统计错误事件
* wxa.performanceReport(data) // 统计性能事件
数据统计方法签名:
/**
* desc: track、errorReport、performanceReport函数签名
* @param {Object} data - 要统计的数据对象
* @param {string} data.event - 统计的事件名称 * 必填
* @param {string} data.url - 此条数据发送的 url,可选, 未填写,则使用配置里对应事件指定的url
* @param {string} data.isRealTime - 是否实时上报 ,可选
* @param {*} data.other -统计的其它数据
* @example
* 数据统计:
*
* 统计一条数据(非实时发送):
* wx.wxa.track({ event: 'CLICK', positionId: 'HOME_BUY_BUTTON', id: '545' })
*
*
* 统计一条数据(非实时发送, 并且这条数据使用指定的url发送): wx.wxa.track({ event: 'CLICK', url: '****', positionId: 'HOME_BUY_BUTTON', id: '545', ...other })
*
* 统计一条数据(实时发送):
* wx.wxa.track({ event: 'CLICK', isRealTime: true, positionId: 'HOME_BUY_BUTTON', id: '545', ...other })
*
* 统计一条数据(实时发送,并且这条数据使用指定的url发送): wx.wxa.track({ event: 'CLICK', isRealTime: true, url: '*****', positionId: 'HOME_BUY_BUTTON', id: '545', ...other })
*
*
* 错误统计:
* wx.wxa.errorReport({event: 'pageError', positionId: 'HOME_BUY_BUTTON', id: '545', ...other })
*
*
* 性能统计:
* wx.wxa.performanceReport({event: 'appLoad', ...other })
* 这三个方法的函数签名一样,只是内部用于区分不同的统计事件。
*/