2016-08-01 57 views

回答

2

这只有在您拥有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 

这部分是有点混乱,有点,不是真的。转到触摸开始,并找到将按钮添加到按钮的位置。例如,一个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() 
} 
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 
} 
} 
+0

去上类GameViewController在那里说的UIViewController,并添加GADInterstitialDelegate –

+0

笑我无法相信我忘了声明!哈哈Thankyou – Vic

+0

你能编辑你的文章解释如何回答这个问题? StackOverflow不鼓励代码转储:它们不是很有用,因为它们不会教人们如何解决问题;他们只是鼓励复制粘贴编码。谢谢! –