2015-09-28 3 views
5

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

override func viewDidLoad() { 
    super.viewDidLoad() 

    _interstitial = createAndLoadInterstitial() 
} 

func createAndLoadInterstitial()->GADInterstitial { 
    let interstitial = GADInterstitial(adUnitID: "interstitial_ID") 
    let gadRequest:GADRequest = GADRequest() 
    gadRequest.testDevices = ["test device id"] 
    interstitial.delegate = self 
    interstitial?.loadRequest(gadRequest) 

    return interstitial! 
} 

func interstitialDidReceiveAd(ad: GADInterstitial!) { 
    _interstitial?.presentFromRootViewController(self) 
} 

func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) { 
    print(error.localizedDescription) 
} 

func interstitialDidDismissScreen(ad: GADInterstitial!) { 
    _interstitial = createAndLoadInterstitial() 
} 

Я получаю эту ошибку:

Request Error: No ad to show.

enter image description here

+0

* Ошибка запроса: никаких объявлений для показа *, похоже, что AdMob не смог заполнить ваш запрос. Попробуй еще раз. Получаете ли вы какие-либо другие ошибки/предупреждения? Какую версию SDK AdMob вы используете? –

+0

@ DanielStorm Я установил AdMob с CocoaPods (pod 'Google-Mobile-Ads-SDK', '~> 7.0'). Я попробовал еще раз, но получил только эту ошибку. –

+0

Однако GADBannerView обычно отображается ... –

ответ

6

Request Error: No ad to show.

означает, что ваш запрос был успешным, но что Admob не объявление, чтобы показать устройства в это время. Лучший способ убедиться, что вы всегда показываете рекламу, - это использовать посредничество, чтобы невыполненный запрос попадал в другую рекламную сеть. Admob обеспечивает хорошие механизмы для этого.

+0

Благодарим вас за ответ. Я никогда не думал об этом. Я скоро исполню функцию! –

+0

Что означает «посредничество» и как оно реализовано? –

+0

Посредничество - это то, где вы настраиваете свой рекламный клиент для показа рекламы из нескольких рекламных сетей. Большинство Ad-клиентов, таких как Admob, делают это легко, сохраняя конфигурацию на клиенте одинаковой и позволяя вам настроить список рекламных сетей через их веб-приложение. – William

3

Вы должны иметь два рекламного блока идентификаторов. Один для вашего GADBannerView и один для вашего GADInterstitial. Убедитесь, что идентификатор вашего рекламного блока, предоставленный AdMob для вашего межстраничного объявления, составляет точно так же, как и то, что они вам дали. Обновить до latest AdMob SDK, в настоящее время 7.5.0. Также подумайте о вызове presentFromRootViewController(self) через определенные промежутки времени или после того, как пользователь выполнит требуемое действие. То, как вы сейчас устанавливаете его, будет продолжать представлять межстраничные объявления один за другим, потому что вы отправляете запросы на новые межстраничные объявления каждый раз, когда вас увольняют, а затем отображает межстраничное объявление, как только оно получает объявление.

import UIKit 
import GoogleMobileAds 

class ViewController: UIViewController, GADInterstitialDelegate { 

    var myInterstitial : GADInterstitial? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     myInterstitial = createAndLoadInterstitial() 
    } 

    func createAndLoadInterstitial()->GADInterstitial { 
     let interstitial = GADInterstitial(adUnitID: "Your Ad Unit ID") 
     interstitial.delegate = self 
     interstitial?.loadRequest(GADRequest()) 
     return interstitial 
    } 

    @IBAction func someButton(sender: AnyObject) { 
     myInterstitial?.presentFromRootViewController(self) 
    } 

    func interstitialDidReceiveAd(ad: GADInterstitial!) { 
     print("interstitialDidReceiveAd") 
    } 

    func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) { 
     print(error.localizedDescription) 
    } 

    func interstitialDidDismissScreen(ad: GADInterstitial!) { 
     print("interstitialDidDismissScreen") 
     myInterstitial = createAndLoadInterstitial() 
    } 
+0

Спасибо за ваш повтор. Но у меня уже было два идентификатора рекламного блока для 'GADBannerView' и' GADInterstitial'. –

+0

@MitsuhikoShimomura Убедитесь, что идентификатор рекламного блока для вас интерстициальный - это точно так же, как и тот, который вам предоставил AdMob. Использование идентификатора рекламного блока, который не существует/не соответствует действительности, приведет к ошибке «Ошибка запроса: нет рекламы». –

+0

Моя консоль AdMob (http://i.stack.imgur.com/mMVQH.png). Я скопировал идентификатор модуля, и я уверен, что не ошибаюсь. –

Смежные вопросы