用户行为分析系列(二)- 数据的源头
一切行为皆事件,我们认为用户在网站上发生的一切行为都可以抽象为“事件模型”,这也是所有SDK接口和产品功能设计的核心依据。事件模型的本质就是描述“什么人 - 在什么时间 - 什么地方 - 以何种方式 - 干了什么事情”;
围绕着这个需求,我们看看发生一个用户行为时,我们需要收集那些信息;
1、eventId:事件唯一标识,表示到底做的是哪一个事件;
2、deviceUdid:设备唯一标识,用户匿名状态下,只采集deviceUdid ;
3、userId:用户唯一标识,当用户登录后,需同时采集deviceUdid 和 userId 两个字段,以便将匿名状态下采集的数据通过deviceUdid 这个字段,和登录后采集的数据关联起来
4、appkey:产品唯一标识
4、time:事件发生时间,有了时间,就有了事件发生的先后顺序,就可以做用户路径、留存、粘性、实时流等分析,几乎所有的行为分析都需要时间
5、ip(后端采集):解析成对应的国家、省份、城市之后,就可以按地域查看事件、用户的分布情况;
6、currentUrl、referrer、referringDomain 等于访问域名有关的字段
7、deviceOs、deviceOsVersion 等与用户设备有关的字段
8、其他
SDK采集数据大致流程
什么是SDK?
一般是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。通常一个SDK包含一个或多个API,编程工具和档。我们的js SDK 就是一个单独的js文件,可以采集用户行为事件,发送到我们的服务器。SDK的开发要尽量遵循原生、小、快,不影响宿主页面性能等原则。
核心功能模块,本篇主要讲解核心模块的功能与结构
核心模块主要解决的问题是SDK的初始化、设备或用户的标识、本地cookie或localStorage存储、发送事件数据。
具体使用流程如下:
1、在我们系统中注册一个产品,系统会分配给这个产品一个唯一标识 token;
2、在你的网页中引入我们的SDK,有两种引入方式:
- 同步引入方式:<script src="sdk.js" ></script>
- 异步引入方式:我们会提供一段js代码,你可以直接copy到<head>中使用。其原理就是动态生成script标签,使用async属性异步加载sdk,并且预设sdk的api接口,以防sdk还没有加载成功,你已经开始调用api接口而发错;
3、初始化:Track.init( token, config, name )
4、采集数据:Track.track( eventName, property )