很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页。就像下面的效果。这个功能现在很常见,那么它是如何实现的呢?
思路
1.广告页加载思路。广告页的内容要实时显示,在无网络状态或者网速缓慢的情况下不能延迟加载,或者等到首页出现了再加载广告页。所以设置广告页时需要设置一个时间进行网络请求,在时间结束后如果没有请求到数据就直接到首页,请求到则加载数据。
2.广告页的显示方法有两种。
一种是直接新建一个自定义view添加到self.window上。
[self.window addSubview:adView];
另一种方法是新建一个广告controller。通过设置rootviewcontroller来更换界面。
[[UIApplication sharedApplication].delegatewindow].rootViewController = [[UINavigationController alloc] initWithRootViewController:[HomeViewControllernew]];
3.实现例子
只说不写例子没有直观的感受。
我写的Demo链接:ADLauncher.zip
新版demo:FinalADLauncher.zip修改点击活动进行跳转(两种方法)。
补充:在返回的图片为gif时,会出现第二次进入后动态图不播放的情况。可以做以下修改。(在销毁的时候清除sd的缓存。)在只有静态图的情况下不需要。
下面的是两个写的比较不错的三方库。
https://github.com/Running2snail/LLFullScreenAd(只能显示图片)
https://github.com/CoderZhuXH/XHLaunchAd(图片、视频)
4.广告页的显示代码可以放在AppDeleate中,也可以放在首页的控制器中。如果代码是在AppDelegate中,可以通过发送通知的方式,让首页push到广告详情页。直接Push的方法由于水平有限未实现,暂时未想到。
注意点
1.广告页面的底部和启动图的底部一般都是相同的,给我们的感觉就是启动图加载完之后把广告图放在了启动图上,而且不能有偏差,比如淘宝启动画面。美工在制作广告图的时候要注意这点。
2.研究了一下淘宝的广告显示机制,删除淘宝之后重新打开不会显示广告图片,第二次打开才会显示。美团的广告图有时候显示有时候不显示,所以后台在开发广告api的时候可以增加一个字段来判断是否启用广告