安卓这边有具体的监听事件能够监听到view进入和移出屏幕的事件。 bash
在监听到view进入屏幕这一事件的同时,咱们记录下当前时间戳,而后在view移出屏幕时,再获取下时间戳,用这个时间戳减去进入屏幕的时间戳,就能够求出view在屏幕的停留时间。ide
这里有一个特殊的状况。当用户进入商城,切换tab或者进入商品详情页时,view并无从屏幕移出,而是隐藏不可见了。这种特殊状况的统计,就要用到另一个监听事件了。布局
用户行为 | 怎么监听 |
---|---|
进入商城->切换tab | 计算当前屏幕里全部view从用户进入商城到切换tab的时间差 |
进入商城->进入详情页 | 计算当前屏幕里全部view从用户进入商城到进详情的时间差 |
进入商城->点home键 | 计算当前屏幕里全部view从用户进入商城到点home键的时间差 |
进入商城->熄屏 | 计算当前屏幕里全部view从用户进入商城到点home键的时间差 |
把数据绑定到view里,须要自定义系统view,给系统view添加存储数据的功能。 这里以组件view和组件里的元素view为例spa
组件view 3d
元素view code
上面把自定义view写到布局里之后,就须要在代码里设置数据了。设置数据的方法以下:component
图中的holder.itemView就是咱们的ExLinearLayout, knowledge就是咱们当前条目所显示的数据。这样就能够把数据绑定到view里了。cdn
再看下recordExposure方法具体作了什么 blog
到这里咱们绑定数据这一步就完成了。这也是最重要的一步。由于只有把数据成功绑定到view里,后面才能从view里取数据。继承
上面第三步已经把数据绑定到view里了,咱们拿数据就比较方便了。 咱们只须要在view移出屏幕,或者view进入后台不可见时获取当前时间戳和view刚进入屏幕时的时间戳求差,大于2秒时,就取view里的数据。
{
"micro_page_name": "我是主页",
"micro_page_id": "3",
"micro_cindex": 3,
"component_name": "",
"micro_component_type": "groupbuyBargainList",
"micro_component_sindex": 1,
"exposure_content": "为全文",
"exposure_content_link": "http:\/\/m.ngmm001.com\/goods\/32702?componentName=groupbuyBargin-list",
"exposure_id": "32702"
}
复制代码
拿到这些数据后,咱们再作下有效曝光时间判断。好比view从进入屏幕绑定数据到移出屏幕的时间差大于2秒,才算有效曝光,才作数据上传。
如咱们把有效的曝光数据上传到神策数据后台。
这里咱们就要定义一个曝光策略字典了,这个字典经过如下几个步骤来告知咱们须要统计那些数据
如咱们想统计
就要定义以下曝光字典
{
"page": ["*"],
"event": [{
"eventName": "exposure",
"time": 2,
"area": 0.5
}, {
"eventName": "click"
}],
"component": ["slider", "banner","knowledgeList", "goodsList"]
}
复制代码
简单说下上面数据格式。 page字段:表明咱们要统计那些页面,若是是 * 表明全部页面都统计 event字段:表明咱们要统计那些事件,如曝光事件,点击事件。 component字段:表明咱们要统计那些组件,若是是 * 就统计全部组件。
而后我根据上面的曝光字典去过滤出运营所须要的数据,这个曝光字典是能够动态配置的。统计那些数据所有由曝光字典来定义。
如咱们想统计知识结果下每一个条目的曝光数据
1,用自定义ExLinearLayout替换咱们的根布局LinearLayout
2,到知识对应的viewholder,就是能获取到数据的地方,把数据绑定到view
咱们只须要作这两步,就能够轻松实现曝光的统计了。
后面还会有结合曝光的点击数据上传。就是用来统计从曝光到点击的转化率用的。 点击统计是基于上面两步的基础上作的。咱们要统计曝光组件点击统计只须要在点击的地方写入下面代码便可。
by 年糕妈妈:qcl