GADInterstitial经常出现

时间:2016-09-15 11:24:20

标签: swift admob

我的插页式广告经常出现问题。全屏广告在屏幕上的每个游戏之后都会出现,这意味着每次播放器丢失广告弹出时我觉得会很烦人。有没有办法在每次失败之后阻止这种情况发生,也许在每2或3次游戏结束后?

我已在下面附上我的代码,非常感谢任何帮助。

  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()
}



 }

1 个答案:

答案 0 :(得分:1)

只需更改您的turn计数器即可。而不是if turn == 1将其更改为其他内容。想要每三个游戏中添加一个广告吗?将其更改为3.例如:

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