1

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

4 回答 4

6

这对我有用。似乎 4.2 以下的 os 版本仍然需要弃用的内容大小标识符,至少在 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");

}
于 2011-02-08T18:45:25.090 回答
0

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

于 2010-11-23T03:45:53.340 回答
0

你必须改变

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

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

您所拥有的已被弃用,这意味着从 iOS 4.2 开始不再支持它

于 2010-11-26T22:16:26.330 回答
0

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

于 2011-02-15T04:00:50.143 回答