2010-11-23 6 views
1

Update 12/16/2010: Похоже, что аналогичная проблема при ориентации устройства 4.0 с 4.2 SDK ... ваше приложение будет врезаться немедленно, если вы использовали интерфейс Builder для создания своего рекламного баннера. Слабой связью инфраструктуры iAd и повторным созданием реализации рекламного баннера на стороне кода было исправление. Благодаря этой теме Рэй Wenderlich: http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-appМААШ «Неверный размер содержимого„ADBannerContentSizePortrait“передается ADAdSizeForBannerContentSize» в iOS 4.2

---

Привет, я просто попытался запустить мое приложение с помощью iOS 4.2 SDK (окончательный) и нацеливание IOS устройств 4.0, и несмотря на то, что мое приложение компилируется хорошо, я получаю эту ошибку сразу после запуска ...


*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'Invalid content size 'ADBannerContentSizePortrait' passed to 
ADAdSizeForBannerContentSize' 
... 

Я пытался ...


- (void)viewDidLoad { 
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
} 

... но нет удачи, все еще получая ту же ошибку при сбое. В IB это выглядит как единственные варианты для «Sizes»: «Portrait, Landscape, Both», которые, как я полагаю, iOS 4.0 не является поклонником.

У кого-нибудь есть предложения? Большое спасибо.

ответ

0

вы должны изменить

- (void)viewDidLoad { self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; }

в - (void)viewDidLoad { self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait //or landscape }

, что ты осуждался смысл ее больше не поддерживается в прошивкой 4.2

+0

спасибо - я изначально устанавливал размер баннера в IB, который, похоже, также исправляется путем удаления и повторного добавления рамки iAd в проект. – taber 2010-11-27 04:33:59

0

Похоже, что если вы удалите инфраструктуру iAd и добавите ее, используя «Добавить существующую структуру ...», это устраняет проблему ... странно. Надеюсь, это помогает кому-то другому.

+0

Единственная проблема в том, что я не смог успешно загрузить объявление в симуляторе (4.0 и 4.2) ... получить эту ошибку в bannerView: didFailToReceiveAdWithError: «Ошибка домена = ADErrorDomain Code = 3» Операция не удалось завершить. Ad инвентаризация недоступна »' – taber 2010-11-23 03:55:16

+0

Другое примечание - это действительно работает на устройстве ... просто не в симуляторе. Я думаю, что это может быть проблема с маршрутизатором или небольшим количеством проблем. Все установлено сейчас! – taber 2010-11-23 03:57:38

6

Это работает для меня. Кажется, что версии os ниже 4.2 все еще нуждаются в устаревших идентификаторах контента контента, по крайней мере, когда ADBannerView создается в Interface Builder. У меня также есть инфраструктура iAd с слабой связью в качестве меры предосторожности. Надеюсь, это полезно кому-то, и большое спасибо большому сообществу на этом сайте за всю замечательную информацию и прозрение!

// if the current version of the os is less than 4.2, use the old way of defining the banner size 
if ([[[UIDevice currentDevice] systemVersion] compare:@"4.2" options:NSNumericSearch] == NSOrderedAscending) { 

    adBanner.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50]; 

    adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 

    NSLog(@"below 4.2"); 

} else { 

    adBanner.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait]; 

    adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 

    NSLog(@"4.2 or above"); 

} 
0

Ответ, который находится в «обновлении» вопроса, верен. Обратите внимание, что в это время написания, thread by Ray Wenderlich нуждается в обновлении, поскольку использует устаревшие константы iAd. В противном случае это очень хороший ресурс для решения этой проблемы.