Search code examples
xcodexcode4iadbanner

iAd BannerView contentsizeIdentifier Portrait or 320x50?


So in viewdidload i have

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

for the banner of an iAd. i I build for iOS 4.2+ the debugger console tells me this:

ADBannerView: ADBannerContentSizeIdentifier320x50 is deprecated, please use ADBannerContentSizeIdentifierPortrait instead

so then i do:

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

and on 4.1 and lower the app crashes telling me EXC_BAD_ACCESS.

I dont know which one to take, but the one with 320x50 works on newer versions, but i get that notification/error from the console. Any suggestions?


Solution

  • Ok i got it to work like this:

    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;
                }
    
            }
    

    Note that this method can be used for all kind of other stuff, what it does is it detects the ios version, and performs an action when it is above a given version and below.

    but also this works in my case:

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