当广告加载失败时在 Swift 中隐藏 iAd ADBannerView - 没有委托或委托没有实现 didFailToReceiveAdWithError
Hiding iAd ADBannerView in Swift when ad fails to load - no delegate or delegate does not implement 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: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x7fd3fd3335e0 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content, ADInternalErrorDomain=ADErrorDomain}
使用 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 实施。
这是我使用的代码:
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: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x7fd3fd3335e0 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content, ADInternalErrorDomain=ADErrorDomain}
使用 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 实施。