SWIFT ADMOB: не удалось загрузить: ошибка запроса: нет рекламы для показа

На самом деле я разрабатываю приложение для iOS с AdMob Reward в Swift, и когда я пытаюсь создать свое приложение с помощью симулятора (iPhone 6, 6s, 7, 8... и т. д.), реклама работает, и у меня также есть это сообщение:

Получено видеообъявление на основе вознаграждения.

Но (потому что всегда есть «но»), когда я создаю свое приложение на своем собственном устройстве (iPhone 6), оно не работает, и у меня появляется это сообщение об ошибке: «Не удалось загрузить видеообъявление на основе вознаграждения: Ошибка запроса: нет рекламы для показа». ." Это мой код (очевидно, я изменил идентификатор объявления в примере, приведенном в «Начало работы с Reward Ad Mob», но в своем приложении я использую свой идентификатор объявления). Это пример идентификатора, который я выбрал для примера: ca-app-pub-3940256099942544/1712485313

let request = GADRequest()
    request.testDevices = [ kGADSimulatorID,"ca-app-pub-3940256099942544/1712485313"];
    rewardBasedVideo = GADRewardBasedVideoAd.sharedInstance()
    rewardBasedVideo?.delegate = self
    if rewardBasedVideo?.isReady == false {
        rewardBasedVideo?.load(GADRequest(), withAdUnitID: "ca-app-pub-3940256099942544/1712485313")
        adRequestInProgress = true
    }

А также

//ADMOB
// MARK: GADRewardBasedVideoAdDelegate implementation
func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
                        didFailToLoadWithError error: Error) {
    adRequestInProgress = false
    print("Reward based video ad failed to load: \(error.localizedDescription)")
}

func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    adRequestInProgress = false
    print("Reward based video ad is received.")
}

func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    print("Opened reward based video ad.")
}

func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    print("Reward based video ad started playing.")
}

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    print("Reward based video ad is closed.")
}

func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    print("Reward based video ad will leave application.")
}

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
                        didRewardUserWith reward: GADAdReward) {
    print("Reward received with currency: \(reward.type), amount \(reward.amount).")
}
//ADMOB!

person Gabriel    schedule 25.10.2017    source источник
comment
это может помочь вам stackoverflow.com/a/44481175/8334818   -  person Pramod More    schedule 07.06.2018


Ответы (1)


Сначала вы должны увидеть свои журналы, чтобы получить идентификатор вашего реального устройства.

Затем исправьте эту строку:

request.testDevices = [...]

Замените ... Симулятором, как вы это сделали, и if вашего реального устройства. Затем вы могли увидеть тестовую рекламу. Вместо этого вы использовали свой идентификатор рекламного блока, используя свой идентификатор устройства.

person Yitzchak    schedule 25.10.2017
comment
Привет, спасибо за ваш ответ, так что, если я правильно понял, я сделал это request.testDevices = [ ca-app-pub-3940256099942544/1712485313]; ? Потому что если только это, то тоже не работает... - person Gabriel; 25.10.2017
comment
УДАЛИТЕ рекламный блок оттуда. testDevices определяет, какие устройства загружают TEST-рекламу, которая всегда показывается, даже если реклама не показывается!! Посмотрите журнал времени выполнения (при отладке на реальном устройстве), вы должны увидеть что-то вроде: используйте идентификатор .......... Чтобы получить тестовые объявления для этого устройства, ВОЗЬМИТЕ идентификатор и используйте его в массиве, СОХРАНИТЕ идентификатор симулятора тоже в массиве' - person Yitzchak; 25.10.2017
comment
Я не понимаю, извините, не могли бы вы привести пример, пожалуйста, спасибо - person Gabriel; 25.10.2017
comment
Да, но через несколько часов - person Yitzchak; 25.10.2017
comment
Я видел это и сделал то же самое, но с другим идентификатором, и когда я пытаюсь использовать 2077ef9a63d2b398840261c8221a0c9b, это тоже не работает... - person Gabriel; 25.10.2017
comment
Я думаю, ваша реклама в порядке, вам просто нужно увидеть тестовую рекламу, чтобы убедиться - person Yitzchak; 25.10.2017