Swift 3,SpriteKit,谷歌非页内广告从未准备好

时间:2016-11-25 23:19:47

标签: ios sprite-kit admob swift3

这个问题在这里被多次询问和回答。我已经阅读了所有这些内容,实施了所有建议,但仍然无效。我目前正在使用NotificationObserver来创建广告,但它始终会为false返回isReady。如果有什么事情发生,请告诉我。

GameViewController

var interstitial: GADInterstitial!

viewDidLoad

interstitial = createAndLoadInterstitial()
NotificationCenter.default.addObserver(self, selector: #selector(self.showInterstitial), name:NSNotification.Name(rawValue: "showInterAd"), object: nil);

广告功能

func showInterstitial(){
    if (interstitial!.isReady) {
        self.interstitial.present(fromRootViewController: self)
    }else{
        print("ad not ready?")
    }
}

func createAndLoadInterstitial() -> GADInterstitial {
    print("making ad")
    let interstitial = GADInterstitial(adUnitID: "ca-app-pub-6956068899232786/9340371153")
    interstitial.delegate = self
    let request = GADRequest()
    request.testDevices = [kGADSimulatorID]
    interstitial.load(request)
    return interstitial
}

func interstitialDidDismissScreen(_ ad: GADInterstitial) {
    interstitial = createAndLoadInterstitial()
}

GameScene.swift

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "showInterAd"), object: nil)

所有功能都会在正确的时间被调用,但广告永远不会准备就绪。我已经对adUnitID进行了三重检查,并尝试了多个设备/模拟器。

1 个答案:

答案 0 :(得分:1)

所以我已经开始工作了。我不知道为什么会这样,我假设它与应用程序本身无关,而是AdMob中的错误或其他内容。

该修复方法是将ad_unit_id替换为与我的其他应用程序不同的应用程序,然后使广告准备就绪并显示。然后我就可以将ad_unit_id替换回这个应用程序的正确版本,它仍然有效。

它需要一个之前用过 jumpstart 的工作。它让我感到困惑,但希望这有助于其他人。