2016-08-01 12 views

Antwort

2

Dies funktioniert nur, wenn Sie die GoogleMobileAds.sdk haben und das googlemobileads-Modul in Ihren GameViewController und GameScene oder GameOverScene importiert haben.

Ich zeige Ihnen die cross-szenische Anzeigenimplementierung und die programmgesteuerte Begrenzung von Anzeigenimpressionen.

Zuerst in Ihrem 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) 

} 

Erstellen Sie zwei Funktionen auf der Unterseite Ihres 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) 



    } 



} 

Sie sind mit GameViewController getan. Gehe nun zu GameOverScene oder GameScene, was immer du brauchst.

Erstellen Sie eine globale Variable int:

var playCount = Int() 

In Ihrem DidMoveToView sagen:

playCount = 1 

Dieser Teil irgendwie verwirrend ist, ein bisschen, nicht wirklich. Gehe zu deinem touchesBegan und finde, wo du einer Schaltfläche Aktionen hinzufügst, wenn sie gedrückt wird. Zum Beispiel setzt eine resetGame-Schaltfläche die Szene zurück. Fügen Sie das dort hinzu und inkrementieren Sie das playButton Int wie folgt:

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 


     } 

Letzter Schritt. Fügen Sie diese beiden Funktionen auf dem Boden der Szene, die Sie in Interstitial-Anzeigen zeigen wollen:

func displayAd() { 



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


} 

func checkAd() { 


    if playCount % 4 == 0 { 

     displayAd() 

    } 

} 

} 

Jetzt jede vierte Mal, dass der Benutzer auf die Schaltfläche Reset Spiel drückt oder stirbt, sollte eine Interstitial-Anzeige angezeigt. Ich hoffe das hilft.

BEARBEITEN: Ich habe vergessen, Ihnen zu sagen, die checkAd() -Funktion aufzurufen. Ruf diese Funktion an, wo auch immer deine Spieler sterben. Wenn Sie also eine Bool-Variable namens "toded" oder "gameover" haben, rufen Sie sie an derselben Stelle auf. Zum Beispiel ..

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

gehen bis zu Ihrer Klasse GameViewController wo es UIViewController sagt und fügen GADInterstitialDelegate –

+0

lol Ich kann nicht glauben, dass ich das erklären vergessen !. Haha Thankyou – Vic

+0

Können Sie Ihren Beitrag bearbeiten, um zu erklären, wie dies die Frage beantwortet? Code-Dumps werden in StackOverflow nicht empfohlen: Sie sind nicht sehr hilfreich, da sie den Leuten nicht beibringen, wie sie Probleme lösen können. Sie ermutigen nur zum Kopieren und Einfügen. Vielen Dank! –