@no13bus
2017-08-01T10:48:05.000000Z
字数 2674
阅读 933
(1)格式协议
前端上传的数据格式:
首先生成一个唯一id的cookie,标识用户uuid。
针对页面浏览形的数据,数据格式如下:
{"system":"ios","user_agenet":"","browser_type":"chrome","browser_version":"24.01","refer":"www.baidu.com","refer_params":{"a":1,"b":2},"uuid": "2b8c376e-bd20-11e6-9ebf-525499b45be6","event_time": "2016-12-08T18:08:12","page": "www.example.com/poster.html","page_params": {"id": "123"},"user_agent": "Mozilla","ip": "59.174.196.123",(根据ip库可以推算出访客的城市)"event_type": 0,(浏览/点击/退出)"stay_times":120(页面停留时长)"event_id": 12(用来后期给运营看报表的时候看的)"event_name": "注册页面浏览""refer":"页面的上一级refer"}
然后传到后端api接口的时候,再加上几个其他的参数,如下:
{"uid":1}
另一个数据格式:点击事件。数据格式如下:
{"system":"ios","user_agenet":"","browser_type":"chrome","browser_version":"24.01","refer":"www.baidu.com","refer_params":{"a":1,"b":2},"uuid": "2b8c376e-bd20-11e6-9ebf-525499b45be6","event_time": "2016-12-08T18:08:12","page": "www.example.com/poster.html",(当前浏览页面)"page_params": {"title": "test","user_id": 1234},"element": "register","relationData":[{"r_ask_element":"answer", "r_ask_text":"hahaha"}{"r_my_element":"my", "r_my_text":"wwwww"}],"coordinate":"123,1333"(点击时的坐标),"screen_scale":"100,200"(窗口长高)"user_agent": "Mozilla","ip": "59.174.196.123","client_type": 0,(Web/Android/IOS)"event_type": 1,(浏览/点击)"event_id": 13(用来后期给运营看报表的时候看的)"event_name": "提交注册","refer":"页面的上一级refer"}
在底层绑定了一个cick事件,只要有click就上报。传递到后端的时候,数据格式如下:
{"uid":1}
此外说明:
页面停留时长的计算方法:
页面加载事件(跟pv有关) 设置一个cookie: uuid.页面id.页面开始访问时间.页面离开时间(开始访问和离开时间均相同)
页面离开事件(统计页面停留时间) 更新这个cookie: uuid.页面id.页面开始访问时间.页面离开时间(更新离开时间)
(2) 可以实现的需求
1. pv
2. uv
3. 转化率(关键路径的漏斗模型)
4. 页面停留时长
5. 用户分布
6. 页面热图分析(需求记录所以点击事件,是否需要??)
7. 页面访问来源分析
8. 推广渠道的访问率
(3) 前端采集伪代码:
html:
<div><div><textarea id="answer" cols="30" rows="10" user_action_relation="answer-submit"></textarea></div><button user_action_id="answer-submit">提 交</button></div>
js:
$(d).ready(function() {// 页面浏览上报pvUpload({page: getPageUrl()},$.extend({title: getTitle()}, getUrlParams()));// 绑定点击事件$(d).bind('click', function(event) {var $target = $(event.target);// 查找是否是需要上报的元素var $ua = $target.closest('[user_action_id]');if ($ua.length > 0) {var userActionId = $ua.attr('user_action_id');var userActionRelation = $("[user_action_relation=" + userActionId + "]");var relationData = [];// 查找相关联的元素的数据信息if (userActionRelation.length > 0) {userActionRelation.each(function() {var jsonStr = JSON.stringify({"r_placeholder_element": $(this).get(0).tagName,'r_placeholder_text': $(this).text()});jsonStr = jsonStr.replace(/\placeholder/g, $(this).attr('id'));jsonStr = JSON.parse(jsonStr);relationData.push(jsonStr);});}// 点击事件上报clickUpload({page: getPageUrl(), element: userActionId},$.extend({title: getTitle()}, getUrlParams(), relationData));}});// 页面跳转/跳出/计算页面停留时长windows.ubload(function(){pvUpload({page: getPageUrl(), stay_times:120},$.extend({title: getTitle()}, getUrlParams()));})});
(4)流程图
