2015-06-18 21 views
5

這是我使用的代碼:隱藏的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: 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}

回答

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實施。

+0

@Daniel_Storm好的。只是爲了讓我能夠正確理解,您是否可以確認我是否使用self.canDisplayBannerAds = true,如果加載失敗,橫幅部分會隱藏起來? – dwinnbrown

+0

@dwinnbrown是的,如果橫幅無法從iAd網絡接收廣告,則使用'self.canDisplayBannerAds = true'時,它將自動離開屏幕。將設備中的填充率設置爲50%,然後觀看「ADBannerView」顯示並隱藏,因爲它收到並且無法接收廣告。 –

+0

我嘗試過,但我仍然留下一個白色矩形,當點擊時突出顯示灰色 – dwinnbrown