iOS 6或成瘾者给予太多警告(iOS 6 and iAds giving too many war

2019-09-23 09:16发布

这是我的iAd的代码和我得到关于警告

setRequiredContentSizeIdentifiers - deprecated in iOS 6
ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2
setCurrentContentSizeIdentifier - deprecated in iOS 6
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2

我该如何解决这个问题,所以没有警告。

- (int)getBannerHeight:(UIDeviceOrientation)orientation
{
    if (UIInterfaceOrientationIsLandscape(orientation)) {
        return 32;
    } else {
        return 50;
    }
}

- (int)getBannerHeight
{
    return [self getBannerHeight:[UIDevice currentDevice].orientation];
}

- (void)createAdBannerView
{
    Class classAdBannerView = NSClassFromString(@"ADBannerView");
    if (classAdBannerView != nil) {
        self->adView = [[classAdBannerView alloc]
                              initWithFrame:CGRectZero];
        [adView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
                                                          ADBannerContentSizeIdentifier320x50,
                                                          ADBannerContentSizeIdentifier480x32, nil]];
        if (UIInterfaceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier480x32];
        } else {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier320x50];
        }
        [adView setFrame:CGRectOffset([adView frame], 0,
                                             -[self getBannerHeight])];
        [adView setDelegate:self];

        [self.view addSubview:adView];        
    }
}

- (void)fixupAdView:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (adView != nil) {
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier480x32];
        } else {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier320x50];
        }
        [UIView beginAnimations:@"fixupViews" context:nil];
        if (bannerIsVisible) {
            CGRect adBannerViewFrame = [adView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y = 0;
            [adView setFrame:adBannerViewFrame];
            CGRect contentViewFrame = _contentView.frame;
            contentViewFrame.origin.y =
            [self getBannerHeight:toInterfaceOrientation];
            contentViewFrame.size.height = self.view.frame.size.height -
            [self getBannerHeight:toInterfaceOrientation];
            _contentView.frame = contentViewFrame;
        } else {
            CGRect adBannerViewFrame = [adView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y =
            -[self getBannerHeight:toInterfaceOrientation];
            [adView setFrame:adBannerViewFrame];
            CGRect contentViewFrame = _contentView.frame;
            contentViewFrame.origin.y = 0;
            contentViewFrame.size.height = self.view.frame.size.height;
            _contentView.frame = contentViewFrame;
        }
        [UIView commitAnimations];
    }
}

Answer 1:

您正在使用过时的方法/符号。

弃用是指这些方法/符号还在这里,并且通常会仍然工作,但他们可能会在未来的iOS版本中删除。

官方文档总是列出过时方法/符号,通常提供了新的问题。

所以,我讨厌这样说,作为一个答案,而只是阅读文档

关于iOS 6的警告都差不太多,因为iOS 6中是相当新。
如果你可以,但也解决这些问题。 什么是木已成舟。

但似乎你还使用方法/被抛弃了在iOS 4.2的符号和标记!
这实际上是一个问题。 iOS 4的支持正在下降,因此实际的代码可能不会长久工作。

所以,阅读文档(再次),了解新方法,并修复你的代码。

例如:

ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2

在文档 ,你可以阅读以下内容:

ADBannerContentSizeIdentifier320x50指示横幅视图是320点通过在尺寸为50点。 这个尺寸在iPhone上用于人像的广告。 在IOS 4.0及更高版本(不推荐使用。使用ADBannerContentSizeIdentifierPortrait代替。)可用。 弃用的iOS 4.2。 宣布ADBannerView_Deprecated.h。

因此,而不是ADBannerContentSizeIdentifier320x50 ,只需使用ADBannerContentSizeIdentifierPortrait
同为ADBannerContentSizeIdentifier480x32 。 使用ADBannerContentSizeIdentifierLandscape代替。

然后你会是安全的,你将不再有一个关于此警告。

然后,只需做其他符号相同。

编辑


至于您的评论说, ADBannerContentSizeIdentifierPortraitADBannerContentSizeIdentifierLandscape也不赞成在iOS 6。

这是关系到弃用setCurrentContentSizeIdentifiersetRequiredContentSizeIdentifiers

苹果公司建议不要再使用这种方法,而使用iOS版的自动调整功能。



文章来源: iOS 6 and iAds giving too many warnings