ios - 如何在 Interstitial 被解散之前释放场景?

标签 ios swift sprite-kit admob interstitial

所以我有一个使用插页式广告的应用程序。具体来说,它是一个用 Swift 编写的 SpriteKit 游戏。

我有代码设置,当用户在游戏结束场景中按下重播按钮时,会出现一个广告,然后它会变回游戏场景以重播游戏。现在我遇到的问题是,在显示插页式广告时场景会发生变化,有时这种情况发生的速度不够快,用户可以再次点击重启按钮,从而导致游戏崩溃。

有没有办法在调用广告时卡住屏幕并忽略任何点击?并且只在广告关闭后才改变场景?

重启按钮按下时的代码;

 if restartButton.contains(pointOfTouch) {
    score = 0
    ballMovementSpeed = 2
    displayAd()
    delay(2.0) {
    self.restartScene()
 }

对于 interstitialDelegate 的放置位置,我有点困惑。我正在尝试实现 func interstitialDidDismissScreen(ad: GADInterstitial!) {} 以触发更改回我的游戏场景,但当我关闭广告时没有任何反应。

我已经尝试将它放在 override func didMove(to view: SKScene){} 以及按下重启按钮时,但仍然无法正常工作。这就是我调用广告的方式

fun loadAndShow() {
  myAd = GADInterstitial()
  let requestI = GADRequest()
  myAd.setAdUnitID("adID")
  requestI.testDevices = [kGADSimulatorID, "test device"]
  myAd.delegate = self
  myAd.load(requestI)
}

func interstitialDidReceiveAd(_ ad: GADInterstitial) {
  if (self.myAd.isReady) {
    myAd.present(fromRootViewController: self)
  }
}

最佳答案

您可以使用 admob 的委托(delegate)方法,这样当要显示插页式广告时,您可以删除重新启动按钮或设置条件,以便在显示广告时它不起作用。如果使用 isPaused bool 运行游戏,暂停游戏也很重要。 https://developers.google.com/admob/ios/ad-events

关于ios - 如何在 Interstitial 被解散之前释放场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44287559/

相关文章:

ios - 根据当前位置在 UITableview 中排序距离

iphone - 替代 Objective-C 中的 Singleton 以获得更好的应用程序设计

ios - Swift 3 数组扩展错误

ios - 为什么节点在 zRotation 之后按 Y 轴变化

ios - 关系中的实体如何知道加入什么

iphone - 没有 xCode 的 Phonegap WEB-APP

快速传递类方法作为参数与闭包

swift - 在 Swift 中是否可以在运行时向对象添加变量?

swift - SpriteKit 中具有深度的背景动画

ios - SpriteKit Physicsbody 和 .allContactedBodies() 的时间