Jus*_*tin 5 admob sprite-kit swift google-admob
每当显示游戏结束场景时,我都试图显示一个插页式广告,但我只是出错了。我已经搜索了答案,但它们产生了相同的结果。我正在使用通知中心方法,但它不起作用。不过,我的横幅视图工作正常。
我收到此错误:
CoreAnimation:[EAGLContext renderbufferStorage:fromDrawable:] 在隐式事务中从非主线程调用!请注意,如果没有明确的 CATransaction 或对 [CATransaction flush] 的调用,这可能是不安全的。2017-10-01 09:28:00.631015-0500 Split[868:273850] CoreAnimation: [EAGLContext renderbufferStorage:fromDrawable:] 在隐式事务中从非主线程调用!请注意,如果没有明确的 CATransaction 或对 [CATransaction flush] 的调用,这可能是不安全的。
override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.loadAndShow), name: NSNotification.Name(rawValue: "loadAndShow"), object: nil)
    let request = GADRequest()
    request.testDevices = [kGADSimulatorID, "49d92844bdbdf74dac25e343b377744f"]
    bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
    self.view?.addSubview(bannerView)
    bannerView.adUnitID = "ca-app-pub-9408273734198014/6590781864"
    bannerView.rootViewController = self
    bannerView.load(GADRequest())
    bannerView.delegate = self
    interstitialView = GADInterstitial(adUnitID: "ca-app-pub-9408273734198014/7472368678")
    interstitialView.load(request)
    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = SKScene(fileNamed: "StartScene") {
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .aspectFill
            // Present the scene
            view.presentScene(scene)
        }
        view.ignoresSiblingOrder = true
        view.showsFPS = true
        view.showsNodeCount = true
    }
}
@objc func loadAndShow() {
    interstitialView = GADInterstitial()
    let request = GADRequest()
    interstitialView.setAdUnitID("ca-app-pub-9408273734198014/7472368678")
    interstitialView.delegate = self
    interstitialView.load(request)
}
func showInterstitial(ad: GADInterstitial!) {
    if (self.interstitialView.isReady) {
        interstitialView.present(fromRootViewController: self)
    }
}
小智 0
因此,正如错误中提到的,您正在interstitialView.present(fromRootViewController: self)非主线程中调用,它是从用于加载插页式广告的线程中调用的。
要修复它,只需将其显示在主队列中即可。
DispatchQueue.main.async {
    self.interstitialView.present(fromRootViewController: self)
}
| 归档时间: | 
 | 
| 查看次数: | 425 次 | 
| 最近记录: |