美文网首页
小程序从手动埋点到自动埋点

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

作者: cinoliu | 来源:发表于2020-08-07 09:49 被阅读0次

一、前言

小程序由于封闭性较强,要像web应用一样实现灵活的数据收集,会有一定难度。目前开源的埋点SDK,一般采用手动埋点的方式,这种方式有较强的侵入型,为了解决这个问题就有了该文章。

1、小程序监听用户点击行为

web应用监听用户点击行为是比较容易,但是小程序没有提供Dom的事件监听,不过我们可以通过事件冒泡的方式捕获。

// web监听页面点击

document.addEventListener('click',(e) => {console.log(e)})

// 小程序监听页面点击,用户的点击行为都会执行elementTracker方法

<view catchtap='elementTracker'>

  <view class='buy-now'>

    <button bindtap='buy' >立即购买</button>

  </view>

</view>

2、判断点击位置是否落在监听元素中

假设需要监听用户是否点击class为buy-now元素,可以通过获取buy-now元素长宽,定位和点击位置坐标判断是否出现重叠,以判断是否被点击。

/**

* 判断点击是否落在目标元素

* @param {Object} clickInfo 用户点击坐标

* @param {Object} boundingClientRect 目标元素信息

* @param {Object} scrollOffset 页面位置信息

* @returns {Boolean}

*/

export const isClickTrackArea = function (clickInfo, boundingClientRect, scrollOffset) {

    if (!boundingClientRect) return false;

    const { x, y } = clickInfo.detail; // 点击的x y坐标

    const { left, right, top, height } = boundingClientRect;

    const { scrollTop } = scrollOffset;

    if (left < x && x < right && scrollTop + top < y && y < scrollTop + top + height) {                return true;

    }    return false;

};

3、通过配置表声明埋点

为了解决代码入侵问题,可以将所有埋点信息统一管理,通过配置表的方式,除了方便管理,以后还可以做到动态配置,在服务端配置完毕下发到客户端。

const tracks = {

  path: 'pages/detail/detail',

  elementTracks: [

    {

      element: '.buy-now',  // 声明需要监听的元素

      dataKeys: ['film.filmId'], // 声明需要获取Data下的哪些数据

    },

  ]

};

4、对页面函数埋点

有些场景我们除了对页面元素点击埋点,还要对页面函数进行埋点,例如用户下拉刷新的时候,可以对原方法进行包装,插入埋点代码。

rewritePage() {

    const originPage = Page;

    Page = (page) => {

      Object.keys(page).forEach((methodName) => {

      // 执行埋点逻辑

        typeof page[methodName] === 'function' && this.recordPageFn(page, methodName);

      });

      // 执行原Page对象

      return originPage(page);

    };

  }


源码地址:https://github.com/cinoliu/eventTracking

日记本

相关文章

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

    一、前言 小程序由于封闭性较强,要像web应用一样实现灵活的数据收集,会有一定难度。目前开源的埋点SDK,一般采用...

  • 关于项目中埋点的总结和思路

    项目中的埋点怎么做的? 埋点:就是需要统计页面打开或者控件点击次数的方式。借助友盟等平台。分手动埋点、自动埋点两种...

  • 埋点进化论:从埋点到无埋点

    埋点的诞生 在最初的互联网世界中,并没有埋点的概念。大家并不关心流量从哪里来,用户在网站上做了什么事,一切都是野蛮...

  • 小程序埋点

    小程序埋点分为代码埋点+无代码埋点,二者的主要区别在于埋点的时机,不管哪一种都需要首先知道每个页面的逻辑与布局小程...

  • 小程序:埋点

    2022-04-18 周一 微信小程序自定义分析官方文档[https://developers.weixin.qq...

  • IOS实现无埋点技术

    技术方案实现的背景: 因为在开发项目的时候,埋点都是手动埋的,每次业务需求的改变都要到处埋点,这就免不了会遗漏埋点...

  • Android全埋点-页面浏览事件

    全埋点 全埋点也叫无埋点,自动埋点。是指预先自动收集用户的所有行为数据。然后就可以根据收集的数据从中筛选出所需的行...

  • 小程序formid埋点

    微信小程序 无限formId 无限发送模板消息 保存formId 修改原生button样式:(去除边框) 绝对定位...

  • iOS | 小收获:自动埋点

    用户行为统计,俗称埋点,是一个成熟项目中必不可少的环节。埋点的常规做法是在项目中所有需要埋点的地方插入埋点,但随着...

  • [iOS] iOS的埋点

    iOS自动化埋点探索

网友评论

      本文标题:小程序从手动埋点到自动埋点

      本文链接:https://www.haomeiwen.com/subject/vdaxdktx.html