swift - 为什么在 Swift 中点击 iAd 时我的游戏不会暂停?

标签 swift iad

我做错了什么?我试图让游戏在点击广告时暂停,但它仍在后台运行。我如何让它暂停?我尝试了其他方法来暂停场景,但它对我不起作用。

    func didLoadAd(banner: ADBannerView) {
        adBannerView.hidden = false
    }


    func bannerViewWillLoadAd(banner: ADBannerView!) {


        println("Ad about to load")

    }

    func bannerViewDidLoadAd(banner: ADBannerView!) {

        adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - view.bounds.size.height + adBannerView.frame.size.height / 2)

        adBannerView.hidden = false
        println("Displaying the Ad")

    }

    func bannerViewActionDidFinish(banner: ADBannerView!) {
        /* un-pause when ad is closed */
        if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
            let skView = self.view as SKView
            skView.paused = false
            println("Close the Ad")
        }

    }

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
       if  let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
            let skView = self.view as SKView
            skView.paused = true
            println("Leave the application to the Ad")
        //pause game here
        }

        return true
    }

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {

        //move off bounds when add didn't load

        adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height + view.bounds.size.height)
        adBannerView.hidden = true
        println("Ad is not available")

    }
//iAd-----------------------------------------------------------------------------------------------------

最佳答案

我认为你的问题出在这里:

let skView = self.view as SKView
skView.paused = true

而且我认为你应该检查 skView 是否是你的游戏 View 。 self.view 可能是此时的广告 View 。

要修复它,请找到您的 View ,而不是使用 self。

//at top of class
var window:UIWindow?

// inside my method/function
if let viewControllers = window?.rootViewController?.childViewControllers {
    for viewController in viewControllers {
        if viewController.isKindOfClass(MyViewControllerClass) {
            println("Found it!!!")
            viewController.paused = true
            }
        }
    }

关于swift - 为什么在 Swift 中点击 iAd 时我的游戏不会暂停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183383/

相关文章:

ios - CFStreamCreateBoundPair 不能释放

swift - Swift 中的单引号字符

ios - UITableViewController 中的 iAd

ios - Smaato 和 iAds 相结合

ios - 如何将 Xcode 更新到 11.0,目前我使用的是 macOS High Sierra(版本 10.13.6),我无法更新我的 macOS

swift - 如何删除 UI 元素的键(键值编码合规性)?

ios - 字典没有在 swift 5 中保存在 Userdefault 中

ios - 当内容不可用时,iAd 显示一条白线?

iphone - 我可以为 iPad 上的 iAd 使用 320X50 横幅尺寸吗?

ios7 : adding iAd. 项目框架导致 SIGABRT 运行