广告无法加载时隐藏在Swift中的iAd ADBannerView - 没有委托或委托没有实现didFailToReceiveAdWithError

时间:2015-06-18 20:57:07

标签: ios swift iad

这是我正在使用的代码:

var bannerView = ADBannerView()
self.canDisplayBannerAds = true

//show ad banner if an ad loads
func bannerViewDidLoadAd(banner: ADBannerView!)
{bannerView.hidden = false}

//hide ad banner if the ad fails to load
func bannerViewFailsToLoadAd(banner: ADBannerView!,didFailToReceiveAdWithError error: NSError!)
{bannerView.hidden = true
 println("failed to receive ad")}

当我将iAd填充率设置为0%时,没有打印任何内容,我从控制台获得此输出:

  

ADBannerView:未处理的错误(没有委托或委托没有实现didFailToReceiveAdWithError :):错误Domain = ADErrorDomain Code = 5“操作无法完成。横幅视图可见但没有内容”UserInfo = 0x7fd3fd3335e0 {ADInternalErrorCode = 5,NSLocalizedFailureReason =横幅视图可见,但没有内容,ADInternalErrorDomain = ADErrorDomain}

1 个答案:

答案 0 :(得分:4)

使用self.canDisplayBannerAds = true时,代理方法将。您需要自己创建ADBannerView并为要调用的委托方法设置其delegate,例如bannerView.delegate = self

self.canDisplayBannerAds = true是实施iAd横幅的无麻烦方式。它会为您创建ADBannerView,如果收到广告则会显示,如果没有收到广告,则会隐藏它。以这种方式实现iAd横幅时,无需实现委托方法。

因此,您有两个选项,移除var bannerView = ADBannerView()并使用self.canDisplayBannerAds = true提供的iAd横幅广告,或删除self.canDisplayBannerAds = true并完成您自己的ADBannerView

如果您决定实施自己的ADBannerView检查我的回答here,请忽略AdMob实施。