Swift 如何在sprite kit的特定场景中展示广告?

Swift 如何在sprite kit的特定场景中展示广告?,swift,sprite-kit,admob,Swift,Sprite Kit,Admob,这是我第一次使用swift和sprite工具包开发应用程序。我想将adMob整合到其中。我一直在寻找解决问题的办法,但没有成功 我在GameViewController.swift中设置了以下代码 override func viewDidLoad() { super.viewDidLoad() bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait) bannerView.isHidden =

这是我第一次使用swift和sprite工具包开发应用程序。我想将adMob整合到其中。我一直在寻找解决问题的办法,但没有成功

我在GameViewController.swift中设置了以下代码

override func viewDidLoad() {
    super.viewDidLoad()

    bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
    bannerView.isHidden = true
    bannerView.adUnitID = "ca-app-pub-************************"
    bannerView.rootViewController = self
    view.addSubview(bannerView)

    // Configure the view.
    let skView = self.view as! SKView
    skView.showsFPS = false
    skView.showsNodeCount = false

    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = true

    // Create and configure the scene.
    let aspectRatio = skView.bounds.size.height / skView.bounds.size.width
    let scene = MainMenuScene(size:CGSize(width: 320, height: 320 * aspectRatio))
    skView.presentScene(scene)

    showBanner()

}

func showBanner() {
    bannerView.isHidden = false
    let request = GADRequest()
    request.testDevices = ["******************"]
    bannerView.load(request)

}

这个设置完美地显示了我所有场景中的广告,但我的问题是,如何使用NotificationCenter在
MainMenuScene.swift
GameOverScene.swift
上显示广告?这两个都是他们自己的班级

如您所述,您可以使用通知中心

为通知创建一个密钥以避免输入错误。您可以将其放在项目中任何您喜欢的地方(任何类或新的.swift文件之外)

而不是在游戏ViewController中在ViewDidLoad中添加观察者

NotificationCenter.default.addObserver(self, selector: #selector(showBanner), name: .showBannerAd, object: nil) // selector is the method to call
在你的场景中,当你需要显示横幅时,你可以像这样发布通知

 NotificationCenter.default.postNotificationName(.showBannerAd, object: nil)
或者,我在Github上有一个助手,这将使这更容易和更干净


希望这有帮助

什么是MenuScene.swift?@ElTomato这是一门课。看起来是这样的,类MainMenuScene:SKScene{}我不知道MainMenuScene和MenuScene之间的关系,但是如果他们是兄弟姐妹,你可能想创建一个基本的SKScene类,这样你就可以用bool开关为他们对其进行子类化,以显示或不显示广告。@ElTomato我为混淆道歉,它完全从我身边溜走了!我本来想把MainMenuScene.swift改为MainMenuScene.swift,所以我已经编辑了这个问题。没问题。。。只需创建一个基本场景类。然后为MainMenuScene、GameOverScene创建子类。谢谢你的回复,但我已经找到了答案。事实上我做了类似的事情,效果很好。我会继续,留下这个问题和这个答案,以防其他人也有同样的问题。太棒了。谢谢你的帮助。快乐编码
 NotificationCenter.default.postNotificationName(.showBannerAd, object: nil)