Swift - ADBannerView

前端 未结 3 707
眼角桃花
眼角桃花 2021-01-13 01:41

Hi guys I tryed to implement ADBannerView with the old way like Objective C but unsuccessfull. Everythings work but the advertisments didn\'t show up, it stays a blank field

相关标签:
3条回答
  • 2021-01-13 01:57

    If you are using iOS 7, extension methods and properties have been added to UIViewController to support handling of iAd:

    See

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

    To show an iAd you first need to add the iAd framework, go to the projects properties, general tab, add the iAd.framework in the Linked framework and libraries section.

    In your view controller, import iAd to access the iAd extensions. And finally in viewDidLoad, set self.canDisplayBannerAds = true.

    To remove ads, set canDisplayBannerAds to false

    Note there is no need to create an AdBannerView in the story board or programmatically and there is no need for your view controller to implement the AdViewDelegate.

    import UIKit
    import iAd
    
    class ViewController : UIViewController
    {
        override func viewDidLoad()
        {
            super.viewDidLoad()
            //That's it
            self.canDisplayBannerAds = true
        }
    }
    
    0 讨论(0)
  • 2021-01-13 02:08

    I've found a solution, how to implement it. (You can use inside each method "banner.alpha 1.0" or other things, too.)

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

    0 讨论(0)
  • 2021-01-13 02:11

    Mr. T answer contains a lot of useless code.

    All you need is this part to show ads in your controller:

    override func viewDidLoad() {
          super.viewDidLoad()
    
          canDisplayBannerAds = true
    }
    

    And when you don't need ads, you canDisplayBannerAds = false.

    What it does — wrapping your controller into another controller with ad banner at the bottom. This feature is available since iOS7.

    It's not possible to get delegate messages with it, so if you need it — you should replace it with ADBannerView instance variable.

    0 讨论(0)
提交回复
热议问题