概述
我们做的是什么事情?
- 动态化自动埋点设计
- 配置化远程可视化埋点方案设计
为什么做无痕埋点?
- 现有埋点方案占有大量开发资源
- 现有埋点方案修改或者新增埋点需要重新发版
- 现有埋点方案测试复杂,容易错误或者遗漏埋点
做好无痕无痕埋点可以解决什么问题?
- 简化研发埋点工作量
- 实现可视化埋点
- 实现不发版本,修改新增埋点
流程图
事件汇总
事件埋点,在软件开发中属于横切逻辑。需要通过面向切面的思维方式,将所有的埋点事件进行汇总,统一进行处理。从而避免了在业务逻辑中混入很多业务无关了逻辑。另外将埋点逻辑,作为一个关注点分离出来,进行统一的开发、测试和维护。
事件唯一标识
1、视图树相对位置定位
通过视图树相对位置定位事件触发控件,上图中Button被点击后获得的视图树相对位置表示为:
RL-LL-FL-BT(简写控件名字,并且用-连接)
2、控件ID
如果有控件ID,可以通过ID来定位具体触发事件的控件,如果没有的话可以结合其他信息来唯一定位。
3、控件信息
控件上的文案信息来帮助辅助定位
4、父控件同层子控件整合文案信息
当开启按钮被点击,会遍历它的父控件,来生成辅助定位信息。上图生成的信息为:
设置-头像-跳转-开启-姓名-城市(按子试图顺序读取文案,并用-连接)
5、上下文信息
获取当前所在容器页面的信息,默认情况使用当前Activity的全类名,可以通过设计视图树根节点tag,来更细的区分上下文。上下文信息可由具体业务负责人进行扩展和维护,建议的方法是尽可能多的配置关键信息,以便后期配置新增埋点使用。
public class MainActivityPointInfo {
@PointInfo(key = "src")
public String getSrc() {
return "";
}
@PointInfo(key = "id")
public String getId() {
return "";
}
}