埋点延伸思考(无侵入埋点)

2023-10-24  本文已影响0人  铁头娃_e245
  1. 代码埋点
    由开发人员在触发事件的具体方法里,植入多行代码把需要上传的参数上报至服务端。
  2. 可视化埋点
    根据标识来识别每一个事件, 针对指定的事件进行取参埋点。而事件的标识与参数信息都写在配置表中,通过动态下发配置表来实现埋点统计。
  3. 无埋点
    无埋点并不是不需要埋点,更准确的说应该是“全埋”, 任意一个事件都被绑定一个标识,所有的事件都别记录下来。 通过定期上传记录文件,配合文件解析,解析出来我们想要的数据, 并生成可视化报告供专业人员分析 , 因此实现“无埋点”统计。

如何实现无侵入的自动化埋点?

哪几种情景需要埋点

UIControl, UITablview(collectionView与tableView基本相同), UITapGesture,BarButtonItem, UIViewController的PV统计。

UIControl支持的点击类型

各类点击事件的拦截
页面事件的拦截
滑动事件 & UIWebView加载事件

View_Path

viewPath 是最关键的一项信息,能够唯一标识当前 view。

收集控件数据时,需要将界面上的任何一个View与其他View区分开来。这就需要为界面上的每一个控件分配一个唯一的ViewID。此ViewID除了具有区分性,还需要具有一致性,即同一个View无论界面布局如何动态变化,或者说多次进入同一页面,此ViewID理论上保持不变。

唯一标识问题

唯一标识的组成方式主要是由 target + action 来确定, 即任何一个事件都存在一个target与action。 在此引入AOP编程,AOP(Aspect-Oriented-Programming)即面向切面编程的思想,基于 Runtime 的 Method Swizzling能力,来 hook 相应的方法,从而在hook方法中进行统一的埋点处理。例如所有的按钮被点击时,都会触发UIApplication的sendAction方法,我们hook这个方法,即可拦截所有按钮的点击事件。

问题举例

参考:

网易HubbleData无埋点SDK在iOS端的设计与实现

上一篇下一篇

猜你喜欢

热点阅读