为什么要做?
其实很简单,为了钱!
当一个APP积累了一定的用户量时,除了APP自身内容产生商业价值外,老板就会要求寻求更多能带来收入的功能。广告是目前大多数产品的主要盈利手段,在APP中,启动广告的报价一般都是最高和争抢的。
当然,启动广告除了可以投放商业广告外,还可以宣传和推广公司的新产品、新活动等内容。
怎么做?
初次接到需求时,简单看了一些竞品,觉得十分简单(主要是当时自己经验不足,初入行半年左右),简单设计了一个方案就进入开发阶段,之后上线。上线之后遇到各类情况以及新的需求,让我发现看似简单的开屏广告,却不简单。
初次上手
最初,接到需求后,设计的方案如下:
在广告系统建立“APP开屏广告”广告位,广告位中可以添加多个广告,用户每次启动APP时,随机获取该广告位中的一个广告。
开发,测试,上线,完美!
二次改进
刚开始一切完美,广告正常展现、跳转正常。可不多久,就发现了问题:
1.网络不佳时,广告图片加载慢,造成倒计时结束图片还没加载出来,屏幕白屏情况;
2.用户如果通过home键(尤其是iPhone)切出APP后,由于APP进程未杀死,用户再次进入APP时就不会再出现广告,可能造成用户长时间段内不会看到广告,这与商业初衷相背离。
基于以上原因,开始了第二次迭代,方案如下:
针对网络慢等造成图片无法加载的问题:APP每次启动时,都将所有的后台广告缓存到本地,用户再次启动APP时,从缓存中随机获取一个广告并展示,同时程序更新缓存的广告。
针对用户home键切出APP的问题:用户每次进入APP时(即使是通过home键切出后再切回),都展示广告。(真不知道自己当时是怎么想的,这么影响用户体验的需求竟然也能提)
开发,测试,上线,完美!
三次迭代
本以为一切完美,这个需求算是解决了,但使用过程中又遇到了问题:
1.广告是有时效性的:如果一个活动到1月31号结束,广告推广时间是1月20号-1月31号,一个用户在1月20号打开了APP,这时由于广告缓存的原因,这个用户没有看到这个广告,但这个广告已经缓存到了本地;假设该用户下一次启动APP的时间是2月1号,由于缓存,该用户看到了这个广告,点击了链接,结果却发现活动已经结束,这在用户体验上是有问题的;
2.每次切出APP再切回APP都展示广告,很明显,这个做法太影响体验,造成用户抱怨太多。
老板发火,不好惹,加班改!
APP缓存广告图片时,同时将APP的起止日期数据缓存下来,下次展示广告时,先判断缓存的广告是否在有效期内,不在的都不展示。
通过home键切出切回的情况:AM6:00 - PM2:00:如果当前时间内没有显示过广告,则显示一次,显示过则不再显示;PM2:00 - 第二天AM6:00:如果当前时间内没有显示过广告,则显示一次,显示过则不再显示。(这个时间设置的原因主要是我们APP日启动次数不算太高,在4-5次左右)
开发,测试,上线,完美!
完整方案总结:
1.APP每次启动时都从缓存中获取广告并展示,同时要对本地的缓存进行更新;
2.展示缓存广告时,需判断广告是否在有效期内;
3.针对home键切出切回问题,以及考虑用户体验的情况下,需对广告展示的时机和次数做限制。
小结:
1.APP启动广告要有跳过的功能,给予用户一定的选择权利;
2.常规看到APP启动时,其启动图片底部与广告底部一样,这种做法有两种:
一是广告图片在设计时,其底部保持与启动图片底部一致(样式、大小尺寸);
二是可以在APP启动广告上层添加一张只有底部而上部分透明的图片(这种也需要设计广告图片时底部不能设计有效内容)
虽然我们采用的是第二种,但现在我更倾向于第一种,因为图片设计可以更多样;第二种限制了所有的图片都有固定的底部。
3.现在的方案未能考虑到紧急下架的情况,当前方案下,即使广告紧急下架,如果缓存中存在,广告仍会展示(因为紧急下架未改广告有效期,在有效期内就会展示)。
漫漫产品路,需不断上下而探索!