不管是做增长,还是做产品。数据已经是必不可少的了。没有准确的、全面的用户身份和行为数据作为输入,在后续分析中得到准确洞察的可能性就会非常不确定,营销闭环也会缺少过程数据依据,精细化运营更难以开展。
本文从客户端角度出发,谈谈如何实现一套好用的客户端框架。
客户端埋点框架组成
一套成熟的客户端打点框架由下面3部分组成。
- 采集点位
- 存储点位
- 发送点位
客户端打点的流程:收集用户行为数据->存储数据->发送数据。先存储数据的原因是为了防止网络失败遗失点位。存储点位和发送点位跟app 中使用的存储框架和网络框架保持一致最好。接下来主要讲下采集点位部分。
采集点位方案
采集点位的方案可以总结为三种,手动埋点、可视化埋点、无埋点。下面主要介绍下3种采集点位的方案。(目前我们App 主要使用的是手动埋点,从无埋点转到手动埋点)
手动埋点
最容易理解的一套埋点框架,在需要采集点位的地方调用相应的代码。比如在按钮点击、页面曝光的时候。
无埋点
无埋点是指集成采集 SDK 后,SDK 便直接开始捕捉和监测用户在应用里的所有行为,并全部上报,不需要开发人员添加额外代码。实现也比较简单,Android 的实现hook 页面的LayoutInflater
然后通过View$AccessibilityDelegate
监控每一个控件。页面曝光则监控Activity#onResume
。
可视化埋点
可视化埋点是指开发同学集成采集 SDK 后,不再需要额外操作。后续由业务同学去下发需要收集的点位。采集方式跟无埋点类似,但是可以过滤冗余点位。
最后可以总结为:
__ | 准确性 | 开发成本 | 维护成本 | 灵活性(打点覆盖面、冗余打点) |
---|---|---|---|---|
手动埋点 | 中(需要测试阶段保证数据准确性) | 中 | 高(需要跟版本迭代打点) | 高 |
无埋点 | 高 | 中 | 低 | 中(可能存在大量冗余数据) |
可视化埋点 | 高 | 高 | 低 | 中(打点功能受限,比如分享成功打点) |
采集事件类型
- 曝光:
- 操作事件:点击、长按、移动等
- 触发事件:关注成功、收藏成功、接口请求失败等
采集数据
- device/mobile
- event
- 业务数据
参考
代码埋点、可视化埋点、无埋点三者之间的区别
网易HubbleData无埋点SDK在iOS端的设计与实现
网易HubbleData之Android无埋点实践
MixPanel -Android端埋点技术研究
MixPanel代码阅读笔记-初探
神策可视化埋点源码
神策可视化埋点实现细节
snowplow-android-tracker:收集方案。
LazierTracker:通过Android字节码插桩插件实现Android端无埋点(或自动埋点),并且支持根据配置文件实现业务数据的自动采集。
mixpanel-android:开源可视化方案
客户端埋点?这可能是全网最实用的深度解析
完整埋点方案设计的四要素