2014-07-11 9 views
5

Hallo Leute Ich habe versucht ADBannerView mit dem alten Weg wie Objective C zu implementieren, aber nicht erfolgreich. Alles funktioniert, aber die Werbung ist nicht aufgetaucht, es bleibt ein leeres Feld.Swift - ADBannerView

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(1) 
    banner.alpha = 1 
    UIView.commitAnimations() 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(1) 
    banner.alpha = 0 
    UIView.commitAnimations() 
} 

Wer hat schon auf Swift iAdd?

+0

Hallo, ich versuche es auch zu verwenden. Ich habe Folgendes gefunden: https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Reference/ADBannerViewDelegate_Ref/ –

+0

Fügen Sie den Delegaten über Ihre Klasse hinzu, indem Sie ", ADBannerViewDelegate" anstelle des alten Wegs verwenden "" –

+0

Ich würde Ihnen empfehlen, Closures für Ihre UIView-Animationen zu verwenden: 'UIView.animateWithDuration (1) {/ * animations ... * /}' –

Antwort

17

Ich habe eine Lösung gefunden, wie man es implementiert. (Sie können in jedem Verfahren "banner.alpha 1.0" oder andere Dinge auch.)

//import ... your normal imports as UIKit etc. 
import iAd 

class YourClassViewController: UIViewController, ADBannerViewDelegate { 

    @IBOutlet var adBannerView: ADBannerView //connect in IB connection inspector with your ADBannerView 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.canDisplayBannerAds = true 
     self.adBannerView.delegate = self 
     self.adBannerView.hidden = true //hide until ad loaded 
    } 

    func bannerViewWillLoadAd(banner: ADBannerView!) { 
     NSLog("bannerViewWillLoadAd") 
    } 

    func bannerViewDidLoadAd(banner: ADBannerView!) { 
     NSLog("bannerViewDidLoadAd") 
     self.adBannerView.hidden = false //now show banner as ad is loaded 
    } 

    func bannerViewActionDidFinish(banner: ADBannerView!) { 
     NSLog("bannerViewDidLoadAd") 

     //optional resume paused game code 

    } 

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { 
     NSLog("bannerViewActionShouldBegin") 

     //optional pause game code 

     return true 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
     NSLog("bannerView") 
    } 

    //... your class implementation code 

} 

See the following answer, on how to do it without IBBuilder!

+1

Es funktioniert auch ohne @objc Protokoll ... {} –

+0

Ich bin nicht in der Lage, Anzeige mit diesem zu verstecken. self.adBannerView.hidden = true Irgendeine Idee? –

+0

@RohitGoyal Ich habe es ein anderes Mal getestet und es funktioniert immer noch perfekt für mich mit Xcode 6.0 (6A313). Sie könnten prüfen, ob self.adBannerView! = Null ist und debuggen.Ohne Code können wir Ihnen nicht entschuldigen. –

1

Mr. T Antwort eine Menge nutzloser Code enthält.

Alles, was Sie benötigen, ist dieses Teil-Anzeigen in Ihrem Controller zeigen:

override func viewDidLoad() { 
     super.viewDidLoad() 

     canDisplayBannerAds = true 
} 

Und wenn Sie Anzeigen nicht benötigen, können Sie canDisplayBannerAds = false.

Was es tut - wickeln Sie Ihren Controller in einen anderen Controller mit Werbebanner am unteren Rand. Diese Funktion ist seit iOS7 verfügbar.

Es ist nicht möglich, Delegat Nachrichten mit ihm zu erhalten, wenn Sie es brauchen - sollten Sie es ersetzen durch ADBannerView Instanzvariable.

+0

Keine Delegiertenmethoden? Nun, Sie können es so machen, wie Sie es vorschlagen, aber dann zeigen Sie eine Anzeige ohne fertig geladen zu werden - nicht so nett für den Benutzer. Und wenn der Nutzer auf die Anzeige klickt, müssen Sie etwas in Ihrer App oder Ihrem Spiel stoppen, das ist nur mit Delegate-Methoden möglich. –

+0

@ Mr.T Ohne fertig geladen? Was bedeutet es genau? – Shmidt

+0

@ Mr.T Ihr Downvoting zeigt, dass Sie nicht verstehen, was '' canDisplayBannerAds''' ist. – Shmidt

3

Wenn Sie iOS 7, Erweiterungsmethoden und Eigenschaften verwenden wurden UIViewController hinzugefügt Umgang mit iAd zu unterstützen:

Siehe

https://developer.apple.com/library/prerelease/ios/documentation/iAd/Reference/UIViewController_iAd_Additions/index.html

eine iAd Um zu zeigen Sie zuerst die hinzufügen müssen iAd Framework, gehen Sie zu den Eigenschaften des Projekts, Registerkarte Allgemein, fügen Sie das iAd.framework im Abschnitt Verknüpfter Framework und Bibliotheken hinzu.

Importieren Sie iAd in Ihrem View-Controller, um auf die iAd-Erweiterungen zuzugreifen. Und schließlich in viewDidLoad set self.canDisplayBannerAds = true.

Anzeigen zu entfernen, setzen canDisplayBannerAds auf false

Hinweis besteht keine Notwendigkeit, eine AdBannerView in der Storyboard oder programmatisch und es besteht keine Notwendigkeit für Ihre View-Controller zu erstellen, die AdViewDelegate zu implementieren.

import UIKit 
import iAd 

class ViewController : UIViewController 
{ 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     //That's it 
     self.canDisplayBannerAds = true 
    } 
} 
+0

Arbeiten! Upvoted – Zl3n