Bidding Android iOS JS Media API 常见问题

横幅(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()
 }
  1. 如果需要打开或者关闭轮播时的动画效果,可以通过animated属性来进行设置,默认为打开。
    Objective-C
    self.bannerView.animated = YES;
    
  1. 如果想自定义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。

 文档反馈

腾讯公司 版权所有