Android 曝光采集(商品view曝光量的统计)第二弹

栏目: IOS · Android · 发布时间: 5年前

内容简介:安卓这边有具体的监听事件可以监听到view进入和移出屏幕的事件。在监听到view进入屏幕这一事件的同时,我们记录下当前时间戳,然后在view移出屏幕时,再获取下时间戳,用这个时间戳减去进入屏幕的时间戳,就可以求出view在屏幕的停留时间。这里有一个特殊的情况。当用户进入商城,切换tab或者进入商品详情页时,view并没有从屏幕移出,而是隐藏不可见了。这种特殊情况的统计,就要用到另外一个监听事件了。

安卓这边有具体的监听事件可以监听到view进入和移出屏幕的事件。

Android 曝光采集(商品view曝光量的统计)第二弹

在监听到view进入屏幕这一事件的同时,我们记录下当前时间戳,然后在view移出屏幕时,再获取下时间戳,用这个时间戳减去进入屏幕的时间戳,就可以求出view在屏幕的停留时间。

这里有一个特殊的情况。当用户进入商城,切换tab或者进入商品详情页时,view并没有从屏幕移出,而是隐藏不可见了。这种特殊情况的统计,就要用到另外一个监听事件了。

  • 监听当前view是否可见
    Android 曝光采集(商品view曝光量的统计)第二弹
    同样,安卓有提供监测view是否可见的监听事件。这种情况下我们来监听以下几种情况(要确认下那些用户行为算有效曝光)。
用户行为 怎么监听
进入商城->切换tab 计算当前屏幕里所有view从用户进入商城到切换tab的时间差
进入商城->进入详情页 计算当前屏幕里所有view从用户进入商城到进详情的时间差
进入商城->点home键 计算当前屏幕里所有view从用户进入商城到点home键的时间差
进入商城->熄屏 计算当前屏幕里所有view从用户进入商城到点home键的时间差

3,怎么把数据绑定到view

把数据绑定到view里,需要自定义系统view,给系统view添加存储数据的功能。 这里以组件view和组件里的元素view为例

  • 组件view

    Android 曝光采集(商品view曝光量的统计)第二弹

    我们这里以LinearLayout为例,我们自己写个ExLinearLayout继承系统的LinearLayout,然后给我们的ExLinearLayout添加设置数据的方法。 然后在需要统计的组件view的根布局使用我们自定义的ExLinearLayout,如下:

    Android 曝光采集(商品view曝光量的统计)第二弹
  • 元素view

    Android 曝光采集(商品view曝光量的统计)第二弹

    这里以AppCompatTextView为例,我们自定义ExTextView继承系统AppCompatTextView,然后给我们的AppCompatTextView添加设置数据的方法。 然后在我们的布局里使用,如在商品组件的标题和描述view里使用如下:

    Android 曝光采集(商品view曝光量的统计)第二弹

上面把自定义view写到布局里以后,就需要在代码里设置数据了。设置数据的方法如下:

Android 曝光采集(商品view曝光量的统计)第二弹

图中的holder.itemView就是我们的ExLinearLayout, knowledge就是我们当前条目所显示的数据。这样就可以把数据绑定到view里了。

再看下recordExposure方法具体做了什么

Android 曝光采集(商品view曝光量的统计)第二弹

我们这里做的就是把组件里的数据,封装成我们运营想要的数据。然后把封装好的数据绑定到view里。

Android 曝光采集(商品view曝光量的统计)第二弹

我们这里在做数据绑定之前,需要通过曝光字典过滤下,当前组件类型是不是我们想要统计的。如果是我们想要统计的类型,才做数据绑定。

到这里我们绑定数据这一步就完成了。这也是最重要的一步。因为只有把数据成功绑定到view里,后面才能从view里取数据。

4,怎么拿到view里的数据

上面第三步已经把数据绑定到view里了,我们拿数据就比较方便了。 我们只需要在view移出屏幕,或者view进入后台不可见时获取当前时间戳和view刚进入屏幕时的时间戳求差,大于2秒时,就取view里的数据。

Android 曝光采集(商品view曝光量的统计)第二弹
Android 曝光采集(商品view曝光量的统计)第二弹

我们这里收集数据是还要判断view从进屏幕到出屏幕这个过程中,有没有显示超过50%,没有超过50%的也不算有效曝光的。这样我们就可以拿到所有的组件及组件里元素的数据。

Android 曝光采集(商品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秒,才算有效曝光,才做数据上传。

Android 曝光采集(商品view曝光量的统计)第二弹

如我们把有效的曝光数据上传到神策数据后台。

Android 曝光采集(商品view曝光量的统计)第二弹
Android 曝光采集(商品view曝光量的统计)第二弹

可以看到我们的数据就能成功上传到神策了。

5,怎么筛选出运营想要的有效数据

这里我们就要定义一个曝光策略字典了,这个字典通过以下几个步骤来告知我们需要统计那些数据

  • 统计那个页面(如商城页)
  • 统计那些组件view(如商品组件,banner组件,音频组件)
  • 统计组件里的那些元素view(如商品的标题,商品的价格)

如我们想统计

  • 首页:
    • 轮播图组件,banner组件,知识付费组件,商品组件

就要定义如下曝光字典

{
    "page": ["*"],
    "event": [{
      "eventName": "exposure",
      "time": 2,
      "area": 0.5
    }, {
      "eventName": "click"
    }],
    "component": ["slider", "banner","knowledgeList", "goodsList"]
  }
复制代码

简单说下上面数据格式。 page字段:代表我们要统计那些页面,如果是 * 代表所有页面都统计 event字段:代表我们要统计那些事件,如曝光事件,点击事件。 component字段:代表我们要统计那些组件,如果是 * 就统计所有组件。

然后我根据上面的曝光字典去过滤出运营所需要的数据,这个曝光字典是可以动态配置的。统计那些数据全部由曝光字典来定义。

原理就是把我们存储数据的view传进去,当用户点击时,就可以从这个view上拿到想要的数据了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机操作系统

计算机操作系统

/ 西安电子科技大学出版 / 1984-11 / 19.60元

一起来看看 《计算机操作系统》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具