在其他场景中显示非页内广告 - Admob,SpriteKit,Swift

时间:2016-08-01 03:02:18

标签: ios swift sprite-kit admob interstitial

我如何每x次用户死亡时显示来自admob的插页式广告,或者每次用户执行按下按钮的x次广告?这就是我通过简单的if语句在我的GameScene上展示插页式广告以及广告展示次数有限的方式。

2 个答案:

答案 0 :(得分:3)

只有拥有GoogleMobileAds.sdk且已将googlemobileads模块导入GameViewController,以及GameScene或GameOverScene时,此功能才有效。

我将向您展示跨场景广告实施并以编程方式限制广告展示次数。

首先,在你的GameViewController中:

import GoogleMobileAds


class GameViewController: UIViewController, GADInterstitialDelegate {



var myAd = GADInterstitial()


override func viewDidLoad() {
    super.viewDidLoad()


    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.loadAndShow), name: "loadAndShow", object: nil)

}

在GameViewController底部创建两个函数:

func loadAndShow() {



    myAd = GADInterstitial()
    let request = GADRequest()
    myAd.setAdUnitID("ca-app-pub-3940256099942544/4411468910")
    myAd.delegate = self
    myAd.loadRequest(request)



}

func interstitialDidReceiveAd(ad: GADInterstitial!) {

    if (self.myAd.isReady) {

        myAd.presentFromRootViewController(self)



    }



}

你完成了GameViewController。无论你需要什么,现在去GameOverScene或GameScene。

创建一个全局int变量:

var playCount = Int()

在你的DidMoveToView中说:

playCount = 1

这部分有点令人困惑,有点,不是真的。转到你的touchesBegan并找到你按下按钮时向按钮添加动作的位置。例如,resetGame按钮重置场景。在那里添加并增加playButton Int,如下所示:

  override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    for touch in touches{



        let location = touch.locationInNode(self)
        if resetGame.containsPoint(location) {
            restartScene()

            playCount += 1


        }

最后一步。将这两个功能添加到要在其中显示插页式广告的场景底部:

func displayAd() {



 NSNotificationCenter.defaultCenter().postNotificationName("loadAndShow", object: nil)


}

func checkAd() {


    if playCount % 4 == 0 {

        displayAd()

    }

}

}

现在,每当用户按下重置游戏按钮或第四次时,就会显示一个插页式广告。我希望这会有所帮助。

编辑:我忘了告诉你调用checkAd()函数。在玩家死亡的地方调用此功能。因此,如果您有一个名为death或gameover的Bool变量,则将其调用到同一位置。例如..

if died == true {
  checkAd()
}

答案 1 :(得分:0)

import UIKit

import SpriteKit

import GoogleMobileAds

var playCount = Int()

class GameViewController: UIViewController, GADBannerViewDelegate {
@IBOutlet var banner: GADBannerView!

var myAd = GADInterstitial()

override func viewDidLoad() {
    super.viewDidLoad()

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.loadAndShow), name: "loadAndShow", object: nil)

    let scene = MainScene(size: CGSize(width: 1536, height: 2048))


              // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = false
        skView.showsNodeCount = false

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)

    banner.hidden = true

    banner.delegate = self

    banner.adUnitID = "ca-app-pub-8889875503423788/7902691359"
    banner.rootViewController = self
    banner.loadRequest(GADRequest())

}

func loadAndShow() {



    myAd = GADInterstitial()
    let request = GADRequest()
    myAd.setAdUnitID("ca-app-pub-8889875503423788/7902691359")
    myAd.delegate = self
    myAd.loadRequest(request)



}

func interstitialDidReceiveAd(ad: GADInterstitial!) {

    if (self.myAd.isReady) {

        myAd.presentFromRootViewController(self)



    }



}

func adViewDidReceiveAd(bannerView: GADBannerView!) {
    banner.hidden = false
}

func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
    banner.hidden = true
}

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

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Release any cached data, images, etc that aren't in use.
}

override func prefersStatusBarHidden() -> Bool {
    return true
}
}
相关问题