当广告载入失败时,在Swift中隐藏iAd ADBannerView – 没有委托或委托没有实现didFailToReceiveAdWithError

这是我正在使用的代码:

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 :):错误域= ADErrorDomain代码= 5“操作无法完成横幅视图是可见的,但没有内容”UserInfo = 0x7fd3fd3335e0 {ADInternalErrorCode = 5, NSLocalizedFailureReason =横幅视图可见,但没有内容,ADInternalErrorDomain = ADErrorDomain}

使用self.canDisplayBannerAds = true时, 不会调用委托方法。 您需要自己创build一个ADBannerView并为要调用的委托方法设置其delegate ,例如bannerView.delegate = self

self.canDisplayBannerAds = true是实现iAd横幅的一种毫不麻烦的方式。 它将为您创build一个ADBannerView ,如果它收到广告则显示该广告,如果没有收到广告,则将其隐藏。 以这种方式实现iAd横幅时,不需要实施委托方法。

所以你有两个select,删除var bannerView = ADBannerView()并使用self.canDisplayBannerAds = true提供的iAd横幅,或者删除self.canDisplayBannerAds = true并完成自己的ADBannerView

如果您决定实施自己的ADBannerView请查看我的答案,只需忽略AdMob实施。