2015-06-18 4 views
5

Dies ist der Code ich verwende:Hiding iAd ADBannerView in Swift wenn Anzeige nicht geladen werden kann - keine Delegierten oder Beauftragten nicht implementiert 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")} 

Als ich die iAd-Rate nichts auf 0% füllen gesetzt wird gedruckt und ich bekomme diese Ausgabe von der Konsole:

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}

Antwort

4

Delegate Methoden nicht aufgerufen werden, wenn self.canDisplayBannerAds = true verwendet. Sie müssen einen ADBannerView selbst erstellen und seinen delegate für die Delegate-Methoden, die aufgerufen werden, beispielsweise bannerView.delegate = self festlegen.

self.canDisplayBannerAds = true ist ein kein Problem Art der Umsetzung iAd Banner. Es wird ein ADBannerView für Sie erstellen, es anzeigen, wenn es eine Anzeige erhält, und es ausblenden, wenn es keine Anzeige erhält. Bei der Implementierung Ihres iAd-Banners müssen Sie auf diese Weise keine Delegiertenmethoden implementieren.

So haben Sie zwei Möglichkeiten, entfernen var bannerView = ADBannerView() und verwenden Sie die iAd-Banner, das self.canDisplayBannerAds = true bietet, oder self.canDisplayBannerAds = true entfernen und beenden Sie Ihre eigene ADBannerView implementieren.

Wenn Sie sich entscheiden, Ihre eigene ADBannerView zu implementieren, überprüfen Sie meine Antwort here, ignorieren Sie einfach die AdMob-Implementierung.

+0

@Daniel_Storm Ok. Nur damit ich es richtig verstehe, können Sie bestätigen, dass wenn ich nur die self.canDisplayBannerAds = true verwende, der Bannerbereich sich verstecken würde, wenn er nicht geladen werden könnte? – dwinnbrown

+0

@dwinnbrown Ja, wenn "self.canDisplayBannerAds = true" verwendet wird, wenn das Banner keine Anzeige aus dem iAd-Netzwerk empfangen kann, wird es sich vom Bildschirm entfernen. Legen Sie in den Einstellungen Ihres Geräts die Füllrate auf 50% fest und sehen Sie sich die Anzeige "ADBannerView" an und blenden sie aus, wenn sie empfangen und keine Anzeigen erhalten. –

+0

Ich habe das versucht, aber ich habe immer noch ein weißes Rechteck, das, wenn es angeklickt wird, nur grau hervorhebt – dwinnbrown