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不是它的粉丝。
有人有什么建议吗?非常感谢。
答案 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常量。否则它是解决这个问题的非常好的资源。