Почему мой рекламный адмоб работает нормально в симуляторе xcode, а не на моих тестовых устройствах (iphone 4s & ipod 5th gen)?

Итак, у меня есть это приложение, в котором есть как рекламный баннер AdBob, так и промежуточная реклама. Баннер отлично работает на всех экранах. Внутренняя реклама должна загружаться только на одном экране - и она нормально загружается, когда я тестирую ее в симуляторе xcode. Но когда я тестирую на своем iPhone и iPod, проценты не загружаются, и я получаю эту ошибку: Ошибка запроса: Получен неверный ответ.interstitialDidFailToReceiveAdWithError: Ошибка запроса: получен неверный ответ. Кто-нибудь когда-нибудь сталкивался с этим раньше или может знать, почему это происходит? Вот код, с которым я работаю:

   // interstitial ad variable...
var interstitial: GADInterstitial?
var timer:NSTimer?
var loadRequestAllowed = true
let screen = UIScreen.mainScreen().bounds
let IS_IPAD = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad
var buttonHeight:CGFloat = 0.0
var buttonOffsetY:CGFloat = 0.0
let statusbarHeight:CGFloat = 20.0
var iAdSupported = false


       // load the interstitial
    //Admob Interstitial
    buttonHeight = IS_IPAD ? 30 : 20
    buttonOffsetY = statusbarHeight
    if !iAdSupported {
        interstitial = createAndLoadInterstitial()
    } // closes if !iAdSupported



//        presentInterstitial()
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("presentInterstitial"), userInfo: nil, repeats: false)
    println("the timer made presentInterstitial run")




 //Interstitial func
func createAndLoadInterstitial()->GADInterstitial {
    println("createAndLoadInterstitial")
    var interstitial = GADInterstitial(adUnitID: "ca-app-pub-4471013071748494/2225255714")

    interstitial.delegate = self
    interstitial.loadRequest(GADRequest())

    return interstitial
} // closes createAndLoadInterstitial …

func presentInterstitial() {
    if let isReady = interstitial?.isReady {
        interstitial?.presentFromRootViewController(self)
        println("presentInterstitial function ran")
    } // closes if let isReady
} // closes presentInterstitial …



//Interstitial delegate
func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
    println("interstitialDidFailToReceiveAdWithError:\(error.localizedDescription)")
    //  ResultsBtn?.enabled = false
    interstitial = createAndLoadInterstitial()
} // closes interstitial …

1 ответ

Решение

Вы пытаетесь представить свой рекламный ролик, прежде чем он сможет загрузить. Ваш timer пожары func presentInterstitial через одну секунду. Измените это на большее число, чтобы дать промежуточное время для загрузки.

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADInterstitialDelegate {

    var admobInterstitial : GADInterstitial?
    var timer : NSTimer?

    override func viewDidLoad() {
        super.viewDidLoad()

        admobInterstitial = createAndLoadInterstitial()
        timer = NSTimer.scheduledTimerWithTimeInterval(5.0, target:self, selector: Selector("presentInterstitial"), userInfo: nil, repeats: false)
    }

    func createAndLoadInterstitial()->GADInterstitial {
        var interstitial = GADInterstitial(adUnitID: "yourAdMobADUnitID")
        interstitial.delegate = self
        interstitial.loadRequest(GADRequest())
        return interstitial
    }

    func presentInterstitial() {
        if let isReady = admobInterstitial?.isReady {
            admobInterstitial?.presentFromRootViewController(self)
        }
    }

    func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
        println("interstitialDidFailToReceiveAdWithError:\(error.localizedDescription)")
        admobInterstitial = createAndLoadInterstitial()
    }

Кстати, вы не должны давать локальной переменной то же имя, что и глобальной переменной.

Другие вопросы по тегам