-1

I have been looking everywhere on the web for tutorials on how to include iad banners in my spritekit game. For example I looked at this: Swift SpriteKit iAd but I got some errors, probaly due to the new swift 2 and swift 1. But could you explain what to do to include IAD in my spritekit game. Thank you in advance.

Community
  • 1
  • 1
  • You may find this interesting to read : https://developer.apple.com/news/?id=01152016a – Whirlwind Apr 14 '16 at 22:26
  • Hey thanks again for your help yesterday. Are you actually sure about this with iAds. I have seen loads of people mentioning this on SO. So far tho the news are very vague about this. Some say it only affects developers that want to advertise their own apps. Some say all is shutting down, including the APIs. Some say we get an automated service in June. Do we actually now for fact that Apple will reject new apps that use iAds to just show ads. (Not to use the app network to create new ads). – crashoverride777 Apr 15 '16 at 11:06
  • iAD is completely shutting down. – Loanb222 May 15 '16 at 18:36

1 Answers1

0

Make sure you have this code in your GameViewController. I just tested this out and it works for landscape and portrait mode.

 class GameViewController: UIViewController, ADBannerViewDelegate {

//--------------------
//-----iAd Banner-----
//--------------------
var SH = UIScreen.mainScreen().bounds.height
let transition = SKTransition.fadeWithDuration(0)
var UIiAd: ADBannerView = ADBannerView()

override func viewWillAppear(animated: Bool) {
    let BV = UIiAd.bounds.height
    UIiAd.delegate = self
    UIiAd.frame = CGRectMake(0, SH + BV, 0, 0)
    self.view.addSubview(UIiAd)
}

override func viewWillDisappear(animated: Bool) {
    UIiAd.delegate = nil
    UIiAd.removeFromSuperview()
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(0.5) // Time it takes the animation to complete
    UIiAd.alpha = 1 // Fade in the animation
    UIView.commitAnimations()
}

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

func showBannerAd() {
    UIiAd.hidden = false
    let BV = UIiAd.bounds.height

    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(0.5) // Time it takes the animation to complete
    UIiAd.frame = CGRectMake(0, SH - BV, UIScreen.mainScreen().bounds.width, 0)
    UIView.commitAnimations()
}

func hideBannerAd() {
    UIiAd.hidden = true
    let BV = UIiAd.bounds.height

    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(0.5) // Time it takes the animation to complete
    UIiAd.frame = CGRectMake(0, SH + BV, UIScreen.mainScreen().bounds.width, 0) //Beginning position of the ad
    UIView.commitAnimations()
}



//--------------------
//-----View Loads-----
//--------------------
override func viewDidLoad() {
    super.viewDidLoad()
    //iAd Control
    self.UIiAd.hidden = true
    self.UIiAd.alpha = 0
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.hideBannerAd), name: "hideadsID", object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.showBannerAd), name: "showadsID", object: nil)
}

Add the following outside your class declarations. It doesn't matter what class you go to, as long as it's global so you can access them from any game scene.

 //-------------
 //-----Ads-----
 //-------------
 func showAds() {
     NSNotificationCenter.defaultCenter().postNotificationName("showadsID", object: nil)
 }
 func hideAds() {
     NSNotificationCenter.defaultCenter().postNotificationName("hideadsID", object: nil)
 }

And then whenever you want to show ads in the specific scene or whenever, just call the "showAds()" function or "hideAds()" to hide them.

Hedylove
  • 1,724
  • 16
  • 26