好的,我已经花了几天时间做这件事 . 我已经浏览了admob的教程,youtube,堆栈交换,一切,我无法找到解决问题的方法 .
我正在尝试将admob的插页式广告应用到我的iOS游戏应用中 . 代码编译,构建,运行,游戏播放,但广告不会显示 . 这是我的GameViewController.swift
import UIKit
import SpriteKit
import GoogleMobileAds
class GameViewController: UIViewController, GADInterstitialDelegate {
//AD STUFF-----------------------------vBELOWv----------------------------------------------
//AD STUFF-----------------------------vBELOWv----------------------------------------------
var interstitialAd: GADInterstitial?
func createInterstitialAd() -> GADInterstitial {
let request = GADRequest()
let interstitial = GADInterstitial(adUnitID: "ca-app-pub-******")
request.testDevices = [kGADSimulatorID, "C966DEAC-A2FD-4FBA-80B5-802B7E394C6D", "F3E1897A-3556-4704-9C85-3D70B4672F44","090DCEE5-6B1C-4DFB-83CE-FE800A242008", "1B93E43B-E9B3-4482-8B11-4F3614A26EA2"]
interstitial.delegate = self
interstitial.loadRequest(request)
return interstitial
}
//func to show the ad
func showAd() {
if interstitialAd != nil {
if interstitialAd!.isReady{
interstitialAd?.presentFromRootViewController(self)
}
else {print("found not ready")}
}
}
//func to pre-load new ad - calls automatically when closes an ad
func interstitialWillDismissScreen(ad: GADInterstitial!) {
interstitialAd = createInterstitialAd()
}
//AD STUFF--------------------------^ABOVE^--------------------------------------------------
//AD STUFF--------------------------^ABOVE^--------------------------------------------------
override func viewDidLoad() {
super.viewDidLoad()
interstitialAd = createInterstitialAd()
if let scene = GameScene(fileNamed:"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
scene.size = self.view.bounds.size
skView.presentScene(scene)
}
}
这就是我把它叫到GameScene的方式
//makes the restart button appear
func createRestartBTN(){
restartBTN = SKSpriteNode(color: SKColor.clearColor(), size: CGSize(width: 200, height: 100))
restartBTN.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
restartBTN.zPosition = 10
addChild(restartBTN)
createReplayText()
varForGVC.showAd()
}
所以当游戏结束时,一个函数会出现一个重启按钮 . 然后我希望我的插页式广告会弹出,以便用户退出插页式广告以点击重播按钮 . 该变量 varForGVC
是之前在GameScene.swift中实现的 varForGVC = GameViewController()
我让我的应用程序与Firebase和admob同步 . 我的root中有GoogleService-Info.plist . 我在我的root中也有admob所需的框架列表 . 我在Firebase上安装了pod . 我've tried putting the code I' m在我的GameViewController中使用我的GameScene.swift并且它也没有在那里工作 . 我不知道这是否重要,但我的游戏有一个主屏幕,只能通过主屏幕访问规则屏幕,然后用户点击播放按钮开始在另一个屏幕(GameScene)中玩游戏 . 我对 .isReady
的检查没有返回 found not ready
. 我需要一些帮助解决这个问题 . 现在,我'm going to try to reinstall the frameworks and see if that' s .
2 回答
这就是我如何使用AdMob的插页式广告 - 使用扩展程序 . 我认为这是更清洁的解决方案 . 希望它能帮到你!
GameViewController.swift
GameViewController GADInterstitialDelegate.swift
最后一部分 - AdMobHelper.swift
我终于明白了 . 我使用了NSNotifcationCenter . 我在我的viewDidLoad函数的GameViewController.swift中放入了一个观察者,然后是一个我希望它弹出的接收器 .