2014-07-11 9 views
5

Witam faceci Próbowałem zaimplementować ADBannerView ze starymi metodami, takimi jak Objective C, ale nie powiodło się. Wszystko działa, ale reklamy się nie pojawiły, pozostaje puste pole.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() 
} 

Ktoś, kto już próbował iAd na Swift?

+0

Witam, staram się z niego korzystać. Znalazłem następujące rzeczy: https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Reference/ADBannerViewDelegate_Ref/ –

+0

dodaj delegata na szczycie klasy przez ", ADBannerViewDelegate" zamiast starego sposobu "" –

+0

Polecam ci używać zamknięć dla twoich animacji UIView: 'UIView.animateWithDuration (1) {/ * animacje ... * /}' –

Odpowiedz

17

Znalazłem rozwiązanie, jak go wdrożyć. (Można używać wewnątrz każdej metody „banner.alpha 1,0” lub innych rzeczy też.)

//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

Działa nawet bez protokołu @objc ... {} –

+0

Nie mogę ukryć reklamy za pomocą tego. self.adBannerView.hidden = true Każdy pomysł? –

+0

@RohitGoyal Testowałem go innym razem i nadal działa idealnie dla mnie z Xcode 6.0 (6A313). Możesz sprawdzić, czy self.adBannerView! = Null i debugować go.Bez żadnego kodu nie możemy niestety przeprosić. –

1

Pan T odpowiedź zawiera wiele niepotrzebnych kodu.

Wszystko czego potrzebujesz to ta część, aby wyświetlać reklamy w kontrolerze:

override func viewDidLoad() { 
     super.viewDidLoad() 

     canDisplayBannerAds = true 
} 

A kiedy nie trzeba reklamy, canDisplayBannerAds = false.

Co robi - zawijanie kontrolera do innego kontrolera z banerem reklamowym na dole. Ta funkcja jest dostępna od iOS7.

Nie można uzyskać z nim wiadomości delegowanych, więc jeśli ich potrzebujesz - powinieneś zastąpić je zmienną instancji ADBannerView.

+0

Brak metod delegowania? Możesz to zrobić w taki sposób, jaki sugerujesz, ale wyświetlasz reklamę bez ukończonego ładowania - nie jest to miłe dla użytkownika. A jeśli użytkownik kliknie reklamę, musisz zatrzymać coś w swojej aplikacji lub grze, co jest możliwe tylko za pośrednictwem metod delegowanych. –

+0

@ Mr.T Nie zakończyło się ładowanie? Co to dokładnie oznacza? – Shmidt

+0

@ Mr.T Twój downvoting pokazuje, że nie rozumiesz, czym jest 'canDisplayBannerAds'''. – Shmidt

3

Jeśli używasz iOS 7, metody rozszerzenie i właściwości zostały dodane do UIViewController wspierać obsługę iAd:

Zobacz

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

Aby pokazać IAD trzeba najpierw dodać iAd framework, przejdź do właściwości projektu, zakładka ogólne, dodaj iAd.framework w sekcji Powiązane ramy i biblioteki.

W kontrolerze widoku zaimportuj iAd, aby uzyskać dostęp do rozszerzeń iAd. I wreszcie w viewDidLoad, ustaw self.canDisplayBannerAds = true.

Aby usunąć reklamy, ustaw canDisplayBannerAds do fałszywego

nocie nie ma potrzeby tworzenia AdBannerView w scenorys lub programowo i nie ma potrzeby do kontrolera w celu wdrożenia AdViewDelegate.

import UIKit 
import iAd 

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

Praca! Rewizja – Zl3n