经历过埋点的从无到有, 从简化繁, 从对用户在页面上的点击事件获取, 到用户的使用习惯的统计, 慢慢的对埋点也有了一定的了解, 在此说一下我对埋点的心得.
--== 数据埋点的意义 ==--
首先我们要知道我们出于什么目的埋下这些点, 从而确定点要埋在哪里, 我们埋点的作用包括:
1. 用户对业务控件点击, 跳转页面的统计, 用户对事件的取消, 反复断层的获取. (在此我们可以得到用户的点击路径, 这只是初级成面的运用, 数据量足够的话, 可以就此分析出用户的习惯, 用户的喜好, 与应用的不足.)
2. 了解产品的日常运营数据, 通过版本的迭代, 数据反应的异常, 可以帮助产品经理, 抓住产品的缺陷, 和用户对下一个版本的需求.
3. 广告数据的统计, 方便后续和广告结算的依据.
--== 埋点的方式 ==--
普遍的埋点都有两种形式, 一种是自己配合自己的后台进行对数据的统计, 一种是基于第三方平台, 进行数据的统计.
- 原生方案
优点:可塑性强, 可以根据自己的需求进行埋点的埋放.
缺点:如果有埋点的缺失, 则想获得的埋点数据将会延至下一个版本, 开发人员不需要太多, 但是耗时这点是必不可少, 数据若比较繁琐, 埋点架构不够完善, 可能会使不熟练的开发人员造成隐秘的bug. - 第三方方案(如果平台较小,对于数据要求没有很高,可以采用该方案)
优点:开发成本低,只要按照SDK中规定的方式上报即可. 获取的数据量庞大, 可以在从中找到自己想要的细节.
缺点:模板化,虽然可控性不高, 但是统计数量庞大, 但是数据都是在别人的服务器上.
--== 数据埋点实施 ==--
由于没有使用过第三方的埋点工具, 所以在这里我就主要以平时原生的埋点案例为例.
- 埋点框架
1)每条记录都是以用户为维度,可以查看单个用户的行为记录, 记录到每次点击或者重点页面的停留时长。 - 埋点方式
1)埋点事件以及其属性的英文名称------>很重要,包括英文字母大小写,否则会出现后台中Android和iOS分别对应两个事件名称,极其不方便维护
2)该事件属性的值
a)值的数据统一,例如定义充值按钮点击来源为下载页面,不要出现Android和iOS的名称不一致
b)列表定义一致,不要出现Android列表第一条数据值为0,iOS列表第一条数据值为1 c)异常情况考虑,例如没有传递该值,不要出现一端传空值,一端传null的情况
3)该事件的触发时机 例如充值按钮点击,是在充值完成上报还是点击时即上报,是否需要登录状态上报,如果没有网络时点击是否上报等,否则会出现双端逻辑不一致,导致后期数据没有太大的意义
4)埋点数据可以打包分段提交服务器, 因为埋点的数据量比较大如果每个操作都触发的话会使得数据请求的很频繁, 可以做好计时器, 定时上传, 在清除本地的缓存.
5) 埋点的路径一定要详细,同一个页面,进入的方式不一样,埋点的名称也同样不一样,这是为了方便分析用户的使用习惯,从而更好的迎合客户习惯
--== 埋点的命名方式 ==--
埋点命名一般是以路径为名, 如“我的”页面就可以定义为”mine”,如果是”我的”下级页面的设置页面就可以追加命名”mine_setting”,下级页面以此类推, 这样可以很明了的看清页面进入的路径,也同样方便开发人员控制埋点命名.
注意:埋点一定要区分线上环境和测试环境的数据,否则脏数据过多,对于数据分析的结论有很大的影响
结合上文所述, 在对比咱们自己的项目, 其中部分app的埋点功能就会有点片面, 鸡肋了, 其中只传了页面名称, 对于访问这个页面的路径目前没有, 对于用户的点击事件目前也没有涉及, 同样也没有全面的数据分析体质. 毕竟项目的埋点才刚刚开始, 还是要慢慢去完善优化的.