swift2 在Swift SpriteKit中的场景之间显示Admob间隙广告

sc4hvdpw  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(174)

我想知道当我展示我的GameOverScene时如何设置Admob间隙广告。我应该怎么做才能在游戏结束时偶尔显示广告?我该如何在Swift中实现这一点?
我指的是这个职位How to call admob interstitial ad using swift, spritekit and xcode?,但我想知道如何调用的广告之间的场景。

EDIT这是我用来展示广告的代码

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" bool。这不是最好的方法,所以谁能告诉我当场景呈现时如何直接调用广告?

ecbunoof

ecbunoof1#

为什么不使用NSNotificationCenter或代理来调用showInterstitial()。
比如说
在gameViewController中,将此添加到viewDidLoad中

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showInterstitial"), name:"showInterAdKey", object: nil);

当你想从你使用的场景中展示广告时

NSNotificationCenter.defaultCenter().postNotificationName("showInterAdKey", object: nil)

你也可以使用一些类似于我在github上发布的helper的东西,这使得这更容易,你的ViewController保持干净https://github.com/crashoverride777/Swift-2-iAds-and-AdMob-Helper

8mmmxcuj

8mmmxcuj2#

您还可以通过Admob网站限制Admob显示间隙式广告的频率。在间隙式广告的设置中,有一些选项可以改变广告弹出的频率。

相关问题