iAd BannerView contentsizeIdentifier Portrait还是320x50?

时间:2011-07-14 19:36:45

标签: xcode xcode4 iad banner

所以在viewdidload中我有

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;

表示iAd的横幅。我为iOS 4.2 +构建调试器控制台告诉我:

  

ADBannerView:不推荐使用ADBannerContentSizeIdentifier320x50,   请改用ADBannerContentSizeIdentifierPortrait

所以我这样做:

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;

并在4.1中降低应用程序崩溃,告诉我EXC_BAD_ACCESS。

我不知道要采用哪一个,但320x50的版本适用于较新版本,但我从控制台获得了通知/错误。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

好的,我让它像这样工作:

NSString *os = [[UIDevice currentDevice] systemVersion];
        NSString *ioss = [os stringByReplacingOccurrencesOfString:@"." withString:@""];
        if ([ioss length] == 2) {
            NSLog(@"length = 2");
            float x = ([ioss floatValue]*10);
            NSString *ios = [[NSString alloc] initWithFormat:@"%.f",x];
            if ([ios floatValue] > 419) {
                NSLog(@"Portrait");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
            } else {
                NSLog(@"320x50");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
            }

        }
        else if ([ioss length] == 3) {
            NSString *ios = ioss;
            NSLog(@"length = 3");
            if ([ios floatValue] > 419) {
                NSLog(@"Portrait");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
            } else {
                NSLog(@"320x50");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
            }

        }

请注意,此方法可用于所有其他类型的内容,它的作用是检测ios版本,并在高于给定版本及以下版本时执行操作。

但这也适用于我的情况:

if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}

答案 1 :(得分:2)

在4.2之前的iOS版本上不存在

ADBannerContentSizeIdentifierPortrait,因此它会引发错误。你可以做的是检查符号是否存在,并根据它设置属性。

if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}