这是我正在使用的代码:
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}
答案 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实施。