小程序埋点方案(长图)

3,868 阅读2分钟


实践

开发平台:钉钉小程序

自动埋点原理:改写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条上传
  • 错误日志第一时间上传

埋点后的数据展示

只有埋点信息是完全不够的,你无法直观的看到用户他在使用小程序的流程和为什么报错了。 这时候可视化的报错界面是非常有用的。

参考文章:

技术探索:60 天急速自研-搭建前端埋点监控系统

微信小程序无埋点数据采集方案

前端埋点统计方案思考

前端-埋点-理念-通识-浅谈

美团点评前端无痕埋点实践

小蝌蚪传记:200行代码实现前端无痕埋点

小程序从手动埋点到自动埋点