在互联网产品上线以后,产品和运营人员须要即时了解产品的使用状况,有多少用户,用户使用了哪些功能,停留时长,使用路径。。。等。要回答这些问题,须要有数据,不能拍脑壳想固然。数据怎么获得呢?埋点就是采集数据的重要途径。html
数据埋点不是新名词,在电脑网站出来以后就有统计工具,站长们很熟悉的谷歌、百度统计等工具,经过在HTML页面中嵌入它们提供的js代码实现数据采集。前端
多说几句,不管谷歌、百度仍是其它的Web页面统计工具,技术实现原理一般都是由Web服务器端经过代码的方式向浏览器返回一张 1*1 像素的透明图片(在网页上人眼看不到这张图片),图片的过时时间设置成当即过时,这样每次打开页面浏览器都会去请求这张图片,服务器端就能够记录下请求数据。明白了原理,本身也能够写一个简单的统计工具。git
在设计埋点方案以前须要肯定收集哪些数据,将这些需求汇总,产品、运营、技术一块儿肯定埋点方案。github
从埋点位置划分,能够分为:前端埋点,后端埋点。小程序
前端埋点后端
顾名思义就是在用户可见的那端(APP、网页、PC客户端、小程序)嵌入数据采集代码,像一些第三方的统计工具,好比友盟等,前端嵌入它们的SDK,调用SDK提供的接口采集数据。浏览器
前端埋点能收集到用户在界面上的操做轨迹,这些数据后端无法收集,好比用户点击了哪一个按钮,打开了哪些页面,页面之间的跳转次序等。服务器
后端埋点网络
后端埋点就是在服务端嵌入代码,收集数据,因为是在服务端采集数据,能够避免前端埋点的如下一些问题:工具
客户端采集数据,为了尽可能减小对用户体验的影响,须要对采集的数据压缩、暂存,为减小移动端的数据流量,通常只在网络情况良好的状况下向服务器发送数据,所以数据会有延迟,丢数据等弊端。而在服务端采集数据,数据在内网传输,数据传输的即时性强,丢失数据的风险小。
客户端采集数据,若是要增长采集点或变动采集方案,须要修改客户端代码,这就须要发布新版本,受发布周期的影响,并且一般不少用户并不会及时更新版本,将致使新方案不能覆盖全部用户。在服务端采集数据则没有这些问题。
经过以上比较,实施时尽可能采用后端埋点,除非后端无法采集到所须要的数据。
前端埋点技术
目前常见的前端埋点技术,有下面三类:
一、代码埋点
谷歌统计、百度统计、友盟等都是代码埋点的例子。在前端代码里嵌入数据采集代码,好比在APP启动时嵌入,在按钮点击事件里嵌入等。
代码埋点的优势是控制精准,采集的数据项精确。缺点:首先是须要开发人员处处添加采集代码,添加和修改的工做量大;其次变动采集策略,须要发布新版本,代价巨大;此外对于APP来讲还有耗电、消耗数据流量、丢失数据的风险。
二、可视化埋点
从上面可知,代码埋点的缺点不少,最大的缺点是变动须要开发人员修改代码,不灵活。为了改善,有的公司开发出了可视化埋点技术,产品与运营人员经过GUI界面,鼠标点击的方式随时调整埋点位置,增长、取消埋点,不再须要开发人员的介入,并且不用发布新版本。
最先提供这种方案的是 Mixpanel 公司,Github上有该公司发布的SDK代码,https://github.com/mixpanel。国内提供可视化埋点技术的公司大都是在它的基础上进行二次开发而成。
技术实现原理
基本原理就是将埋点位置信息作成可配置的资源,经过在后台管理端上操做生成这些配置,客户端启动或者定时从服务器端获取这些配置,客户端根据最新的配置采集数据,发送给服务端。
具体实现是SDK定时作界面截图,在截图的同时从界面UI的根对象开始遍历全部的可视化子对象,获得其层级关系。根据截图和UI元素的可视化信息从新渲染页面,识别可埋点的控件。当产品人员在后台管理端的截屏画面上点击可埋点控件,设置事件关联方面的配置,服务器保存这些配置,客户端在获取到这些配置信息之后,按照新配置采集数据。
三、无埋点
原理跟可视化埋点几乎同样,惟一的不一样就是,无埋点是先把全部控件的操做数据采集下来,发给服务器,数据分析人员在后台管理端设置对哪些数据进行分析。由此可知,这个方案收集的数据量巨大,增长了网络传输和服务器存储负担。
无埋点比可视化方案优点的地方是收集的历史数据齐全,能够回溯分析过往数据。
工具选择
国内很多数据服务公司提供了数据采集、分析工具,初创公司能够选择使用它们的服务,不过最好选择能够独立部署的提供方,方便控制,防止数据泄漏。
总结一下,数据埋点须要根据需求而定,灵活使用以上方案,扬长避短。
数据埋点产品上线以后最重要的事情就是获取用户和运营推广,有关这个话题,参看《互联网产品发掘种子用户和意见领袖的方法》。