2015-06-18 12 views
5

Jest to kod używam:Ukrywanie IAD ADBannerView w Swift gdy reklama nie można załadować - no delegat lub delegat nie implementuje 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")} 

kiedy ustawić iAd wypełnić stopy do 0% nic nie jest drukowane i uzyskać to wyjście z konsoli:

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}

Odpowiedz

4

metody delegat nie zostać wywołana przy użyciu self.canDisplayBannerAds = true. Musisz samodzielnie utworzyć numer ADBannerView i ustawić jego delegate dla wywołań metod, które mają zostać wywołane, na przykład bannerView.delegate = self.

self.canDisplayBannerAds = true to bez kłopotów sposób realizacji banerów iAd. Stworzy dla Ciebie ADBannerView, wyświetli go, jeśli otrzyma reklamę, i ukryje, jeśli nie otrzyma reklamy. Nie ma potrzeby implementowania metod delegowania podczas implementacji banera iAd w ten sposób.

Więc masz dwie opcje, usunąć var bannerView = ADBannerView() i używają sztandar IAD że self.canDisplayBannerAds = true udostępnia lub usunąć self.canDisplayBannerAds = true i zakończyć realizację własnych ADBannerView.

Jeśli zdecydujesz się wdrożyć własną ADBannerView sprawdź moją odpowiedź here, po prostu zignoruj ​​implementację AdMob.

+0

@ Daniel_Storm Ok. Tak, że dobrze rozumiem, czy możesz potwierdzić, czy po prostu użyję self.canDisplayBannerAds = true, czy sekcja bannerów się ukryje, jeśli nie załaduje się? – dwinnbrown

+0

@dwinnbrown Tak, w przypadku użycia 'self.canDisplayBannerAds = true', jeśli baner nie może odebrać reklamy z sieci iAd, zostanie przeniesiony poza ekran. Ustaw współczynnik wypełnienia na 50% w ustawieniach urządzenia i obserwuj wyświetlacz "ADBannerView" i ukryj go w momencie, gdy odbierze reklamę. –

+0

Próbowałem, ale nadal pozostaję z białym prostokątem, który po stuknięciu podkreśla tylko szary – dwinnbrown