横幅(Banner)广告
简介
基本信息
横幅广告,又名Banner广告,固定于app顶部、中部、底部、或其他位置,横向贯穿整个app页面;当用户与app互动时,Banner广告会停留在屏幕上,并可在一段时间后自动刷新。
权限等级:开放
适用场景:Banner广告展现场景非常灵活,常见的展现场景为:文章页末尾,详情页面底部,信息流顶部等。
分类:Banner 广告分为文字链、纯图片和图文描述,具体种类可以在开发者平台进行选择:
文字链 | 图文描述 | 纯图片 |
---|---|---|
推荐Banner宽高比
Banner的宽高比为固定6.4:1,开发者在嵌入Banner时,可以手动设置Banner条的宽度用来满足场景需求,根据宽高比动态调整高度,以此保证显示效果
主要API
生命周期事件回调
您可以实现全部或部分GDTUnifiedBannerViewDelegate,以跟踪点击成功或者Banner请求失败等广告生命周期事件。
@protocol GDTUnifiedBannerViewDelegate <NSObject>
- (void)unifiedBannerViewDidLoad:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewFailedToLoad:(GDTUnifiedBannerView *)unifiedBannerView error:(NSError *)error;
- (void)unifiedBannerViewWillExpose:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewClicked:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewWillPresentFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewDidPresentFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewWillDismissFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewDidDismissFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewWillLeaveApplication:(GDTUnifiedBannerView *)unifiedBannerView;
- (void)unifiedBannerViewWillClose:(GDTUnifiedBannerView *)unifiedBannerView;
@end
在实现上述事件回调之前,请务必先设置delegate:
Objective-C
bannerView.delegate = self;
Swift
bannerView.delegate = self
回调函数列表
回调函数名 | 回调函数含义 |
---|---|
unifiedBannerViewDidLoad | 请求广告条数据成功后调用 |
unifiedBannerViewFailedToLoad | 请求广告条数据失败后调用 |
unifiedBannerViewWillExpose | banner曝光回调 |
unifiedBannerViewClicked | banner点击回调 |
unifiedBannerViewWillPresentFullScreenModal | banner广告点击以后即将弹出全屏广告页 |
unifiedBannerViewDidPresentFullScreenModal | banner广告点击以后弹出全屏广告页完毕 |
unifiedBannerViewWillDismissFullScreenModal | 全屏广告页即将被关闭 |
unifiedBannerViewDidDismissFullScreenModal | 全屏广告页已经被关闭 |
unifiedBannerViewWillLeaveApplication | 当点击应用下载或者广告调用系统程序打开 |
unifiedBannerViewWillClose | banner被用户关闭时调用 |
接入代码示例
加载并显示Banner广告
1.在您的View Controller文件中,引入对应头文件,定义好Banner对象以及定义清本类支持GDTUnifiedBannerViewDelegate协议,如下例所示:
Objective-C
#import "UnifiedBannerViewController.h"
#import "GDTUnifiedBannerView.h"
@interface UnifiedBannerViewController () <GDTUnifiedBannerViewDelegate>
@property (nonatomic, strong) GDTUnifiedBannerView *bannerView;
Swift
class UnifiedBannerViewController: UIViewController, GDTUnifiedBannerViewDelegate {
...
}
2.在viewDidLoad方法内,需要添加如下代码来对定义好的GDTUnifiedBannerView进行初始化。
Objective-C
- (void)viewDidLoad
{
[super viewDidLoad];
[self loadAdAndShow:nil];
}
- (GDTUnifiedBannerView *)bannerView
{
if (!_bannerView) {
CGRect rect = {CGPointZero, CGSizeMake(375, 60)};
_bannerView = [[GDTUnifiedBannerView alloc]
initWithFrame:rect
placementId:YOUR_PLACEMENT_ID
viewController:self];
_bannerView.animated = self.animationSwitch.on;
_bannerView.autoSwitchInterval = [self.refreshIntervalText.text intValue];
_bannerView.delegate = self;
}
return _bannerView;
}
Swift
override func viewDidLoad() {
super.viewDidLoad()
loadAd()
}
func loadAd() {
initMobBannerView()
self.view.addSubview(bannerView)
...
}
func initMobBannerView() {
if bannerView == nil {
let rect = CGRect.init(origin: .zero, size:CGSize.init(width: 375, height: 60))
bannerView = GDTUnifiedBannerView.init(frame: rect, placementId: YOUR_PLACEMENT_ID, viewController: self)
bannerView.delegate = self
}
}
3.将YOUR_APP_ID和YOUR_PLACEMENT_ID替换成你自己的APPID和PLACEMENTID。
4.在需要显示bannerView的逻辑内,需要先判断当前上下文是否已经存在一个bannerView的实体,如果存在,应当先将其remove掉,然后再进行创建bannerView的逻辑。
Objective-C
- (IBAction)loadAdAndShow:(id)sender {
if (self.bannerView.superview) {
[self.bannerView removeFromSuperview];
}
[self.view addSubview:self.bannerView];
...
[self.bannerView loadAdAndShow];
}
- (IBAction)removeAd:(id)sender {
[self.bannerView removeFromSuperview];
self.bannerView = nil;
}
Swift
@IBAction func showAd(_ sender: Any) {
removeAdFromSuperview()
loadAd()
}
@IBAction func removeAd(_ sender: Any) {
removeAdFromSuperview()
}
func loadAd() {
...
self.bannerView.loadAdAndShow()
}
- 如果需要打开或者关闭轮播时的动画效果,可以通过
animated
属性来进行设置,默认为打开。Objective-C
self.bannerView.animated = YES;
- 如果想自定义Banner的刷新间隔,可以通过
autoSwitchInterval
来进行设置。所设置值的有效范围是[30,120],低于30的会按30处理;高于120的会按120处理。默认为30。Objective-C
self.bannerView.autoSwitchInterval = 30;
说明:
在释放bannerView之前,建议在先将bannerView对象的delegate属性置为空,然后再释放bannerView。
在不展示Banner广告时执行调试
在您的ViewController里实现如下回调,处理Banner广告加载失败的问题:
Objective-C
- (void)unifiedBannerViewFailedToLoad:(GDTUnifiedBannerView *)unifiedBannerView error:(NSError *)error
{
NSLog(@"%s",__FUNCTION__);
}
Swift
func unifiedBannerViewFailed(toLoad unifiedBannerView: GDTUnifiedBannerView, error: Error) {
print(#function)
}
实时竞价能力
接入实时竞价能力分2步:
step1:
找优量汇运营同学开通广告位的实时竞价权限;
step2:
当广告拉取成功后,通过GDTUnifiedBannerView类的eCPM属性获取本条广告实时的eCPM价格,单位是分。
/**
返回广告的eCPM,单位:分
@return 成功返回一个大于等于0的值,-1表示无权限或后台出现异常
*/
- (NSInteger)eCPM;
说明:
当无权限调用该接口时,SDK会返回错误码-1。