iAds «Недопустимый размер содержимого« ADBannerContentSizePortrait »передан в ADAdSizeForBannerContentSize» в iOS 4.2 - PullRequest
1 голос
/ 23 ноября 2010

Обновление от 16.12.2010: Похоже, что при настройке таргетинга на устройства 4.0 с SDK 4.2 возникает похожая проблема ... ваше приложение немедленно вылетает, если вы использовали Interface Builder для создания рекламного баннера.Посмотреть.Исправлена ​​слабая связь между платформой iAd и повторное создание реализации рекламного баннера на стороне кода.Спасибо этой теме от Ray Wenderlich: http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-app

---

Привет, я только что попытался запустить свое приложение, используя 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 похоже, что единственными опциями для «Размеров» являются «Портрет», «Пейзаж» или «Оба», которые, я думаю, iOS 4.0 не фанат.

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

Ответы [ 4 ]

6 голосов
/ 08 февраля 2011

Это сработало для меня.Кажется, что версии os ниже 4.2 все еще хотят устаревшие идентификаторы размера контента, по крайней мере, когда ADBannerView создается в Интерфейсном Разработчике.В качестве меры предосторожности у меня также есть слабосвязанная среда 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 голосов
/ 15 февраля 2011

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

0 голосов
/ 27 ноября 2010

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

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

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

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

0 голосов
/ 23 ноября 2010

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

...