2015-01-28 4 views
0

У меня проблема с моим кодом. Я пытаюсь программно добавить iAd в мое представление в Xcode. Есть несколько раз, когда он случайным образом работает, и я запускаю его снова, не меняя никакого кода, и он больше не работает. Во время этих нескольких раз он случайным образом работает, когда я переключаюсь на другое представление, а затем обратно на тот, в котором находится iAd, iAd - это просто пустой кадр iAd, не отображающий анимацию, которая должна быть. Это просто не загрузка iAd. Пожалуйста помоги! Код:iAd не работает в Xcode 6

import UIKit 
import Foundation 
import iAd 

class ViewController: UIViewController, ADBannerViewDelegate { 
//variables******************************************* 
var adBannerView = ADBannerView(frame: CGRect.zeroRect) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.canDisplayBannerAds = true 
    loadAds() 
} 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

//iAd************************************************** 

func loadAds() 
{ 
    adBannerView = ADBannerView(frame: CGRect.zeroRect) 
    adBannerView.center = CGPoint(x: adBannerView.center.x, y: view.bounds.size.height - adBannerView.frame.size.height/2 - 50) 
    adBannerView.delegate = self 
    adBannerView.hidden = true 
    view.addSubview(adBannerView) 
} 

func bannerViewWillLoadAd(banner: ADBannerView!) 
{ 

    println("sort of working1") 

} 

func bannerViewDidLoadAd(banner: ADBannerView!) 
{ 

    adBannerView.hidden = false 
    println("sort of working2") 

} 

func bannerViewActionDidFinish(banner: ADBannerView!) 
{ 


    println("sort of working3") 

} 

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool 
{ 

    println("sort of working4") 
    return true 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) 
{ 
    adBannerView.hidden = true 
    println("error1") 
} 

} 

UPDATE 1/28/15: Так или иначе, МААШ теперь работать без изменения кода, но я испытываю еще одну проблему. После того как я оставил представление о том, что iAd включен, он превращается в пустой белый кадр с небольшим логотипом iAd в нижнем углу рамки. Кроме того, еще одна большая проблема заключается в том, что она затемняет панель вкладок для представления с помощью iAd.

+0

увидеть мой ответ здесь: [Test МААШ не загрузит] (http://stackoverflow.com/questions/27995945/test-iads- wont-load/28026491 # 28026491) – duan

+0

Это не сработало. Я считаю, что я уже делаю то, что говорит ссылка в функции loadAds(). Панель вкладок темнее, чем предполагается (по сравнению с представлением без объявления), и когда я переключаю виды, iAd превращается в пустой кадр. @Carrl –

+0

Кроме того, когда я нахожусь в представлении с объявлением, он выводит «вид работы1 вид работы2» , но он выводит «error1», когда я переключаю виды и возвращаюсь к представлению с объявлением. –

ответ

0

Даже не работают println? iAds не всегда отображаются, зависит от возможности подключения к серверам iAd, поэтому вы должны внедрить didFailToReceiveAdWithError и скрыть баннер, если никакая информация не поступает с сервера из-за какой-либо проблемы.

+0

Работает println. Когда я пытаюсь это сделать, он возвращает «рабочий 1» и «рабочий 2», и когда я переключаю виды, он дает мне «error1» –

+0

Кроме того, он затемняет панель вкладок. –

+0

См. Обновленный вопрос. –

0

Если вы используете автоматическую презентацию iAd, вам не нужно ничего делать после self.canDisplayBannerAds = true. Контроллер вашего вида будет автоматически уменьшаться, а автоматический макет будет активирован, когда доступен iAd. IAd будет представлен внизу.

Таким образом, ваш пример кода может быть просто:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.canDisplayBannerAds = true 
} 

Если вам нужно другое поведение здесь просто iAd example. Он использует singleton ADBannerView и может представить его в верхней части окна. В любом случае считаю, что правильный способ вручную создать экземпляр ADBannerView является: ADBannerView(adType: ADAdType.Banner)

+0

Я пробовал учебник, и я получил ошибку: использование неразрешенного идентификатора «moveADBannerToViewController». Я поместил Global_iAd в свое приложение. –

+0

Также, пожалуйста, ознакомьтесь с обновленным вопросом. –

+0

Вы пробовали решение выше? Он должен просто работать. Пример, о котором я говорил, необходим только в том случае, если вам нужно другое поведение. Если вы откажетесь от автоматического баннера, вы не должны устанавливать для параметра self.canDisplayBannerAds значение true. По умолчанию это неверно. –

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

  • Нет связанных вопросов^_^