iAd BannerView contentsizeIdentifier Portrait还是320x50?

Jon*_*asG 2 xcode banner iad xcode4

所以在viewdidload我有

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
Run Code Online (Sandbox Code Playgroud)

为了iAd的旗帜.我为iOS 4.2 +构建调试器控制台告诉我:

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

所以我做:

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
Run Code Online (Sandbox Code Playgroud)

并在4.1和更低的应用程序崩溃告诉我EXC_BAD_ACCESS.

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

Jon*_*asG 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;
            }

        }
Run Code Online (Sandbox Code Playgroud)

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

但这也适用于我的情况:

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