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

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

内容简介:安卓这边有具体的监听事件可以监听到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上拿到想要的数据了。


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

查看所有标签

猜你喜欢:

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

Tango with Django

Tango with Django

David Maxwell、Leif Azzopardi / Leanpub / 2016-11-12 / USD 19.00

Tango with Django is a beginner's guide to web development using the Python programming language and the popular Django web framework. The book is written in a clear and friendly style teaching you th......一起来看看 《Tango with Django》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具