埋点

409 阅读3分钟

手动代码埋点

埋点应上报一些基础数据

  • appid
  • pageUrl
  • 手机系统/浏览器版本
  • appVersion app版本
  • timeStamp 便于排序,因为服务端的时间戳不一定准确
  • index 埋点索引。便于分析是否有埋点上报失败
  • uid 或其他用户信息。用于区分用户
  • oid 一定要上报一个虚拟id,如果以uid为唯一id,当用户未登陆时就不存在uid,因此每个客户端应该初始化一个虚拟id,便于检索一个客户端的所有埋点

此外,埋点要能自定义属性,以上传一些需要的信息,比如接口错误信息等

批量上报

不能每调用一次上报接口就上报一次,要做批量上报。否则会产生过多的请求,带来服务器压力,也会阻塞客户端请求

失败重新上报

如果因为网络等原因上报失败,要把上报失败的信息收集起来,后续重试上报

埋点结构化

埋点应遵从 应用 - 页面 - 模块 - 元素 这四个级别,并最好能有地方根据这几个级别结构化展示埋点,如下

image.png

目的是为了方便查找埋点,否则埋点多起来后,无法确定确定哪些页面哪些元素埋了哪些点

同时埋点流程就应该确保:注册一个埋点后,这个埋点的四个级别是明确的

埋点命名规则

埋点id应根据上述级别和需求来得出 比如home页面的a模块下的b元素上加个曝光埋点,埋点名其实应该是确定的:appName_home_a_b_sw 常用的后缀有:

  • sw(展现)
  • ck(点击)
  • typ(输入)
  • en(进入)
  • ex(退出)
  • bt(后台触发)

缺点

侵入代码,有开发工作量;代码分散,后期维护、结构调整困难;必须发版才能上报;也需要一个埋点维护平台来展现埋点和页面、元素的关系,否则后期埋点量大起来后难以维护

可视化埋点

为前端每个页面、模块、元素绑定唯一标识,之后由运营在运营平台可视化编辑需要上报的点即可

优点

运营实时配置实时生效

缺点

刚开始时为项目里页面、模块、元素绑定标识开发工作量较大;运营平台开发存在开发工作量;初始时不大可能给每个元素绑上标识,后续还是要逐步维护,而新增的标识要生效依然依赖发版;对一些技术性需求无法满足,比如想上报接口错误埋点,可能还是要自己定义,并在代码中上报

SPM

简单来说,给每个应用、页面、模块、元素一个唯一标识,每次跳转页面会在url上带上该页面触发跳转的位置的上述四个级别的标识,然后由服务端自动识别或者前端上报。从而可以知道跳转到某个页面的所有来源信息、某页面的pv/uv、某元素的点击信息

无痕埋点