如何使用swift,spritekit和xcode调用admob插页式广告?

我一直在寻找答案,我在目标C(google开发人员文档等)中找到了很多例子,并在swift中找到了一些答案,但没有使用spritekit,而且是一个新手,我只是避风港我们能够弥补这些教程中的差距,将它们整合到我的项目中。 老实说,我真的不在乎广告是在应用推出或游戏结束时调用的,我只是很高兴能够打电话给广告时段,不过我猜游戏发布是首选。

很确定我已经在gameviewcontroller.swift中正确设置了所有内容,但我不知道如何实际调用它。 这是我的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 } 

除此之外……我也有这个if语句来调用广告,但我不知道它应该在哪里……或者它是否完整(在教程中,它是在按钮中,但我需要它自动,自然:

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

有人对此有经验吗? 如果有人可以通过让我知道上述if语句的位置来帮助我完成这项工作,或者如果还有更多工作需要完成……我们将非常感谢您的帮助。 谢谢。

好的,我开始了一个新项目(Swift项目),这是一个游戏项目

在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 } } 

这是我的第一个快速代码所以如果我做错了就不要判断我但是当我在±5秒后吃午饭时我会看到广告这是你的例子。

我根本不熟悉Swift,但你需要做的就是在它被解雇时获得插页式代表 – >并请求下一个插页式广告,所以下次你会得到新的广告

随意问什么! PS不要忘记将admob ID更改为您的ID。

我基于上述评论的解决方案如下:

1)在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) } } 

然后你可以在GameScene中使用它

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

希望这可以帮助。

在viewDidAppear中保持if条件它会自动执行

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