埋点系统研发个人笔记:
起因:公司之所以对网页、APP、小程序等进行埋点就是为了能够进一步收集用户的行为,从而进行用户画像。
而埋点就是定时、定点地在目标应用/网站上采集数据,将数据以日志的方式上报至服务器的过程。
埋点分为三种:
1、代码埋点:在应用App或界面初始化时,初始化埋点的SDK,在触发某个节点(如事件/页面)时调用SDK相应的方法,通过接口 发送数据
优点: (1)使用者控制精准,可以非常精确地选择什么时候发送数据;
(2)使用者可以比较方便地设置自定义属性、自定义事件,传递比较丰富的数据到服务端。
缺点:(1)埋点代价比较大,每一个控件的埋点都需要添加相应的代码;
(2)其次是更新的代价比较大,每一次更新埋点方案,都必须改代码,然后通过各个应用市场进行分发;
(3)最后,就是所有前端埋点方案都会面临的数据传输时效性和可靠性的问题了。
2、可视化埋点:把核心代码和配置、资源分开,在APP启动的时候通过网络更新配置和资源
优点:很好地解决了代码埋点的埋点代价大和更新代价大两个问题
缺点:(1) 可视化埋点能够覆盖的功能有限,目前并不是所有的控件操作都可以通过这种方案进行定制,在上传事 件时,就只能上传 SDK 自动收集的设备、地域、网络等默认属性,以及一些通过代码设置的全局公共属性了;
(2) 可视化埋点也依然没有解决传输时效性和数据可靠性的问题。
3、无埋点:在App中嵌入SDK,做统一的“全埋点”,将应用App中尽可能多的数据采集下来,通过界面配置的方式对关键行为进行定义,对定义的数据进行分析。
优点:(1)无埋点”相比可视化埋点的优点,解决了数据“回溯”的问题。
(2)无埋点”方案也可以自动获取很多启发性的信息(可以告诉使用者这个界面上每个控件分别被点击的概率是 多大,哪些控件值得做更进一步的分析等)。
缺点:(1)依然没有解决覆盖的功能优先,不能灵活地自定义属性,传输时效性和数据可靠性欠佳这几个缺点。
(2)由于所有的控件事件都全部搜集,反而会给服务器和网络传输带来更大的负载。
持续更新
参考:https://www.sensorsdata.cn/blog/shu-ju-jie-ru-yu-mai-dian/