当广告加载失败时在 Swift 中隐藏 iAd ADBannerView - 没有委托或委托未实现 didFailToReceiveAdWithError
Posted
技术标签:
【中文标题】当广告加载失败时在 Swift 中隐藏 iAd ADBannerView - 没有委托或委托未实现 didFailToReceiveAdWithError【英文标题】:Hiding iAd ADBannerView in Swift when ad fails to load - no delegate or delegate does not implement didFailToReceiveAdWithError 【发布时间】:2015-06-18 20:57:07 【问题描述】:这是我正在使用的代码:
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 Code=5“操作无法完成。横幅视图可见但没有内容”UserInfo=0x7fd3fd3335e0 ADInternalErrorCode =5, NSLocalizedFailureReason=Banner 视图可见但没有内容,ADInternalErrorDomain=ADErrorDomain
【问题讨论】:
【参考方案1】:使用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 实施。
【讨论】:
@Daniel_Storm 好的。为了让我正确理解,您能否确认如果我只使用 self.canDisplayBannerAds = true 横幅部分在加载失败时会隐藏? @dwinnbrown 是的,当使用self.canDisplayBannerAds = true
时,如果横幅无法接收来自 iAd 网络的广告,它会将自身移出屏幕。在您设备上的设置中将填充率设置为 50%,然后观察 ADBannerView
在接收和接收广告时显示和隐藏。
@dwinnbrown 您是否偶然在故事板中添加了ADBannerView
?如果是,请删除它。
@Daniel_Storm 啊,就是这样,非常感谢你,它现在工作得很好!
@DanielStorm 一直以来我的横幅都变白了,现在我知道为什么了!以上是关于当广告加载失败时在 Swift 中隐藏 iAd ADBannerView - 没有委托或委托未实现 didFailToReceiveAdWithError的主要内容,如果未能解决你的问题,请参考以下文章