Swift (SpriteKit) / AdMob — Ошибка запроса межстраничных объявлений

В AdMob, когда я вызываю межстраничные объявления, в журнале появляется сообщение «Ошибка запроса: запрос не будет отправлен, поскольку был использован межстраничный объект».

Как я могу это исправить?

Мой код:

//
//  GameViewController.swift//
//


class GameViewController: UIViewController, GADInterstitialDelegate {

    var interstitial: GADInterstitial!

    override func viewDidLoad() {
        super.viewDidLoad()

        PlayGame()

        interstitial = createAndLoadInterstitial()
        interstitial.delegate = self 

    }

    func PlayGame() {
        if let view = self.view as! SKView? {
            if let scene = MainMenu(fileNamed: "MainMenu") {
                scene.scaleMode = .aspectFit
                view.presentScene(scene)
            }

            view.ignoresSiblingOrder = false
            view.showsFPS = false
            view.showsNodeCount = false
        }
    }


    override func viewWillLayoutSubviews() {
        NotificationCenter.default.addObserver(self, selector: #selector(self.interstitialAdShow), name: NSNotification.Name(rawValue: "showGecisAd"), object: nil)
    }


    func createAndLoadInterstitial() -> GADInterstitial {
        var interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
        interstitial.delegate = self
        var request = GADRequest()
        request.testDevices = [kGADSimulatorID]
        interstitial.load(request)
        return interstitial
    }

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


    @objc func interstitialAdShow() {

        if interstitial.isReady {
            interstitial.present(fromRootViewController: self)
        } else {
            print("Ad wasn't ready")
        }
    }

person Erdem KARAKAYA    schedule 30.01.2018    source источник
comment
Ваш код выглядит нормально, можете ли вы показать код, использующий этот класс? (видимо это ваш ViewController)   -  person Yitzchak    schedule 30.01.2018
comment
В моей GameScene, если игрок умер, я использую этот код: NotificationCenter.default.post (имя: NSNotification.Name (rawValue: showGecisAd), объект: nil)   -  person Erdem KARAKAYA    schedule 30.01.2018
comment
Возможно, это может вам помочь: stackoverflow.com/ вопросы/24353456/   -  person Charles-olivier Demers    schedule 30.01.2018


Ответы (1)


Я считаю, что ваше объявление не показывается из-за ошибки объявления, поэтому вы снова используете тот же экземпляр! Если это правда, то это будет работать:

func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError {
    // you should add a delay here because if the user’s internet connection is disconnected you’ll get this called too many times too frequently
    interstitial = createAndLoadInterstitial()
}

Но если вы видите свое объявление, то ваш метод делегата interstitialDidDismissScreen не вызывается, просто проверьте, почему

Удачи

person Yitzchak    schedule 31.01.2018