Swift:删除 Spritekit 中不同场景的广告

Posted

技术标签:

【中文标题】Swift:删除 Spritekit 中不同场景的广告【英文标题】:Swift: Remove ads different scene in Spritekit 【发布时间】:2015-09-04 19:44:37 【问题描述】:

我正在使用 MoPub 横幅广告,我在 View Controller 的 viewDidLoad 中添加了以下代码:

     self.adView.delegate = self
    self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
        MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height)
    self.view.addSubview(self.adView)
    self.adView.loadAd()

但是当我只希望它在主菜单场景中可见时,它会使广告在所有场景中可见。

如何在不希望出现的场景中删除广告?

【问题讨论】:

【参考方案1】:

这可能不是最好的方法,但它可能是最简单的。您可以使用NSNotification 向您的ViewController 广播一条消息,只要您想显示或隐藏您的横幅。

例如,如果您在ViewController 上的initviewDidLoad 上添加“观察者”:

NSNotificationCenter.defaultCenter().addObserver(
  self, 
  selector: "hideBannerAd", 
  name: "hideAd", 
  object: nil)

ViewController 监听一个名为"hideAd" 的消息,然后执行一个名为hideBannerAd 的方法。

然后实现这个方法:

func hideBannerAd()
  self.adView.hidden = true

请务必删除deinit 上的观察者,这对于SpriteKit 中的ViewController 的持久性不太可能成为问题,但这是一种很好的做法。

deinit
  NSNotificationCenter.defaultCenter().removeObserver(self)

然后,当您想要显示或隐藏视图时,例如在场景转换或游戏结束方法上,您可以通过使用以下方法触发观察者来实现此 hideBannerAd 方法:

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

并且横幅应该隐藏。然后可以通过将hidden 属性设置为false 对类似的showBannerAd 方法重复此操作,或者您可以使用一个方法来简单地使用adView.hidden = !adView.hidden 切换隐藏属性。

我希望这会有所帮助。

【讨论】:

以上是关于Swift:删除 Spritekit 中不同场景的广告的主要内容,如果未能解决你的问题,请参考以下文章

(Swift + Spritekit) - 完全删除节点及其数据

从数组 spritekit swift 中删除节点

如何使用 Swift 正确切换 SpriteKit 中的 SKScene?

Swift - SpriteKit:如果添加不同的“addchild”父母,使精灵相互反应

如何在不同的 SpriteKit 场景中显示 iAd 横幅

Swift / Spritekit:通过特定场景播放音乐