无侵入埋点

type
status
date
slug
summary
tags
category
icon
password
常见的埋点方式包括代码埋点,可视化埋点和无埋点(全埋点)。
  • 代码埋点就是手写代码埋点,优点是精确,方便记录需要的值,缺点是工作量大,难以维护。
  • 可视化埋点,将埋点增加和修改工作可视化,提升埋点体验。
  • 无埋点,实际上是指的全埋点,埋点代码不会出现在业务代码中。缺点是成本高,解析复杂,优点是节省开发成本和维护成本。
这篇文章主要是分析无埋点如何实现。

运行时方法替换进行埋点

常用的埋点统计的是页面进度次数,页面停留时间,点击事件,通过运行时进行方法替换来插入埋点代码。
页面进入次数,页面停留时间都需要对ViewController的生命周期进行埋点,我们可以创建一个分类,在分类中处理相关方法替换的逻辑
对于点击事件来说,同样可以通过方法替换的方式无侵入埋点,最主要的是找到点击事件的方法sendAction:to:forEvent:。实现如下:
除了UIViewController和UIButton,UITableview可以使用hook setDelegate方法实现无侵入埋点,Gesture可以使用hook initWithTarget:action:方法来埋点。
无侵入埋点也是业界一大难题,目前还只是初级阶段,还有很长的路要走。运行时替换方法的方式也只是一种尝试,但是现实中业务代码太过复杂。同时,为了使无侵入的埋点能够覆盖得更全、准确度更高,代价往往是对埋点所需的标识维护成本不断增大。
notion image
  • 📕 小红书/即刻:@轻舟
  • ☕ 如果我的内容有帮助到你,可以请我喝杯咖啡,这将鼓励我为你创造更多有价值的内容。
Buy Me A Coffee
  • Giscus

© 轻舟 2017-2024