如何使用swift、spritkit和xcode调用admob间隙广告



我一直在寻找这个问题的答案,我在objective C(谷歌开发人员文档等)中找到了很多例子,在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
}
}

这是我的第一个swift代码,所以如果我做错了什么,不要评判我但当我在±5秒后吃午饭时,我看到了广告这是你的例子。

我对斯威夫特一点也不熟悉,但你所需要做的就是在间隙代表被驳回时获得->并请求下一个间隙,所以在下次你将获得新的AD

随便问什么!附言:别忘了将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();
....

希望这能有所帮助。

在viewDidPappear中保留if条件,它将自动执行

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

最新更新