Help Center/Details/

iOS自渲染插屏广告

简介

自渲染插屏:使用场景为应用功能自然体验中断时,例如暂停视频播放,游戏关卡之间。插屏广告不应突然出现,不应干扰用户使用应用的正常流程,例如应用加载,退出应用或者游戏过程中。

支持的广告尺寸:

  • 大图(宽高比:1.78的图片)
  • 小图(宽高比:1.52的图片)
  • 组图(三张宽高比:1.52的图片)

权限

自渲染插屏:已回收,不再提供创建

使用说明

自渲染插屏广告使用BUNativeAd对象调用loadAdData请求广告,通过设置BUNativeAdDelegate代理,获取广告相关素材、以及点击等回调。

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

BUNativeAd

请求广告时需要传入广告位对象,广告位对象创建时必须传入广告位ID及广告基本配置BUAdSlotBUSize

必传参数:

字段定义 字段名称 字段类型 备注
BUAdSlot / / 基本配置
BUSize / / 请求广告图片的尺寸
slotID 代码位 NSString 代码位ID

使用BUAdSlot、BUSize创建广告基本信息,使用BUNativeAd调用loadAdData请求广告

 BUSize *imgSize1 = [[BUSize alloc] init];
 imgSize1.width = 1080;
 imgSize1.height = 1920;
 BUAdSlot *slot1 = [[BUAdSlot alloc] init];
 slot1.ID = self.viewModel.slotID;
 slot1.AdType = BUAdSlotAdTypeInterstitial;
 slot1.position = BUAdSlotPositionTop;
 slot1.imgSize = imgSize1;
 slot1.isOriginAd = YES;
 BUNativeAd *nad = [[BUNativeAd alloc] initWithSlot:slot1];
 nad.rootViewController = self;
 nad.delegate = self;
 self.nativeAd = nad;
 [nad loadAdData];

接收广告加载结果

BUNativeAdDelegate

回调方法 注释
nativeAd: didFailWithError: 返回的错误码(error)表示广告加载失败的原因,所有错误码详情请见链接。Link
nativeAdDidLoad: 广告加载成功回调 建议在此回调方法中进行数据的插入处理

####BUNativeAdDelegate回调说明

回调方法 注释
nativeAdDidLoad: 广告物料加载成功回调
nativeAd: didFailWithError: 返回的错误码(error)表示广告加载失败的原因,所有错误码详情请见链接。Link
nativeAdDidBecomeVisible: 广告显示回调
nativeAdDidCloseOtherController: interactionType: 此回调在广告跳转到其他控制器时,该控制器被关闭时调用interactionType:此参数可区分是打开的appstore/网页/视频广告详情页面
nativeAdDidClick:withView: 点击回调方法
nativeAd: dislikeWithReason: dislike按钮点击回调,需要在此回调方法中进行响应的数据处理

通过设置BUNativeAdDelegate代理,获取广告关闭等回调。其他代理方法可参见DemoBUDNativeInterstitialViewController

自渲染插屏视频广告获取数据赋值时机

- (void)nativeAdDidLoad:(BUNativeAd *)nativeAd {
    if (!nativeAd.data) { return; }
    if (nativeAd.data.imageAry.count) {
        self.titleLable.text = nativeAd.data.AdTitle;
        
        BUImage *adImage = nativeAd.data.imageAry.firstObject;
        CGFloat contentWidth = CGRectGetWidth(self.view.bounds) - 2*leftEdge - 2*5;
        CGFloat imageViewHeight = contentWidth * adImage.height/ adImage.width;
        self.interstitialAdView.frame = CGRectMake(5, titleHeight, contentWidth, imageViewHeight);
        [self layoutViewsWithimageViewHeight:imageViewHeight];
        
        if (adImage.imageURL.length) {
            [self.interstitialAdView setImageWithURL:[NSURL URLWithString:adImage.imageURL] placeholderImage:nil];
        }
        
        self.describeLable.frame = CGRectMake(13, self.interstitialAdView.bottom + 5, self.describeLable.width, self.describeLable.height);
        self.describeLable.text = nativeAd.data.AdDescription;
        
        self.dowloadButton.frame = CGRectMake((self.whiteBackgroundView.width - self.dowloadButton.width)/2, self.describeLable.bottom + 5, self.dowloadButton.width, self.dowloadButton.height);
        [self.dowloadButton setTitle:nativeAd.data.buttonText forState:UIControlStateNormal];
        
        [self.nativeAd registerContainer:self.whiteBackgroundView    withClickableViews:@[self.titleLable,self.interstitialAdView,self.describeLable,self.dowloadButton]];
        [self.relatedView refreshData:nativeAd];
        
        [self addAccessibilityIdentifier];
    }
}

注意事项

1、在物料加载成功方法里获取相关广告信息赋值后,需调用registerContainer:withClickableViews:clickableViews注册绑定点击的View并刷新数据源refreshData:。
2、每次获取物料信息后需要刷新调用refreshData:方法

Did the content solve your problem?
Contact us