实践
开发平台:钉钉小程序
自动埋点原理:改写App,Page。
对于元素埋点就是每个页面都添加了一个方法,结合html父元素catchTap去捕捉下面子元素的冒泡事件,实现点击元素埋点。
还有一种埋点是函数埋点,原理就是在你需要埋点的函数里添加进埋点事件。
元素埋点伪代码:
// home.axml
<view catchTap="point"> //这里的point就是父元素上的监听冒泡函数
<button onTap="buy">购买</button>
</view>
//home.js
const newPage = Page
Page=(page)=>{
// 给page对象注册监听方法
page.catchChildre = function() {console.log('这是父元素捕捉到事件')}
return newPage(Page)
}
page({
buy(){
console.log('购买')
}
})
函数埋点实现伪代码:假如你有一个buy函数,需要监听。你需要先保存好当前的page,然后重写page方法。
const newPage = Page;
// 重写Page方法
Page = (page) => {
// 给onShow方法插入埋点
const method = page['buy'];
page['buy'] = function() {
updateLogger() // 上传埋点数据
return method();
}
return newPage(page);
};
最终这些操作,我们通过一张控指表来控制需要埋点的页面。原理也很简单,获取到当前页面的route,在对比我们传入的地址的url,如果是一样的那就执行操作,如果不是那就不执行。
上传日志的时实性:
- 普通日志累计10条上传
- 错误日志第一时间上传
埋点后的数据展示
只有埋点信息是完全不够的,你无法直观的看到用户他在使用小程序的流程和为什么报错了。 这时候可视化的报错界面是非常有用的。
参考文章: