Тестовые iAds не загружаются

Я ломал голову над этим пару дней. Я не могу заставить iAds отображаться в симуляторе (или на реальном оборудовании).

  1. Я заполнил всю информацию о контракте в iTunes Connect
  2. Создан профиль обеспечения разработки для приложения.
  3. Связал фреймворк iAd и импортировал его в верхнюю часть файла Swift ViewController.
  4. Сделал ViewController подклассом ADBannerViewDelegate.
  5. реализовано 3 метода для делегата (см. ниже)

Я не могу понять, почему тестовые объявления не загружаются. У кого-нибудь еще была эта проблема? Насколько я понимаю, вам больше не нужно отдельно регистрировать каждое приложение для iAds через iTunes Connect.

Я включу свой код ниже для справки, хотя у меня есть подозрение, что проблема где-то в настройке.

import UIKit
import iAd

class AdViewController: UIViewController, ADBannerViewDelegate {

var bannerView = ADBannerView()

override func viewDidLoad() {
    super.viewDidLoad()

    self.canDisplayBannerAds = true

    bannerView.frame = CGRectMake(0, self.view.frame.height-50, self.view.frame.width, 50)
    view.addSubview(bannerView)

    bannerView.delegate = self
    bannerView.hidden = true

}

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

func bannerViewDidLoadAd(banner: ADBannerView!) {
    self.bannerView.hidden = false
    println("bannerView unhidden")
}

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

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

Редактировать: этим утром я попытался загрузить и запустить несколько демонстраций iAd с gitHub, чтобы посмотреть, смогу ли я заставить их работать, но безрезультатно. Я предполагаю, что код правильный, поэтому что-то должно быть не так в другом месте. https://github.com/sarchak/iAds


person Erik    schedule 17.01.2015    source источник
comment
После установки self.canDisplayBannerAds = true вам не нужен делегат объекта bannerView и т. д. Все устанавливается автоматически. Когда баннер доступен, размер вашего контроллера просмотра будет изменен на высоту минус высота баннера, и будет запущена автоматическая компоновка. Таким образом, баннер всегда отображается внизу. Проверьте, поместили ли вы правильный класс ADViewController в свою раскадровку. Поскольку вы вручную добавляете представление баннера, разве ваш ADBannerView не встроен в контроллер представления вкладок? Возможно, ваш баннер находится под вкладками.   -  person Matteo Piombo    schedule 17.01.2015
comment
Спасибо за ваш ответ. Я не знал, что баннер будет добавлен автоматически, и автоматический макет сработает. Это было очень полезно. К сожалению, похоже, это не решило проблему. Я попытался загрузить этот образец проекта и запустить его, но это тоже не сработало. github.com/ashishkakkad8/iAdBannerExample Это работает для вас?   -  person Erik    schedule 17.01.2015
comment
Не пробовал, но запуск нового проекта, добавление iAd framework и self.canDisplayBannerAds = true в viewDidLoad, у меня работает. В своем проекте я использовал другой подход, так как мне нужно было разместить рекламу вверху. У меня был bannerView как синглтон, используемый различными ViewController. Вы зарегистрированный (платный) разработчик? Я не знаю, является ли это обязательным для получения тестовых баннеров разработки.   -  person Matteo Piombo    schedule 17.01.2015
comment
Я только что попытался создать новый проект, добавив структуру iAd и оператор импорта, а затем добавил self.canDisplayBannerAds = true в viewDidLoad, но безуспешно. Я зарегистрирован как платный разработчик. Я действительно в тупике.   -  person Erik    schedule 17.01.2015
comment
Я не знаю почему, но он только начал работать на моем iPhone. Это все еще не работает в симуляторе, но, по крайней мере, сейчас я делаю некоторые успехи.   -  person Erik    schedule 17.01.2015
comment
Напоминаем, что на вашем iPhone вы можете изменить настройки iAd в разделе Настройки -> Разработчик. Если вы используете настраиваемое размещение баннера, может быть полезно включить параметр Выделять обрезанные баннеры. Таким образом, вы можете визуально убедиться, что ваш макет не закрывает части объявления. Поскольку реклама работает на вашем iPhone, вероятно, увидеть ее на симуляторе — всего лишь метр времени. При использовании автоматической конфигурации баннеров self.canDisplayBannerAds = true вы не видите смоделированные неудачные запросы баннеров.   -  person Matteo Piombo    schedule 18.01.2015
comment
Спасибо за дополнительную информацию, очень полезно. Да, я не уверен, что происходит в симуляторе, но я не собираюсь слишком беспокоиться об этом, потому что я могу проверить это прямо сейчас. Вы совершенно правы, метод didFailToReceiveAdWithError никогда не вызывается в симуляторе, но периодически вызывается при работе на телефоне.   -  person Erik    schedule 19.01.2015


Ответы (1)


не рекомендуется вручную устанавливать размер показа рекламы.
использовать метод init(), а затем настраивать рамку не имеет смысла

вы должны инициализировать свой вид баннера следующим образом: let bannerView = ADBannerView(adType:ADAdType.Banner) а затем сразу же установить его делегата и добавить его в корневой вид

person duan    schedule 19.01.2015
comment
Вау, это исправлено! Спасибо! - person Erik; 19.01.2015