在 Swift SpriteKit 中的场景之间显示 Admob Interstitial 广告
Show Admob Interstitial ads between scenes in Swift SpriteKit
我想知道如何在展示 GameOverScene 时设置 Admob Interstitial 广告。我应该怎么做才能在游戏结束时仅偶尔显示广告?我如何在 Swift?
中实现它
我指的是这个 post 但我想知道如何在场景之间调用广告。
编辑
这是我用来展示广告的代码
class GameViewController: UIViewController, GADInterstitialDelegate {
var interstitial = GADInterstitial()
var intersitialRecievedAd = false
let defaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
interstitial.delegate = self
self.interstitial = createAndLoadAd()
let timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "checkIfAdIsToBeDisplayed:", userInfo: nil, repeats: true)
//Scene implementation, boring stuff, got nothing to do with the ads...
...
}
func checkIfAdIsToBeDisplayed(timer:NSTimer) {
if defaults.boolForKey("adToBeShown") == true && intersitialRecievedAd == true {
showInterstitial()
defaults.setBool(false, forKey: "adToBeShown")
intersitialRecievedAd = false
} else {
}
}
func interstitialDidReceiveAd(ad: GADInterstitial!) {
intersitialRecievedAd = true
}
func createAndLoadAd() -> GADInterstitial {
var ad = GADInterstitial(adUnitID: "...")
ad.delegate = self
let request = GADRequest()
request.testDevices = ["..."]
ad.loadRequest(request)
return ad
}
func showInterstitial(){
if self.interstitial.isReady {
self.interstitial.presentFromRootViewController(self)
self.interstitial = createAndLoadAd()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
此代码使用计时器不断检查 gameOverScene 是否已呈现。当出现 gameOverScene 时,我将 true
分配给 "adToBeShown"
布尔值。
这不是最好的方法,谁能告诉我如何在出现场景时直接调用广告?
为什么不使用 NSNotificationCenter 或委托来调用 showInterstitial()。
例如
在游戏中ViewController在viewDidLoad中添加这个
NSNotificationCenter.defaultCenter().addObserver(self, selector: "showInterstitial"), name:"showInterAdKey", object: nil);
当你想在你使用的场景中展示广告时
NSNotificationCenter.defaultCenter().postNotificationName("showInterAdKey", object: nil)
您也可以使用像我在 github 上发布的帮助器这样的东西,它使这更容易,并且您的 ViewController 保持干净 https://github.com/crashoverride777/Swift-2-iAds-and-AdMob-Helper
您还可以限制 Admob 通过 Admob 网站展示插页式广告的频率。在插页式广告的设置中,有一些选项可以更改弹出广告的频率。
我想知道如何在展示 GameOverScene 时设置 Admob Interstitial 广告。我应该怎么做才能在游戏结束时仅偶尔显示广告?我如何在 Swift?
中实现它我指的是这个 post
编辑 这是我用来展示广告的代码
class GameViewController: UIViewController, GADInterstitialDelegate {
var interstitial = GADInterstitial()
var intersitialRecievedAd = false
let defaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
interstitial.delegate = self
self.interstitial = createAndLoadAd()
let timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "checkIfAdIsToBeDisplayed:", userInfo: nil, repeats: true)
//Scene implementation, boring stuff, got nothing to do with the ads...
...
}
func checkIfAdIsToBeDisplayed(timer:NSTimer) {
if defaults.boolForKey("adToBeShown") == true && intersitialRecievedAd == true {
showInterstitial()
defaults.setBool(false, forKey: "adToBeShown")
intersitialRecievedAd = false
} else {
}
}
func interstitialDidReceiveAd(ad: GADInterstitial!) {
intersitialRecievedAd = true
}
func createAndLoadAd() -> GADInterstitial {
var ad = GADInterstitial(adUnitID: "...")
ad.delegate = self
let request = GADRequest()
request.testDevices = ["..."]
ad.loadRequest(request)
return ad
}
func showInterstitial(){
if self.interstitial.isReady {
self.interstitial.presentFromRootViewController(self)
self.interstitial = createAndLoadAd()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
此代码使用计时器不断检查 gameOverScene 是否已呈现。当出现 gameOverScene 时,我将 true
分配给 "adToBeShown"
布尔值。
这不是最好的方法,谁能告诉我如何在出现场景时直接调用广告?
为什么不使用 NSNotificationCenter 或委托来调用 showInterstitial()。
例如
在游戏中ViewController在viewDidLoad中添加这个
NSNotificationCenter.defaultCenter().addObserver(self, selector: "showInterstitial"), name:"showInterAdKey", object: nil);
当你想在你使用的场景中展示广告时
NSNotificationCenter.defaultCenter().postNotificationName("showInterAdKey", object: nil)
您也可以使用像我在 github 上发布的帮助器这样的东西,它使这更容易,并且您的 ViewController 保持干净 https://github.com/crashoverride777/Swift-2-iAds-and-AdMob-Helper
您还可以限制 Admob 通过 Admob 网站展示插页式广告的频率。在插页式广告的设置中,有一些选项可以更改弹出广告的频率。