uz7
uz7

Reputation: 159

GADInterstitial presented too often

I am having problems with my interstitial ads popping up too often. The full screen ads comes on after every game over screen, meaning each time the player loses the ad pops up which i feel will get annoying. Is there a way to stop this happening after each failure to maybe after every 2 or 3 gameovers?

I have attached my code below, any help would be greatly appreciated.

  import UIKit
  import AVFoundation
  import GoogleMobileAds
  import Social

 class ViewController: UIViewController {

@IBOutlet var bannerView: GADBannerView!

var admobInterstitial : GADInterstitial?
var timerAds : NSTimer?

var player:AVAudioPlayer = AVAudioPlayer()

var score = 0

var timer = NSTimer()

var seconds = 8

var watch = true

var watch1 = true

var gameActive = true

var hiScore = 0

var counter = 1

var turn = 0

var timer_anim = NSTimer()

@IBOutlet var btn: UIButton!
@IBOutlet var scr: UILabel!

@IBOutlet var scoreLabel: UILabel!
@IBOutlet var again: UIButton!
@IBOutlet var highScore: UILabel!
@IBOutlet var gameTimer: UILabel!
@IBOutlet var startView: UIImageView!
@IBOutlet var startButton: UIButton!
@IBOutlet var game_over: UIImageView!
@IBOutlet var twBtn: UIButton!
@IBAction func twitterBtn(sender: AnyObject) {

    if SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter)
    {
        var twShare:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
        twShare.setInitialText("I dare you get a higher score than mine : ( \(score) ) GET it NOW on IOS : https://itunes.apple.com/us/app/oscar-cookie/id1099453391?mt=8")
        twShare.addImage(UIImage(named: "start.png"))
        self.presentViewController(twShare, animated: true, completion: nil)
    }
    else
    {
        var alert = UIAlertController(title: "Account", message: "Please login to Twitter to Tweet", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    }
}
@IBOutlet var fbBtn: UIButton!
@IBAction func facebookBtn(sender: AnyObject) {

    if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook)
    {
        var fbShare:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
        fbShare.setInitialText("I dare you get a higher score than mine : ( \(score) ) GET it NOW on IOS : https://itunes.apple.com/us/app/oscar-cookie/id1099453391?mt=8")
        fbShare.addImage(UIImage(named: "start.png"))
        self.presentViewController(fbShare, animated: true, completion: nil)
    }
    else
    {
        var alert = UIAlertController(title: "Account", message: "Please login to Facebook to share", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    }
}


@IBAction func startButtonFun(sender: AnyObject) {
    startButton.hidden = true
    startView.hidden = true
    btn.hidden = false
    player.pause()
}

@IBAction func playAgain(sender: AnyObject) {

    player.pause()

    //gameOverLbl.hidden = true
    scoreLabel.hidden = true
    again.hidden = true
    btn.hidden = false
    highScore.hidden = true
    scr.hidden = false
    game_over.hidden = true
    fbBtn.hidden = true
    twBtn.hidden = true
    gameActive = true

    watch = true

    score = 0
    scr.text = "0"
    gameTimer.text = "8"
    if watch1 == false
    {
    timer_anim.invalidate()
        watch1 = true
    }
}

@IBAction func button(sender: AnyObject) {


    if score % 5 == 0
    {
        let audioPath = NSBundle.mainBundle().pathForResource("chew2", ofType: "mp3")!
        do
        {
            try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath : audioPath))
            player.play()
        }
        catch
        {

        }
    }
    else
    {
    let audioPath = NSBundle.mainBundle().pathForResource("chew1", ofType: "mp3")!
    do
        {
            try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath : audioPath))
            player.play()
        }
    catch
        {

        }
    }

    keepPlaying()
}


  // func to locate the bottong randomly to all sizes
func randomLocating () {


    var randomH = Int()
    var randomW = Int()


    if UIDevice().userInterfaceIdiom == .Phone {
        switch UIScreen.mainScreen().nativeBounds.height {
        case 480:
            //print("iPhone Classic")
            randomH = Int(arc4random_uniform(380))
            randomW = Int(arc4random_uniform(260))
            while randomH < 50 || randomW < 40
            {
                randomH = Int(arc4random_uniform(380))
                randomW = Int(arc4random_uniform(260))
            }
        case 960:
            //print("iPhone 4 or 4S")

            randomH = Int(arc4random_uniform(380))
            randomW = Int(arc4random_uniform(270))
            while randomH < 50 || randomW < 40
            {
                randomH = Int(arc4random_uniform(380))
                randomW = Int(arc4random_uniform(270))
            }

        case 1136:
          //  print("iPhone 5 or 5S or 5C")
            randomH = Int(arc4random_uniform(520))
            randomW = Int(arc4random_uniform(300))
            while randomH < 40 || randomW < 40
            {
                randomH = Int(arc4random_uniform(520))
                randomW = Int(arc4random_uniform(300))
            }
        case 1334:
           // print("iPhone 6 or 6S")
            randomH = Int(arc4random_uniform(550))
            randomW = Int(arc4random_uniform(300))
            while randomH < 35 || randomW < 40
            {
                randomH = Int(arc4random_uniform(550))
                randomW = Int(arc4random_uniform(300))
            }
        case 2208:
           // print("iPhone 6+ or 6S+")
            randomH = Int(arc4random_uniform(700))
            randomW = Int(arc4random_uniform(350))
            while randomH < 40 || randomW < 40
            {
                randomH = Int(arc4random_uniform(700))
                randomW = Int(arc4random_uniform(350))
            }
        default:
            print("unknown")
        }
    }
    else if UIDevice().userInterfaceIdiom == .Pad {
        switch UIScreen.mainScreen().nativeBounds.height {
        case 1024:
           //print("iPad Classic")
            randomH = Int(arc4random_uniform(950))
            randomW = Int(arc4random_uniform(700))
            while randomH < 50 || randomW < 40
            {
                randomH = Int(arc4random_uniform(950))
                randomW = Int(arc4random_uniform(700))
            }
        case 2048:
            //print("iPad Retina")
            randomH = Int(arc4random_uniform(700))
            randomW = Int(arc4random_uniform(350))
            while randomH < 100 || randomW < 100
            {
                randomH = Int(arc4random_uniform(700))
                randomW = Int(arc4random_uniform(350))
            }

        default:
            print("unknown")
        }
    }

    btn.frame.origin = CGPoint(x: randomW, y: randomH)

}

 // func to end the game when someone loses
func endGame() {

    btn.hidden = true
    scoreLabel.text = "\(score)"



    if hiScore < score
    {
        hiScore = score
        highScore.text = "\(hiScore)"
    }
    else
    {
        highScore.text = "\(hiScore)"
    }
    NSUserDefaults.standardUserDefaults().setObject(hiScore, forKey: "high")

    scoreLabel.hidden = false
    again.hidden = false
    highScore.hidden = false
    scr.hidden = true
    game_over.hidden = false
    fbBtn.hidden = false
    twBtn.hidden = false


    let audioPath = NSBundle.mainBundle().pathForResource("end", ofType: "mp3")!
    do
    {
        try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath : audioPath))
        player.play()
    }
    catch
    {

    }

}

func animating()
{
    if counter < 5
    {
        counter += 1
    }


    startView.image = UIImage(named: "start-\(counter).png")
}


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //gameOverLbl.hidden = true
    scoreLabel.hidden = true
    again.hidden = true
    highScore.hidden = true
    btn.hidden = true
    game_over.hidden = true
    game_over.hidden = true
    fbBtn.hidden = true
    twBtn.hidden = true

    if watch1 == true
    {
        timer_anim = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector("animating"), userInfo: nil, repeats: true)
        watch1 = false
    }

    if NSUserDefaults.standardUserDefaults().objectForKey("high") != nil
    {

    var returnHigh = NSUserDefaults.standardUserDefaults().objectForKey("high") as! Int
    hiScore = returnHigh
    }
    else
    {

    }

    let audioPath = NSBundle.mainBundle().pathForResource("start", ofType: "mp3")!
    do
    {
        try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath : audioPath))
        player.play()
    }
    catch
    {

    }

    self.bannerView.adUnitID = "ca-app-pub-8964973200415729/4584433890"
    self.bannerView.rootViewController = self
    var request:GADRequest = GADRequest()
    self.bannerView.loadRequest(request)


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

}

/// to make the screen not rotate

override func shouldAutorotate() -> Bool {
    return false
}

func keepPlaying()
{
    score += 1
    scr.text = "\(score)"
    randomLocating()

    if score < 5
    {
        seconds = 8
    }
    else
    {
        seconds = 5
    }

    if watch == true
    {
        timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("click1"), userInfo: nil, repeats: true)
    }
    watch = false


    gameTimer.text = "\(seconds)"
}

func click1 ()
{
    gameTimer.text = "\(seconds)"

    if seconds == 0 && gameActive == false
    {
        timer.invalidate()
        endGame()
        btn.hidden = true
        turn += 1
        if turn == 1
        {
            admobInterstitial = createAndLoadInterstitial()
            timerAds = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("presentInterstitial"), userInfo: nil, repeats: false)

            turn = 0
        }

    }
    else if seconds == 1
    {
       btn.hidden = true
        gameActive = false
    }
    else
    {
        btn.hidden = false
    }


    seconds -= 1
}

func createAndLoadInterstitial()->GADInterstitial {
    var interstitial = GADInterstitial(adUnitID: "ca-app-pub-8964973200415729/8720255492")
    ///interstitial.delegate = self
    interstitial.loadRequest(GADRequest())
    return interstitial
}

func presentInterstitial() {
    if let isReady = admobInterstitial?.isReady {
        admobInterstitial?.presentFromRootViewController(self)
    }
}

func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
    print("interstitialDidFailToReceiveAdWithError:\(error.localizedDescription)")
    admobInterstitial = createAndLoadInterstitial()
}



 }

Upvotes: 0

Views: 81

Answers (1)

Daniel Storm
Daniel Storm

Reputation: 18898

Simply change your turn counter. Instead of if turn == 1 change it to something else. Want an ad every 3 gameovers? Change it to 3. For example:

turn = turn + 1
if turn == 3 {
    admobInterstitial = createAndLoadInterstitial()
    timerAds = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: #selector(ViewController.presentInterstitial), userInfo: nil, repeats: false)
    turn = 0
}

Upvotes: 1

Related Questions