什么是曝光?
常说的曝光
在摄影上,曝光(英语:Exposure)是指摄影的过程中允许进入镜头照在感光媒体(胶片相机的底片或是数字照相机的图像传感器)上的光量。后来延伸之后,一些负面消息、违法行为等被媒体、网络向社会公开,可以称之为某某事件被曝光,再后来,在市场营销和广告领域,曝光是一个特有名词,指的是把广告内容展示给广告的受众或者产品服务的潜在客户的操作和过程
业务眼中的曝光
在运营过程中,某 banner 位、某列表页的某一行、某页面中的一个小栏位或者卡片被用户浏览了,则称这个 banner 位、列表行、小栏位或者卡片被曝光了。
我们所说的曝光
某视图元素,由不可见到可见,满足一定的限制条件(可见比例、有效停留时长),我们称这个视图元素被曝光了。
采集曝光埋点能干什么?
计算 CTR
我们不少客户想通过查看某 Banner 位的曝光点击的转化率,从而有针对性的去评估当前 Banner 位设置是否合理,哪个 Banner 位用户更感兴趣。CTR(Click-Through-Rate), 互联网广告常用的术语,作为衡量广告效果的一项重要指标,计算方式为某广告位、运营位、Banner 位等的点击次数 / 曝光次数。
优化产品配置
使用曝光次数来分析哪个 Banner 位、活动卡片用户浏览的较多,从而着重去推这些产品。对于一些新的产品或者类目,由于不确定其成效或者是否设置合理、客户是否感兴趣,往往需要试探性的在 Banner 位中展示然后需要统计下曝光的次数,进而后续优化或者变更产品配置。另外,我们的客户中,都有搜索场景,客户相对搜索结果页的一些产品曝光情况做个统计分析,对于那种在搜索页面曝光次数较多的产品,后续可以将其放到显要的位置去配置,或者优化产品排序,将此类曝光次数较多的产品排在前面。
神策曝光
视图元素
现代数学集合论中,具有某种特定属性的事物的全体成为 "集合",元素就是组成集合的每个事物。在描述用户界面(UI)时,我们也常说用户页面(集合)由哪些元素组成,例如有 button、label、text、input 等,而这些在 App 中都是 View,也就是视图,所以我们把用户界面上这些常见的元素(例如 button、label、text、input)叫做视图元素。
可见与不可见
描述的是视图元素能不能在当前可视区域被看见,可见与不可见是相对的,下面我们来说下曝光需求中的可见到不可见之间状态改变的典型场景:
场景 | 示例 | 支持 | |
---|---|---|---|
视图相对可视区域的位置改变 | ![]() |
![]() |
支持 |
视图元素的透明度改变 | ![]() |
![]() |
支持 |
视图元素隐藏 | ![]() |
![]() |
支持 |
页面切换 | ![]() |
![]() |
支持 |
页面隐藏/App 切换到后台 | ![]() |
![]() |
支持 |
页面关闭/App 杀死 | ![]() |
杀掉 App | 支持 |
视图元素的消亡 | ![]() |
![]() |
支持 |
视图元素被遮盖 | ![]() |
![]() |
不支持 |
注意:在 App 端,会存在父子视图的概念,在可见性方面,会存在需要依赖父视图来决定子视图的可见的场景,这种情况我们暂不支持。
曝光生命周期
曝光一个完整的生命周期从 不可见到可见 → 触发曝光事件 → 可见到不可见 → 结束曝光,可以用下面这张图来形象的说明:
一旦生命周期到达结束曝光,代表这个视图元素一个完整的曝光生命周期已结束。
可见比例
对于一个视图元素来说,可见比例指的是:在可视区域内的面积 / 视图元素自身的面积
这里的可视区域面积,我们一般这么来描述,如果是手机 App,那么可视区域就是手机屏幕或者 App 打开时占据的屏幕大小,如果是 web,可视区域的面积就是浏览器窗口的大小。这里实际场景中,会面临视图遮盖的问题,比如广告位 A 出现在屏幕后,广告位 B 遮盖了广告位 A,那么广告位 A 其实是没有可见的,对于这种遮盖场景暂不支持(有技术上的限制也有性能方面的考量)。
场景 | 示例 | 可视面积 | 曝光面积 | 备注 |
---|---|---|---|---|
完全露出 | ![]() |
100% | 100% | |
部分露出 | ![]() |
60% | 60% | |
视图遮盖 | ![]() |
60% | 100% | 对于视图 A 来说,由于被视图 B 遮挡,实际的可视面积是 60%,但是我们计算的曝光面积是 100% |
有效停留时长
视图元素从不可见到可见后,满足可见比例并且保持可见状态的持续的一段时间
重复曝光
在同一页面下,不发生标签切换,某个视图元素触发的多次曝光,我们称之为重复曝光。这里说的标签,在 App 和 JS 中,就是我们常说的 Tab。
全自动与半自动
全自动与半自动,简单来说,全自动就是我们 SDK 完全自动的采集曝光,半自动需要客户侧写一些代码,比如标记视图,传入事件名和属性,然后当视图元素满足曝光配置条件后 SDK 自动的采集曝光事件及属性。
整体流程

神策曝光支持的场景
列表视图
最常见的一种 UI 展示形式,常见的形式如下:
场景说明:假如我们想要采集上图中的周杰伦的那张卡片元素 A 的曝光,当列表视图滑动,看到 A 后,即采集曝光事件,当列表视图滑动,A 看不见了,然后又滑回来,A 又能看见,这时再次采集曝光事件。
注意:
- 我们这里所说的卡片元素 A,其实不等同于研发眼中的视图对象,这里的卡片元素 A,其实还有位置(position) 的语义在里面。
- 列表视图场景下,对于标记的视图由于有 position 的语义在里面,需要考虑标记时是否可以自动获取 position,或者让客户传入 position 来处理
Banner 图

场景说明: Banner 图一般都会有 "页" 的概念在里面,加入我们想要采集第一页视图元素 A 的曝光,那么 Banner 图在滚动到 A 的时候,我们采集曝光事件,随后 Banner 滚动到其他页,当再次滚动到 A 的时候,我们再次采集曝光事件。 注意:我们这里所说的视图元素 A,其实不等同于研发眼中的视图对象,这里的视图元素 A,其实还有位置(position) 的语义在里面。
普通元素

场景说明:假如我们想采集上图中的推荐商品栏位 A 的曝光,当栏位 A 出现在屏幕时,我们采集曝光事件。对于页面可以滚动的情况下,滚动页面,栏位 A 出现在屏幕,这时采集曝光事件,继续滚动,栏位 A 滚出屏幕,往回滚动页面,使得栏位 A 再次出现在屏幕,此时我们再次采集曝光事件。
Tab 页切换
App 常见的
场景说明:假如我们想采集上图中的 tab 页 "Shop" 上的视图元素 A 的曝光,当我们切换到 tab 页 "Shop" 的时候,视图元素 A 出现,这时我们采集视图元素 A 的曝光事件,当我们切换到 tab 页 "示例" 时视图元素 A 不可见,再次切换到 tab 页 "Shop",视图元素 A 再次可见,这时我们再次采集视图元素 A 的曝光事件。
页面隐藏 / App 切换前后台

场景说明:假如我们想采集周杰伦这个卡片元素 A 的曝光,当 A 可见时,我们采集曝光事件,这时我们将 App 切换到后台,后续又点开 App,将 App 从后台切换到前台,此时,我们再次采集卡片元素 A 的曝光事件
总结
这边文章主要介绍了神策的曝光埋点以及支持的场景,后面将介绍神策曝光埋点在各端的具体技术实现原理,如果感兴趣或者对埋点 SDK 有需要的,请关注我们的公众号,也可以访问我们的官网。
