用户行为的深度追踪——事件与埋点

一、什么是事件?

不同于传统的页面路径跳转追踪,事件尝试追踪用户在网站或APP上发生的每一个动作(包括浏览页面)

  • 什么是事件
    • 追踪或记录的用户行为或业务过程(注册账号,登录,观看视频,点赞,评论,关注等等)
    • 事件三要素
      • 操作(action):定义一个操作动作(如点击、拖拽)
      • 参数/属性:参数可以是任何和这个事件相关的属性,包括触发这个事件的(人、时间、地点、设备、操作的业务信息)
        • 举例:
          • 对于一个“购买”类型的事件,则可能需要记录的字段有:商品名称、商品类型、购买数量、购买金额、 付款方式等;
          • 对于一个“搜索”类型的事件,则可能需要记录的字段有:搜索关键词、搜索类型等
          • 对于一个“点击”类型的事件,则可能需要记录的字段有:点击 URL、点击 title、点击位置等
          • 对于一个“用户注册”类型的事件,则可能需要记录的字段有:注册渠道、注册邀请码等
          • 对于一个“用户投诉”类型的事件,则可能需要记录的字段有:投诉内容、投诉对象、投诉渠道、投诉方式等
          • 对于一个“申请退货”类型的事件,则可能需要记录的字段有:退货金额、退货原因、退货方式等。
      • 属性值:参数/属性的值参
        • 举例: 参数和值以kv形式存储在json串中

          {"age": 13, "gender": "male", "photo filetype": "png"}
          

二、埋点

目前的埋点方式:
按埋点工具:代码埋点、可视化埋点、‘无埋点’
按埋点位置:前段/客户单埋点、后端/服务端埋点

1. 代码埋点(客户端)

  • 原理

    • 要统计某页面一个Button点击事件次数。首先在APP或者界面初始化的时候,初始化埋点SDK,然后在这个Button事件发生时就调用SDK里面相应的方法,发送接口发送数据
    • App端为了避免浪费用户的流量,一般情况下,都是将多条数据打包,并且等待网络状况良好以及应用处于前台时才压缩上传
  • 优点

    • 控制精准: 可以非常精确地选择什么时候发送数据
    • 自定义:随意自定义属性、自定义事件
  • 不足

    • 人力成本高

      埋点地方过多,因为不同的版本验证问题不同不易于管理。每一个控件的埋点都需要添加相应的手工代码,不仅工作量大,而且限定了必须是技术人员才能完成
      + 版本更新的代价大,易造成埋点混乱
      > 每一次更新埋点方案,就意味着必须要修改代码,然后通过各个渠道进行分发,一旦有相当多数量的用户对新版的更新不感冒时,导致埋点代码能够采集到的数据也就得不到更新,前功尽弃,很难在实际日常运营中能够及时依赖实时数据捕获焦点做出应变
      + 数据传输的时效性和可靠性不好保证
      * 客户端埋点的痛病
      + 支持的统计大多是简单计数,无法完成完整的多维分析功能

  • 应用场景和产品举例


2. 可视化埋点(客户端)

  • 原理
    • 参考手游APP的做法,把核心代码和配置、资源分开,在APP启动的时候通过网络更新配置和资源
    • 在虚拟的可视化界面,对支持的控件类型的实例,点击配置事件(event),然后发布,配置通过后端接口直接下发给APP,所有安装有嵌入SDK的APP都会在启动时或者定时获取相应的配置。以后,真实的用户使用时,点击这个按钮,就会发送事件到后端
    • 实现细节:
      1. 在嵌入了SDK的APP开启可视化埋点模式,与后端联通时,SDK会应后端的要求,定期(例如每秒)做一次截图,而SDK在为App截图的同时,会从keyWindow对象开始进行遍历它的subviews(),得到当前视图下所有 UIView、UIResponder对象的层级关系。对于屏幕上的任何一个UIView对象,如 Button、Textfield等它都有一条唯一的从keyWindow到它的路径,这个路径上每个节点,都由ClassName、它是父节点的第几个subview、.text()等属性的值等标识。相对于父节点的坐标、长宽高等可视化方面的信息,是作为这个节点的属性存在。
      2. 服务端根据截屏和可视化信息来重新进行页面渲染,并且根据控件的类型,来识别哪些控件是可以增加可埋点的,并且将之标识出来。
      3. 当使用者在后台的截屏画面上点击了某个可埋点的控件时,后台会要求使用者做一些事件关联方面的配置,并且将配置信息进行保存和部署。
      4. SDK 在启动或者例行轮询时拿到这些配置信息,则会通过.addTarget:action:forControlEvents:接口,为每个关联的控件添加的点击或者编辑行为的监听,并且在回掉函数里面调用 Sensors Analytics SDK 的接口发送相应事件的 track 信息。
event.png
  • 优点

    • 可视化埋点很好地解决了代码埋点的埋点代价大和更新代价大两个问题。
      • 新增埋点在所有版本生效,不存在老版本迭代问题(只要老版本app有嵌入sdk)
    • 不懂代码的产品运营人员也可以通过后台可视化界面配置统计埋点并实时下发到客户端生效
  • 不足

    • 可视化埋点能够覆盖的功能有限的,目前并不是所有的控件操作都可以通过这种方案进行定制
    • 不能自定义设置事件属性
      • 例如对于评论“提交”事件,并不能将评论的内容作为事件的属性进行上传
      • 在上传事件时,就只能上传SDK自动收集的设备、地域、网络等默认属性,以及一些通过代码设置的全局公共属性了
    • 数据传输的时效性和可靠性不好保证
      • 客户端埋点的痛病
  • 应用场景和产品

    • 场景:
      • 替代代码埋点,支持产品、运营等非技术人员管理埋点
      • 活动/新功能快速上线迭代时的效果评估,可利用可视化埋点快速完成
    • 第三方产品: 诸葛io MixPanel 神策数据

3. 无埋点(全埋点)(客户端)

Heap Analytics 作为最早提出这种方案提供商,早在2013年就已经推出了“无埋点”这个技术方案。后续的用户行为分析的大佬Mixpanel也在去年中期推出同样的服务,诸葛IO也借鉴了两者,在国内最早正式推出了三大平台的无埋点分析方案,同时,国内也还有TalkingData的灵动分析和Growing IO提供了无埋点分析解决方案

  • 原理

    • 在App中嵌入SDK,做统一的“全埋点”,将APP的操作尽量多的采集下来,然后通过界面配置的方式对关键行为进行定义,这样便完成了所谓的“无埋点”数据采集
      1. 事先在产品上埋一个 SDK
      2. 通过可视化的方式,生成配置信息,也就是事件名称之类的定义
      3. 将采集的数据按照配置重命名,进而就能做分析了
  • 优点

    • 解决了数据“回溯”的问题
      • 例如,在某一天,突然想增加某个控件的点击的分析,如果是可视化埋点方案,则只能从这一时刻向后收集数据,而如果是“无埋点”,则从部署 SDK 的时候数据就一直都在收集了
    • “无埋点”方案也可以自动获取很多启发性的信息,例如,“无埋点”可以告诉使用者这个界面上每个控件分别被点击的概率是多大,哪些控件值得做更进一步的分析等等
  • 缺点

    • 与可视化埋点一样,“无埋点”依然没有解决覆盖的操作有限问题,不能灵活地自定义属性
    • 数据传输的时效性和可靠性不好保证
      • 客户端埋点的痛病
    • 由于所有的控件事件都全部搜集,可能会给服务器和网络传输带来更大的负载
  • 与可视化埋点的区别

    • 可视化埋点先通过界面配置哪些控件的操作数据需要收集
    • “无埋点”则是先尽可能收集所有的控件的操作数据,然后再通过界面配置哪些数据需要在系统里面进行分析
  • 应用场景和产品


4. Google Measurement Protocol

上述的三种埋点都是在客户端埋点,都需要客户端嵌入sdk
为避免浪费用户流量,都需要定时或定量的批量打包发送数据

  • 原理

    • 在需要埋点/追踪事件的地方(客户端或服务端),以规定的格式/规范/协议,把相关的事件属性信息以及相关字段通过HTTP请求发送到指定的接收服务器
  • 优点

    • 实时发送数据,不存在数据延时
    • 将线上和线下行为联系在一起
    • 可同时从客户端和服务器发送数据
  • 缺点

    • 需要手动在代码中埋点
    • 考虑到用户流量消耗问题,不可能把所有的用户事件都埋点
    • 新的埋点需要发新版

5. 几种埋点的典型使用场景对比

  • 举例:以电商APP的订单结算页面为例,当用户点击去结算按钮

    • 可视化埋点与无埋点只能采集到用户在某时某刻点击了去结算
    • 客户端单代码埋点能采集到去结算订单的金额,商品名称、用户等级等客户端可以获取的信息
    • 服务端代码埋点可以采集到商品库存、成本等其他关联的信息
  • 总结:

    • 可视化埋点使用和部署比较简单,但数据获取能力有限
    • 客户端代码埋点埋点复杂,能拿到在客户端保存的信息
    • 服务端代码埋点能获取到事件以外的关联属性,但部署会影响线上业务代码逻辑和架构,对于这种外围信息,建议离线做join完成
埋点方式 数据时效 数据可靠(安全) 数据可回溯 埋点成本 对业务的影响 用户流量开销 新埋点是否对所有客户端版本生效
传统代码埋点 X X X X X X X
可视化埋点 X X X X
无埋点 X X X
Measurement Protocol X X X X
    数据可回溯是指当上新的事件埋点统计后,支持对历史数据(埋点之前的日期)的统计,且不用回滚数据

6. 我们的选择

A、可视化埋点/无埋点:
产品或技术对 活动/新功能快速上线迭代时的效果评估,可利用可视化埋点快速完成
具体采用哪种方案还要考虑客户端代码改动成本

B、参考Measurement Protocol数据采集和发送规范,根据业务定制化埋点

三、参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,237评论 25 707
  • 在这篇文章里面,我们会对数据采集的一些基本概念进行阐述,然后,会针对目前市面上新增的一些前端埋点技术,如可视化埋点...
    言射手阅读 6,572评论 1 52
  • 0 引言 最近在负责公司的HubbleData的埋点SDK的开发任务,产品的雏形其实在几年前就已经有了,公司内部的...
    鲁冰阅读 9,911评论 9 61
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,973评论 4 60
  • 老师是太阳底下最光辉的职业。在小孩子的心中,老师是他们行为准则的标杆。 当然,大多数老师是好的。如果你曾遇见一个不...
    高淇阅读 316评论 0 0