У меня возникают проблемы с отображением рекламного объявления 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
еще раз! Любая помощь или мысли очень ценятся!