2016-08-01 94 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不鼓勵代碼轉儲:它們不是很有用,因爲它們不會教人們如何解決問題;他們只是鼓勵複製粘貼編碼。謝謝! –

相關問題