一、概念
通过技术手段无差别地记录用户在前端页面上的行为。可以正确的获取 PV、UV、IP、Action、Time 等信息。
缺点:
前期开发统计基础信息的技术产品成本较高、后期数据分析数据量很大、分析成本较高(大量数据传统的关系型数据库压力大)
优点:
开发人员工作量小、数据全面、无遗漏、产品和运营按需分析、支持动态页面的统计分析
二、不侵入业务代码拦截系统事件
以 iOS 为例。我们会想到 AOP(Aspect Oriented Programming)面向切面编程思想。动态地在函数调用前后插入相应的代码,在 Objective-C 中我们可以利用 Runtime 特性,用 Method Swizzling 来 hook 相应的函数
三、埋点手段
业界中对于代码埋点主要有3种主流的方案:代码手动埋点、可视化埋点、无痕埋点。
- 代码手动埋点
根据业务需求(运营、产品、开发多个角度出发)在需要埋点地方手动调用埋点接口,上传埋点数据。 - 可视化埋点
通过可视化配置工具完成采集节点,在前端自动解析配置并上报埋点数据,从而实现可视化“无痕埋点” - 无痕埋点
通过技术手段,完成对用户行为数据无差别的统计上传的工作。后期数据分析处理的时候通过技术手段筛选出合适的数据进行统计分析。
四、代码埋点
- 可视化埋点
根据标识来识别每一个事件, 针对指定的事件进行取参埋点。而事件的标识与参数信息都写在配置表中,通过动态下发配置表来实现埋点统计。 - 无埋点
无埋点并不是不需要埋点,更准确的说应该是“全埋”, 前端的任意一个事件都被绑定一个标识,所有的事件都别记录下来。 通过定期上传记录文件,配合文件解析,解析出来我们想要的数据, 并生成可视化报告供专业人员分析 , 因此实现“无埋点”统计。
五、全量收集
hook AppDelegate 代理方法、UIViewController 生命周期方法、按钮点击事件、手势事件、各种系统控件的点击回调方法、应用状态切换等等。
动作 | 事件 |
---|---|
App 状态的切换 | 给 Appdelegate 添加分类,hook 生命周期 |
UIViewController 生命周期函数 | 给 UIViewController 添加分类,hook 生命周期 |
UIButton 等的点击 | UIButton 添加分类,hook 点击事件 |
UICollectionView、UITableView 等的点击 | 在对应的 Cell 添加分类,hook 点击事件 |
手势事件 UITapGestureRecognizer、UIControl、UIResponder | 相应系统事件 |
网友评论