interstitialWillDismissScreen 只被调用一次

interstitialWillDismissScreen only being called once

我在 swift 项目中使用 Admob 插页式广告,但在重新加载广告时遇到问题。第一个插页式广告显示正常,当调用 interstitialWillDismissScreen 时,它退出回到游戏并按预期重新加载新的插页式广告。但是,interstitialDidReceiveAd 和 interstitialWillDismissScreen 都没有被再次调用,因此在显示第二个广告后,没有其他广告通过。我错过了什么?

import GoogleMobileAds

let appDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)

class GameScene: SKScene, GKGameCenterControllerDelegate, GADInterstitialDelegate {

    var interstitial: GADInterstitial!

    override func didMoveToView(view: SKView) {

        //preload interstitial ad
        if NSUserDefaults.standardUserDefaults().boolForKey("paidToRemoveAds") == false {
            interstitial = loadAd()
        }

        interstitial.delegate = self
    }

    func gameOver() {
        runGoogleAd()
    }

    func loadAd() -> GADInterstitial {
        let ad = GADInterstitial(adUnitID: "ca-app-pub-2963481692578498/7292484569")
        let request = GADRequest()
        request.testDevices = [kGADSimulatorID]
        ad.loadRequest(request)
        return ad
    }

    func runGoogleAd() {
        if interstitial.isReady {
            interstitial.presentFromRootViewController((appDelegate.window?.rootViewController)!)
        }
    }

    func interstitialDidReceiveAd(ad: GADInterstitial!) {
        print("ad loaded")
    }

    func interstitialWillDismissScreen(ad: GADInterstitial!) {
        interstitial = loadAd()
        print("loading new ad")
    }
}

我假设 loadAd() 创建了一个新实例?您需要在新实例上设置委托:

func interstitialWillDismissScreen(ad: GADInterstitial!) {
    interstitial = loadAd()

    interstitial.delegate = self  // <-- You forgot this.

    print("loading new ad")
}

实际上,您应该在 loadAd() 中设置委托,因为它是此 class.

的实例成员