¿Cómo llamar al anuncio intersticial de admob mediante swift, spritekit y xcode?

He estado buscando por todas partes una respuesta a esto y he encontrado muchos ejemplos en el objective C (documentos de desarrollador de Google, etc.) y algunas respuestas de manera rápida, pero sin usar spritekit, y siendo un novato, solo me asusto No pude salvar las lagunas en estos tutoriales para juntar todo para mi proyecto. Sinceramente, no me importa si se llama al anuncio para el lanzamiento de la aplicación, o si se acaba el juego, simplemente estaría contento de poder llamar al período de anuncios, aunque supongo que se prefiere el lanzamiento del juego.

Estoy seguro de que todo está configurado correctamente en gameviewcontroller.swift, pero no sé cómo llamarlo. Aquí está el código de mi gameviewcontroller.swift:

import UIKit import SpriteKit import GoogleMobileAds class GameViewController: UIViewController { var interstitial : GADInterstitial! func createAndLoadAd() -> GADInterstitial { var ad = GADInterstitial() ad.adUnitID = "ca-app-pub-4471013071748494/2980967718" var request = GADRequest() request.testDevices = [""] return ad } 

Más allá de esto … También tengo esta statement if para llamar al anuncio, pero no sé dónde debería estar … o si está completa (en el tutorial, estaba en un button, pero necesito que sea automático, naturalmente:

 if (self.interstitial.isReady) { self.interstitial.presentFromRootViewController(self) self.interstitial = self.createAndLoadAd() } 

Alguien tiene alguna experiencia con esto? Si alguien me puede ayudar a completar esto, me permite saber dónde ubicar la afirmación anterior, o si hay más que hacer … su ayuda será muy apreciada. Gracias.

Ok, entonces comencé un nuevo proyecto (proyecto Swift) que es Game Project

En GameViewController:

 class GameViewController: UIViewController { var interstitial = GADInterstitial() override func viewDidLoad() { super.viewDidLoad() if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { // Configure the view. let skView = self.view as! SKView skView.showsFPS = true skView.showsNodeCount = true /* 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) let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(5 * Double(NSEC_PER_SEC))) //Creation of the ad and its request self.interstitial = GADInterstitial() self.interstitial.adUnitID = "ca-app-pub-4798156420380453/7714267723" var request = GADRequest() // request.testDevices = [""] self.interstitial.loadRequest(GADRequest());//The method u were missing dispatch_after(delayTime, dispatch_get_main_queue()) { self.showAd() } } } func showAd() { if (self.interstitial.isReady) { self.interstitial.presentFromRootViewController(self)//Whatever shows the ad } } 

Es mi primer código rápido, así que no me juzgues si hice algo mal. Pero cuando lo almuerzo después de ± 5 segundos veo el anuncio. Este es tu ejemplo.

No estoy familiarizado con Swift en absoluto, pero todo lo que necesitas hacer es get el delegado intersticial cuando se descarta -> y solicitar el siguiente intersticial, por lo que en la próxima vez obtendrás el nuevo AD

¡Siéntase libre de preguntar algo! PS No olvide cambiar el ID de admob a su ID.

Mi solución basada en los comentarios anteriores fue la siguiente:

1) Agregue esto en GameViewController.swift

 protocol AdmobInterstitialDelegate{ func showInterstitial() } ... // add this delegate in GameViewController definition class GameViewController: UIViewController, GADInterstitialDelegate, AdmobInterstitialDelegate { ... // and assign it to the GameScene class when you create its instance let scene = GameScene() scene.adDelegate = self // do not forget to implement the delegated method itself func showInterstitial(){ if (interstitial!.isReady) { interstitial!.presentFromRootViewController(self) } } 

y luego puedes usarlo en GameScene

 class GameScene: SKScene { .... var adDelegate: AdmobInterstitialDelegate? .... // and finally - show the ad override func didMoveToView(view: SKView) { self.adDelegate?.showInterstitial(); .... 

espero que esto ayude.

Mantenga la condición if en viewDidAppear se ejecutará automáticamente

 override func viewDidAppear(animated: Bool) { if (interstitial.isReady) { interstitial.presentFromRootViewController(self) self.interstitial = self.createAndLoadInterstitial() }