GoogleAdMob успешно загружает вставки, а затем неожиданно не готов к отображению при вызове - PullRequest
0 голосов
/ 02 мая 2019

У меня возникают проблемы с отображением рекламного объявления GoogleAdMob даже после прочтения каждого сообщения StackOverflow, которое я смог найти по этой теме.По отладке я могу сказать, что объявление успешно загружается при запуске приложения (я проверил, что при вызове interstitialDidReceiveAd, interstitial.isReady равно true), но когда я вызываю свою функцию, чтобы показать объявление, это внезапноfalse и объявление не готово к показу.

Я внимательно следил за инструктивным видео Google и, когда это не сработало, попробовал методы в нескольких видеороликах Youtube.Я попытался разместить промежуточный объект и функцию отображения в моих файлах viewController, gameScene и adMobDelegate, но все безрезультатно.

-Декларация в классе adMobDelegate

var interstitial: GADInterstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")

-Из представления загрузилсяв viewController

var admobDelegate = AdMobDelegate()
admobDelegate.getInterstitialAd()

-Какие вызовы (в adMobDelegate)

func getInterstitialAd(){
    self.interstitial.delegate = self
    let interstitialRequest = GADRequest()
    interstitialRequest.testDevices = [ kGADSimulatorID ]
    interstitial.load(interstitialRequest)
}

И это, я подтвердил, успешно загружает объявление (я даже могу представить его с interstitialDidReceiveAd(...), нокогда вызывается showAd() (определено ниже), объявление внезапно становится не готовым к показу:

-После завершения уровня это вызывается в gameScene

func winAnnounce() {

    // other code to tell the user they won

    let adDelegate = AdMobDelegate()
    adDelegate.showAd()

}

-showAd () внутриadMobDelegate

func showAd() {
    print("Ad Loaded:",interstitial.isReady)
    if interstitial.isReady {
        // this currently won't display the ad, as it is not in the view
        // hierarchy (which I will solve later), but we are not even getting
        // to this point because interstitial.isReady = false ALL OF THE SUDDEN
        interstitial.present(fromRootViewController: GameViewController())
    } else {
        // createAd() basically does the same thing as getInterstitialAd
        interstitial = createAd()
        print("Ad wasn't ready")
    }
}

И мы каждый раз получаем «Объявление не было готово», что приводит нас к выполнению оператора else, который создает новое объявление для interstitial, которое успешно загружается и isReady = trueеще раз! Любая помощь или мысли очень ценятся!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...