在iOS 4.2中iAds“无效的内容大小'ADBannerContentSizePortrait'传递给ADAdSizeForBannerContentSize”

时间:2010-11-23 03:43:40

标签: iphone ios4 interface-builder iad ios-4.2

2010年12月16日更新:使用4.2 SDK定位4.0设备时似乎存在类似问题...如果您使用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 个答案:

答案 0 :(得分:6)

这对我有用。似乎4.2以下的操作系统版本仍然需要不推荐使用的内容大小标识符,至少在Interface Builder中创建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");

}

答案 1 :(得分:0)

看起来如果您删除iAd框架并使用“添加现有框架...”重新添加它,这就解决了这个问题......很奇怪。希望这有助于其他人。

答案 2 :(得分:0)

你必须改变

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

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

您所拥有的内容已弃用,意味着自iOS 4.2起不再支持

答案 3 :(得分:0)

问题“更新”中的答案是正确的。请注意,在撰写本文时,thread by Ray Wenderlich需要更新,因为它使用了弃用的iAd常量。否则它是解决这个问题的非常好的资源。