客户端埋点漫谈

不管是做增长,还是做产品。数据已经是必不可少的了。没有准确的、全面的用户身份和行为数据作为输入,在后续分析中得到准确洞察的可能性就会非常不确定,营销闭环也会缺少过程数据依据,精细化运营更难以开展。
本文从客户端角度出发,谈谈如何实现一套好用的客户端框架。

客户端埋点框架组成

一套成熟的客户端打点框架由下面3部分组成。

  • 采集点位
  • 存储点位
  • 发送点位

客户端打点的流程:收集用户行为数据->存储数据->发送数据。先存储数据的原因是为了防止网络失败遗失点位。存储点位发送点位跟app 中使用的存储框架和网络框架保持一致最好。接下来主要讲下采集点位部分。

采集点位方案

采集点位的方案可以总结为三种,手动埋点、可视化埋点、无埋点。下面主要介绍下3种采集点位的方案。(目前我们App 主要使用的是手动埋点,从无埋点转到手动埋点)

手动埋点

最容易理解的一套埋点框架,在需要采集点位的地方调用相应的代码。比如在按钮点击、页面曝光的时候。

无埋点

无埋点是指集成采集 SDK 后,SDK 便直接开始捕捉和监测用户在应用里的所有行为,并全部上报,不需要开发人员添加额外代码。实现也比较简单,Android 的实现hook 页面的LayoutInflater然后通过View$AccessibilityDelegate监控每一个控件。页面曝光则监控Activity#onResume

可视化埋点

可视化埋点是指开发同学集成采集 SDK 后,不再需要额外操作。后续由业务同学去下发需要收集的点位。采集方式跟无埋点类似,但是可以过滤冗余点位。

mixpanel 原理

最后可以总结为:

__ 准确性 开发成本 维护成本 灵活性(打点覆盖面、冗余打点)
手动埋点 中(需要测试阶段保证数据准确性) 高(需要跟版本迭代打点)
无埋点 中(可能存在大量冗余数据)
可视化埋点 中(打点功能受限,比如分享成功打点)

采集事件类型

  • 曝光:
  • 操作事件:点击、长按、移动等
  • 触发事件:关注成功、收藏成功、接口请求失败等

采集数据

  • device/mobile
  • event
  • 业务数据

参考

代码埋点、可视化埋点、无埋点三者之间的区别
网易HubbleData无埋点SDK在iOS端的设计与实现
网易HubbleData之Android无埋点实践
MixPanel -Android端埋点技术研究
MixPanel代码阅读笔记-初探
神策可视化埋点源码
神策可视化埋点实现细节
snowplow-android-tracker:收集方案。
LazierTracker:通过Android字节码插桩插件实现Android端无埋点(或自动埋点),并且支持根据配置文件实现业务数据的自动采集。
mixpanel-android:开源可视化方案
客户端埋点?这可能是全网最实用的深度解析
完整埋点方案设计的四要素