【问题标题】:iAd BannerView contentsizeIdentifier Portrait or 320x50?iAd BannerView contentsizeIdentifier Portrait or 320x50?
【发布时间】:2011-07-14 19:36:45
【问题描述】:

所以在 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 的那个适用于较新的版本,但我从控制台收到通知/错误。有什么建议吗?

【问题讨论】:

  • 您应该从问题中删除答案,将其添加为答案并接受它。那些来找它的人会这样。

标签: xcode xcode4 iad banner


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    ADBannerContentSizeIdentifierPortrait 在 4.2 之前的 iOS 版本中不存在,因此会引发错误。您可以做的是检查符号是否存在并根据它设置属性。

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

    【讨论】:

    • 前面的“自己”是拧的,其余的都ok。
    • @Maxner 实际上我从我的示例代码中复制了它,我在其中将我的ADBannerView 实例声明为self.bannerView。这应该可以解释我为什么使用它。
    • @Maxner 另外this link 应该对版本支持有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多