当广告加载失败时在 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的主要内容,如果未能解决你的问题,请参考以下文章

当 iAds 失败时加载 Admob

隐藏/切换 iAd 和 AdMob

隐藏/切换 iAd 和 AdMob

UITableViewController 中的 iAd

如何在滚动swift3时在UICollectionView中隐藏第0行的锁定图像

iAd 和 AdMob 广告未在已发布的 iPhone 应用程序中显示