Help Center/Details/

iOS模版渲染Banner广告

简介

模板渲染Banner:是在内容底部或顶部显示的小条形广告。不应将Banner广告放置于文本、图片和应用的其他可点击部分,避免误点

支持的广告尺寸:支持600*300、600*400、600*500、600*260、600*90、600*150、640*100、690*388共8个尺寸,开发者按照展示场景进行勾选。创建好的尺寸不支持修改

权限:

模板Banner广告: 默认提供

轮播设置

  1. 当是否轮播: 选择轮播功能时,客户端不需要自行实现间隔一定时间重新请求的操作,轮播功能由SDK内部实现,客户端只要保证广告及时得到展示即可,另轮播间隔为30s~120s之间
  2. 当是否轮播: 不选择轮播功能时,客户端可自行实现轮播效果,如间隔一定的时间重新请求广告,保证一定间隔时间内广告内容为新的内容,此时的广告请求间隔建议和平台实现的轮播功能间隔保持一致,请求时间间隔为30s~120s之间

模版Banner广告

使用说明

模版banner使用BUNativeExpressBannerView对象调用loadAdData请求广告,使用addSubview添加广告对象来进行广告的展示,通过设置BUNativeExpressBannerViewDelegate代理,获取广告、展示、点击、关闭等回调。

创建广告位对象、请求广告

BUNativeExpressBannerView

请求广告时需要传入广告位对象,广告位对象创建时必须传入广告位ID

必传参数:

字段定义 字段名称 字段类型 备注
slotID 代码位 NSString 代码位ID
adSize 广告尺寸 CGSize 广告尺寸,设置的尺寸务必和媒体平台配置保持相同比例

使用BUNativeExpressBannerView创建对象,使用BUNativeExpressBannerView调用loadAdData请求广告

    UIWindow *window = nil;
    if ([[UIApplication sharedApplication].delegate respondsToSelector:@selector(window)]) {
        window = [[UIApplication sharedApplication].delegate window];
    }
    if (![window isKindOfClass:[UIView class]]) {
        window = [UIApplication sharedApplication].keyWindow;
    }
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }
    CGFloat bottom = 0.0;
    if (@available(iOS 11.0, *)) {
        bottom = window.safeAreaInsets.bottom;
    } else {
        // Fallback on earlier versions
    }
    
    NSValue *sizeValue = [self.sizeDcit objectForKey:slotID];
    CGSize size = [sizeValue CGSizeValue];
self.bannerView = [[BUNativeExpressBannerView alloc] initWithSlotID:slotID rootViewController:self adSize:CGSizeMake(screenWidth, bannerHeigh)];
self.bannerView.frame = CGRectMake(0, self.view.height-bannerHeigh, screenWidth, bannerHeigh);
self.bannerView.delegate = self;
[self.bannerView loadAdData];

可选参数:

字段定义 字段名称 字段类型 备注
interval 轮播间隔 NSInteger 轮播间隔时间为30s~120s之间,最短轮播时间为2.5s

备注:当媒体平台选择轮播功能时需要设置此参数,时间间隔为30s~120s之间

    UIWindow *window = nil;
    if ([[UIApplication sharedApplication].delegate respondsToSelector:@selector(window)]) {
        window = [[UIApplication sharedApplication].delegate window];
    }
    if (![window isKindOfClass:[UIView class]]) {
        window = [UIApplication sharedApplication].keyWindow;
    }
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }
    CGFloat bottom = 0.0;
    if (@available(iOS 11.0, *)) {
        bottom = window.safeAreaInsets.bottom;
    } else {
        // Fallback on earlier versions
    }
    
    NSValue *sizeValue = [self.sizeDcit objectForKey:slotID];
    CGSize size = [sizeValue CGSizeValue];
// important: 升级的用户请注意,初始化方法去掉了imgSize参数
    self.bannerView = [[BUNativeExpressBannerView alloc] initWithSlotID:realSlotId rootViewController:self adSize:size interval:30];
    self.bannerView.frame = CGRectMake((self.view.width-size.width)/2.0, self.view.height-size.height-bottom, size.width, size.height);
   self.bannerView.delegate = self;
   [self.bannerView loadAdData];

接收广告加载结果

BUNativeExpressBannerViewDelegate

回调方法 注释
nativeExpressBannerAdView:didLoadFailWithError 返回的错误码(error)表示广告加载失败的原因,所有错误码详情请见链接。Link
nativeExpressBannerAdViewRenderFail 渲染失败,网络原因或者硬件原因导致渲染失败,可以更换手机或者网络环境测试。建议升级到穿山甲平台最新版本
nativeExpressBannerAdViewDidLoad 广告加载成功回调
nativeExpressBannerAdViewRenderSuccess 渲染成功回调

BUNativeExpressBannerViewDelegate回调说明

回调方法 注释
nativeExpressBannerAdViewDidLoad:bannerAdView 加载成功回调
nativeExpressBannerAdView: didLoadFailWithError: 返回的错误码(error)表示广告加载失败的原因,所有错误码详情请见链接。Link
nativeExpressBannerAdViewRenderSuccess: 渲染成功回调
nativeExpressBannerAdViewRenderFail:error: 渲染失败,网络原因或者硬件原因导致渲染失败,可以更换手机或者网络环境测试。建议升级到穿山甲平台最新版本
nativeExpressBannerAdViewWillBecomVisible: 当显示新的广告时调用此方法
nativeExpressBannerAdViewDidClick: 点击回调
nativeExpressBannerAdView:dislikeWithReason: dislike回调方法,需要在此回调方法中进行广告的移除操作,并将广告对象置为nil,如若不实现此回调方法,关闭按钮将不会生效
nativeExpressBannerAdViewDidCloseOtherController: interactionType: 此回调在广告跳转到其他控制器时,该控制器被关闭时调用interactionType:此参数可区分是打开的appstore/网页/详情页面等等

通过设置BUNativeExpressBannerViewDelegate代理,获取广告、展示、点击、关闭等回调。其他代理方法可参见DemoBUDExpressBannerViewController类#pragma ---BUNativeExpressBannerViewDelegate部分

展示广告

使用addSubview添加广告对象来进行广告的展示,此处建议开发者在收到nativeExpressBannerAdViewRenderSuccess回调后展示Banner广告,可保证播放流畅和展示流畅,用户体验更好。

展示Banner广告

- (void)showBanner {
    [self.view addSubview:self.bannerView];
}

展示时机

在收到nativeExpressBannerAdViewRenderSuccess回调后再进行广告的展示,可保证播放流畅和展示流畅,用户体验更好。

- (void)nativeExpressBannerAdViewRenderSuccess:(BUNativeExpressBannerView *)bannerAdView {
 //在此回调方法中进行广告的展示,可保证播放流畅和展示流畅,用户体验更好。
}

dislike回调说明

- (void)nativeExpressAdView:(BUNativeExpressAdView *)nativeExpressAdView dislikeWithReason:(NSArray<BUDislikeWords *> *)filterWords {
    //【重要】需要在点击叉以后 在这个回调中移除视图,否则,会出现用户点击叉无效的情况
    [self.expressAdViews removeObject:nativeExpressAdView];
    NSUInteger index = [self.expressAdViews indexOfObject:nativeExpressAdView];
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:index inSection:0];
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
}

- (void)nativeExpressBannerAdViewDidRemoved:(BUNativeExpressBannerView *)nativeExpressAdView {
//【重要】若开发者收到此回调,代表穿山甲会主动关闭掉广告,广告移除后需要开发者对界面进行适配
  [UIView animateWithDuration:0.25 animations:^{
    nativeExpressAdView.alpha = 0;
  } completion:^(BOOL finished) {
    [nativeExpressAdView removeFromSuperview];
    self.bannerView = nil;
  }];
  self.selectedView.promptStatus = BUDPromptStatusDefault;
}

注意事项

  1. 避免出现先展示广告后请求数据的情况,Banner广告的展示是通过使用addSubview添加广告对象来进行广告展示
  2. 自行实现轮播功能时,建议和平台轮播间隔保持一致,请求间隔为30s~120s之间,避免广告请求过于频繁的情景,最小轮播间隔不小于2.5s
  3. 媒体平台选择轮播功能时,客户端进行广告的请求和展示操作即可,后续均由SDK内部实现
  4. 目前banner广告已支持内容底部或顶部居中显示,开发者可自行调整左右边距。

资源

详细接入可参照Demo中的BUDExpressBannerViewController类,广告加载请求部分可参照loadBannerWithSlotID方法,广告展示部分可参照showBanner方法

Did the content solve your problem?
Contact us