2014-07-11 31 views
5

嗨,大家好我嘗試用像Objective C這樣的舊方式來實現ADBannerView,但是不成功。各種各樣的工作,但廣告沒有出現,它仍然是一個空白的領域。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() 
} 

任何已經在Swift上試用iAd的人?

+0

你好,我也嘗試使用它。我發現了以下內容:https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Reference/ADBannerViewDelegate_Ref/ –

+0

通過「,ADBannerViewDelegate」而不是舊方法將代表添加到類的頂部「」 –

+0

我建議你使用閉包爲你的UIView動畫:'UIView.animateWithDuration(1){/ *動畫... * /}' –

回答

17

我發現了一個解決方案,如何實現它。 (您可以在每個方法「banner.alpha 1.0」或其他東西里面用了。)

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

即使沒有@objc協議,它也能正常工作... {} –

+0

我無法使用此隱藏廣告。 self.adBannerView.hidden = true 任何想法? –

+0

@RohitGoyal我已經測試了另一次,它仍然適用於Xcode 6.0(6A313)。你可以檢查self.adBannerView!= null並調試它。沒有任何代碼,我們無法幫助對不起。 –

1

T先生的回答包含了很多無用的代碼。

所有你需要的是這部分顯示在你的控制器廣告:

override func viewDidLoad() { 
     super.viewDidLoad() 

     canDisplayBannerAds = true 
} 

而且當你不需要的廣告,你canDisplayBannerAds = false

它做了什麼 - 將控制器封裝到另一個控制器中,底部帶有廣告條。此功能自iOS7起可用。

使用它不可能獲得委託消息,所以如果您需要它 - 您應該用ADBannerView實例變量替換它。

+0

沒有委託方法?那麼你可以這樣做,你建議,但是然後你顯示一個廣告沒有完成加載 - 不是很好的用戶。而且,如果用戶點擊廣告,則必須停止應用或遊戲中的某些內容,而只能使用委託方法。 –

+0

@ Mr.T沒有完成加載?這究竟意味着什麼? – Shmidt

+0

@ Mr.T你的投票表明你不明白'canDisplayBannerAds'是什麼。 – Shmidt

3

如果您使用的是iOS 7,擴展方法和屬性已被添加到UIViewController的支持iAd的處理:

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

要顯示的iAd系統首先需要添加iAd框架,轉至項目屬性,常規選項卡,在鏈接框架和庫部分添加iAd.framework。

在您的視圖控制器中,導入iAd以訪問iAd擴展。最後在viewDidLoad中,設置self.canDisplayBannerAds = true。

要刪除廣告,設置canDisplayBannerAds假

注意有沒有必要建立在故事板上的AdBannerView或程序,也沒有必要爲您的視圖控制器來實現AdViewDelegate。

import UIKit 
import iAd 

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

工作! Upvoted – Zl3n