Android 曝光采集:以商品 view 曝光量的统计为例

640?wx_fmt=png

640?wx_fmt=gif

640?wx_fmt=jpeg

本文由神策数据的标杆客户年糕妈妈的技术团队创作。

全文将为你介绍安卓端有效曝光统计的五步骤:

  • 要确定什么样的算有效曝光(例:在屏幕停留时间超过一个值如 2 秒)

  • 监听到每个 view 移入和移出屏幕的事件

  • 把数据绑定到 view(view 相当于数据的载体)

  • 根据监听事件拿到 view 里的数据

  • 根据曝光字典筛选出运营想要的有效数据

一、什么算有效曝光?

首先需要和运营同学一起确认下,一个 view 在屏幕停留的时长大于多少秒时算有效曝光。目前安卓这边是可以拿到 view 从进屏幕到移出屏幕的时间差,暂时以 view 进入屏幕到离开屏幕的时差大于 2 秒算一次有效曝光。

640?wx_fmt=other

二、监听 view 的移入和移出事件

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

640?wx_fmt=other

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

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

监听当前 view 是否可见

640?wx_fmt=other

同样,安卓有提供监测 view 是否可见的监听事件。这种情况下我们来监听以下几种情况(要确认下哪些用户行为算有效曝光)。

用户行为怎么监听

进入商城->切换 tab

计算当前屏幕里所有 view 从用户进入商城到切换 tab 的时间差

进入商城->进入详情页

计算当前屏幕里所有 view 从用户进入商城到进详情的时间差

进入商城->点 home 键

计算当前屏幕里所有 view 从用户进入商城到点 home 键的时间差

进入商城->熄屏

计算当前屏幕里所有 view 从用户进入商城到点 home 键的时间差


三、怎么把数据绑定到 view ?

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

组件 view

640?wx_fmt=other

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

640?wx_fmt=other

元素 view

640?wx_fmt=other

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

640?wx_fmt=other

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


640?wx_fmt=other

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

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

640?wx_fmt=other

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

640?wx_fmt=other

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

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

四、怎么拿到 view 里的数据?

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

640?wx_fmt=other

640?wx_fmt=other

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

640?wx_fmt=png

如我们拿到商品组件的数据如下:

{

"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 秒,才算有效曝光,才做数据上传。

640?wx_fmt=other

如我们把有效的曝光数据上传到神策数据后台。
640?wx_fmt=png
640?wx_fmt=other

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

五、怎么筛选出运营想要的有效数据?

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

  • 统计哪个页面(如商城页)

  • 统计哪些组件 view(如商品组件、banner 组件、音频组件)

  • 统计组件里的哪些元素 view(如商品的标题、商品的价格)

如我们想统计“首页:轮播图组件、banner 组件、知识付费组件、商品组件”就要定义如下曝光字典:

 
 

{

    "page": ["*"],

    "event": [{

      "eventName": "exposure",

      "time": 2,

      "area": 0.5

    }, {

      "eventName": "click"

    }],

    "component": ["slider", "banner","knowledgeList", "goodsList"]

  }

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

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

安卓开发使用步骤:

  1. 使用自定义的组件 view 替换根布局

  2. 需要使用自定义的 ExLinearLayout、ExRelativeLayout 等替换布局中的对应的 view

  3. 绑定数据到 view

  4. 获取符合条件的 view 并取数据

  5. 根据曝光字典上传数据

我们以搜索页的曝光统计为例。如我们想统计知识结果下每个条目的曝光数据:
640?wx_fmt=jpeg

1.用自定义 ExLinearLayout 替换我们的根布局 LinearLayout

640?wx_fmt=other

2.到知识对应的 viewholder,就是能获取到数据的地方,把数据绑定到 view

640?wx_fmt=other

我们只需要做这两步,就可以轻松实现曝光的统计了。

640?wx_fmt=other

后面还会有结合曝光的点击数据上传。就是用来统计从曝光到点击的转化率用的。点击统计是基于上面两步的基础上做的。我们要统计曝光组件点击统计只需要在点击的地方写入下面代码即可。

640?wx_fmt=other

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

作者:年糕妈妈技术团队

著作权归作者所有。

不容错过的精彩内容

▼▼▼



收藏 ★ 公众号,及时获取精彩内容


640?wx_fmt=png
640?wx_fmt=jpeg
640?wx_fmt=png

关注

神策数据

帮助客户实现数据驱动。

640?wx_fmt=png


↙↙↙戳此,免费体验神策分析

“在看”,你就戳戳我☟ 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值