iAd BannerViewDelegate — предупреждения выводятся на консоль

#iad #adbannerview

#iad #adbannerview

Вопрос:

Wirh SDK 4.2 и iOS5, это создало для меня некоторую путаницу. В моем новом приложении на основе панели вкладок у меня есть несколько контроллеров просмотра. Я тщательно проверил и перепроверил, что все методы iAd delgate присутствуют. На самом деле, я воспользовался для этого примером iAdSuite.

Я на некоторое время оставил приложение запущенным на симуляторе в ViewController, который не показывает никаких тестовых объявлений. Я увидел следующее сообщение (несколько), зарегистрированное на консоли.

2011-10-30 18:45:07.534 StopAlert[29299:207] ADBannerView: необработанная ошибка (ни один делегат или делегат не реализует didFailToReceiveAdWithError:): Ошибка Domain= ADErrorDomain Code = 3 «Операция не может быть завершена. Инвентарь объявлений недоступен» userInfo= 0x795d7d0 {ADInternalErrorCode= 3, NSLocalizedFailureReason= Инвентарь объявлений недоступен}

Меня беспокоит, что в нем указано, что «ни один делегат или делегат не реализует nto …» — хотя в файле .m есть эти методы делегирования. Вот они:

 - (void)bannerViewDidLoadAd:(ADBannerView *)banner {
   [self layoutForCurrentOrientation:YES];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
[self layoutForCurrentOrientation:YES];
}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {
return YES;
}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner {
}
 

Я что-то упустил?? Я установил точки останова во всех 4 из них — и, конечно же, они не попадают. Делегату для баннера присвоено значение «self», а объявление в файле .h также содержит ADBannerViewDelegate .

Я в тупике. Может кто-нибудь помочь мне пройти мимо этого?

Заранее спасибо.

Ответ №1:

Для тех, кто сталкивается с этим вопросом через поиск, теперь я понимаю, что меня сбило с толку в коде примера iAdSuite (и техническом примечании о совместном использовании рекламного баннера в нескольких представлениях). В примере технической заметки adBanner настраивается в своем applicationDidFinishLaunching. Это сработало для iAdSuite, потому что (вот кикер) его первый просмотр не пытался представить adBanner. Итак, тонкая проблема?Sam? и я столкнулся с приложением, которое хочет показать рекламный баннер в первом представлении, заключается в том, что представление уже загружено до того, как делегат приложения получит сообщение applicationDidFinishLaunching. В моем случае я переместил свой код настройки adBanner из делегата приложения и поместил его в viewWillAppear моего начального контроллера представления. И при этом я выполняю инициализирующую настройку только в том случае, если adBanner еще не существует (что имеет место, когда поток возвращается к моему первоначальному контроллеру представления).