横幅广告是一些在用户触摸下通常会向用户呈现全屏应用内浏览体验的小型广告。
另一方面,插页式广告可以在应用的自然转换点(例如启动、视频前贴片或游戏关卡加载时)即刻呈现HTML5富媒体效果或“网络应用”。网络应用提供了应用内浏览体验,这类应用的特点是只有简单的关闭按钮,而没有任何导航栏:其内容有自己的内部导航架构。插页式广告的价格一般更高,且展示机会有局限。
一:GADInterstitial
GADInterstitial功能更丰富、也更重要,这反映在它的定义上:它不是UIView,而是需要更多不同的实例化、加载和显示步骤的NSObject。
不过,它的用法与GADBannerView非常类似:
1:导入GADInterstitial.h
2:在应用的UIViewController中声明GADInterstitial实例
3:完成创建
4:设置广告单元ID
同样,为方便起见,您最好在应用的UIViewController中执行上述所有步骤。
// InterstitialExampleViewController.h
// 从SDK导入GADInterstitial的定义
#import "GADInterstitial.h"
@interface InterstitialExampleViewController : UIViewController {
// 将其中一个声明为实例变量
GADInterstitial *interstitial_;
}
@end
以下代码会在视图控制器的viewDidLoad初始化挂钩中设置插页式广告。
// InterstitialExampleViewController.m
#import "InterstitialExampleViewController.h"
@implementation MyInterstitialHostingViewController
- (void)viewDidLoad {
[super viewDidLoad];
interstitial_ = [[GADInterstitial alloc] init];
interstitial_.adUnitID = MY_INTERSTITIAL_UNIT_ID;
[interstitial_ loadRequest:[GADRequest request]];
}
@end
您随时可以调用loadRequest:不过必须等到系统调GADInterstitialDelegateinterstitialDidReceiveAd:后才能展示广告素材。如果收到GADInterstitialDelegate的interstitial:didFailToReceiveAdWithError:请妥善处理错误环境。
注意:插页式广告请求的超时时间为5秒。此超时涉及与服务器之间的套接字连接,与插页式广告的展示时长无关。
提示:GADInterstitial是一次性的对象。它可以在第一次请求之后,针对加载或展示插页式广告的请求调用didFailToReceiveAdWithError:然后在不引起中断的情况下失败。
一旦加载成功,即可展示全屏广告:
[interstitial_ presentFromRootViewController:self];
接着,插页式广告会占据整个屏幕,直到用户将其关闭;届时,控制权将交还给应用,且视图控制器会被传递给这个方法。
二:初始画面插页式广告
插页式广告有一种特殊用法,就是在应用启动时以“初始画面”的方式出现。
在应用委托的application:didFinishLaunchingWithOptions:内调用loadAndDisplayRequest:usingWindow:initialImage:,可有效地将插页式广告排入队列,使其在isReady时立即展示。屏幕上会继续显示初始图片(通常是应用的默认图片),直到加载请求成功或失败为止。
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
GADInterstitial *splashInterstitial_ = [[GADInterstitial alloc] init];
splashInterstitial_.adUnitID = MY_INTERSTITIAL_UNIT_ID;
[splashInterstitial_ loadAndDisplayRequest:[GADRequest request]
usingWindow:window_initialImage:[UIImage imageNamed:@"Default.png"]];
}
三:GADInterstitialDelegate
就像使用GADBannerViewDelegate时一样,开发者可以选择实现全部或部分的GADInterstitialDelegate,以便跟踪插页式广告的生命周期事件。
@protocol GADInterstitialDelegate
@optional
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial;
- (void)interstitial:(GADInterstitial *)interstitial
didFailToReceiveAdWithError:(GADRequestError *)error;
- (void)interstitialWillPresentScreen:(GADInterstitial *)interstitial;
- (void)interstitialWillDismissScreen:(GADInterstitial *)interstitial;
- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial;
- (void)interstitialWillLeaveApplication:(GADInterstitial *)interstitial;
@end
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial
在loadRequest:已获得成功,插页式广告处于isReady状态且随时可以适时展示时发送。
- (void)interstitial:(GADInterstitial *)interstitial didFailToReceiveAdWithError:(GADRequestError *)error
当loadRequest:失败时发送,常见失败原因:网络故障、应用配置错误,或插页式广告资源不足(比在横幅广告中更常见)。您可以记下这些事件,以便进行调试。
- (void)interstitialWillPresentScreen:(GADInterstitial *)interstitial
发送后便立即向用户展示interstitial。与使用UIApplicationDidEnterBackgroundNotification时类似,此时应该暂停所有动画、计时器或其他可能会与用户互动的活动,并保存应用状态。请注意,用户可能会在插页式广告内按下“首页”按钮或触摸其他应用(例如App Store或iTunes)的链接,并因此离开您的应用。
- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial
当用户关闭interstitial且广告已从屏幕中退出时发送。
- (void)interstitialWillDismissScreen:(GADInterstitial *)interstitial
用以恢复您的应用和根视图控制器(在非初始画面的情况下),在此语句发送后,interstitial便会紧跟着从屏幕中退出。这时应该重新启动interstitialWillPresentScreen:执行期间暂停的任何前台活动。
- (void)interstitialWillLeaveApplication:(GADInterstitial *)interstitial
在应用因为用户触摸interstitial内指向其他应用的链接而转至后台或终止运行前发送。在此之前,先会有applicationDidEnterBackground:等常规UIApplicationDelegate通知显示。
在这些方法中,您可以通过查看GADBannerView.hasAutoRefreshed来判断是否有刷新操作触发了事件。
同样,如果您将委托作为独特的对象来实现,则在发布插页式广告前,请务必将委托设为nil。
插页式广告与横幅广告就是我们常说到的广告形式,广告形式就是用户看到的一些广告。移动平台才刚刚开始萌生的时候,一些手机平台只能集成Banner广告(横幅广告)这样非常单一,现如今移动平台越来越多集成的广告也逐渐增多。
分享下我的实例:我之前使用的是有米移动平台那个时候只能集成横幅广告,现在广告形式多了,我就选择了一个全新的移动平台——KeyMob移动平台。选择了这个平台,不仅可以集成横幅广告、插页式广告、积分墙等等这些都可以。KeyMob移动平台集成这样广告形式操作简单,集成的广告样式也比较多,在技术上也非常拔尖。
来源:oschina
链接:https://my.oschina.net/u/2505907/blog/537710