iAd 在模拟器和设备中不起作用

Posted

技术标签:

【中文标题】iAd 在模拟器和设备中不起作用【英文标题】:iAds not working in Simulator and device 【发布时间】:2011-11-24 09:42:17 【问题描述】:

当我运行我的应用程序时,我会收到这条关于 iAd 横幅视图的消息。什么意思?

Error Domain=ADErrorDomain Code=3 "无法执行该操作 完全的。广告资源不可用” UserInfo=0x60455a0 ADInternalErrorCode=3, NSLocalizedFailureReason=广告库存 不可用

这是我的代码:

#pragma mark -
#pragma mark create BannerView:
- (void)createAdBannerView 
    Class classAdBannerView = NSClassFromString(@"ADBannerView");
    if (classAdBannerView != nil) 
        self.adBannerView = [[[classAdBannerView alloc] initWithFrame:CGRectZero] autorelease];
        [adBannerView setRequiredContentSizeIdentifiers:[NSSet setWithObjects: ADBannerContentSizeIdentifierPortrait, ADBannerContentSizeIdentifierLandscape, nil]];
        if (UIInterfaceOrientationIsLandscape([UIDevice currentDevice].orientation)) 
            [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierLandscape];
         else 
            [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierPortrait];            
        
        [adBannerView setFrame:CGRectOffset([adBannerView frame], 0, -[self getBannerHeight])];
        [adBannerView setDelegate:self];

        [self.view addSubview:adBannerView];        
    


- (void)fixupAdView:(UIInterfaceOrientation)toInterfaceOrientation 
    if (adBannerView != nil)         
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) 
            [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierLandscape];
         else 
            [adBannerView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierPortrait];
                  
        [UIView beginAnimations:@"fixupViews" context:nil];
        if (adBannerViewIsVisible) 
            CGRect adBannerViewFrame = [adBannerView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y = 0;
            [adBannerView 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 = [adBannerView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y = -[self getBannerHeight:toInterfaceOrientation];
            [adBannerView setFrame:adBannerViewFrame];
            CGRect contentViewFrame = contentView.frame;
            contentViewFrame.origin.y = 0;
            contentViewFrame.size.height = self.view.frame.size.height;
            contentView.frame = contentViewFrame;            
        
        [UIView commitAnimations];
       






#pragma mark -
#pragma mark ADBannerViewDelegate

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
    if (!adBannerViewIsVisible)                 
        adBannerViewIsVisible = YES;
        [self fixupAdView:[UIDevice currentDevice].orientation];
    


- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

    NSLog(@"the failed error is %@",error); 
    if (adBannerViewIsVisible)
            
        adBannerViewIsVisible = NO;
        [self fixupAdView:[UIDevice currentDevice].orientation];
    
    //NSLog(@"bannerView:didFailToReceiveAdWithError: %@",[error localizedDescription]);




how to solve this problem 

【问题讨论】:

【参考方案1】:

您将在模拟器或设备中随机收到此错误消息,以便您可以在没有 iAd 可用时测试您的应用及其行为(隐藏 AdView,使用其他广告提供商...)。但这不是模拟器 / iAd 框架 / iAd 网络的错误:它是一个可以进行更好测试的功能。

此外,在测试设备上以测试模式部署应用时,您无法获得“真正的”iAd。它必须经过 Apple 审核并从 AppStore 下载。

【讨论】:

【参考方案2】:

“广告资源不可用”是指...没有可用的广告。看起来好像工作正常。

iAd 易于实施,但填充率低(即许多请求未得到满足),而且在许多国家/地区根本不可用。

【讨论】:

【参考方案3】:

从您的设备中删除该应用,然后从 XCode 重新安装。这为我解决了问题。

【讨论】:

以上是关于iAd 在模拟器和设备中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 WKWebView 中加载本地文件在设备中不起作用

ImageView加载问题:在模拟器中工作,在真实设备中不起作用

MPMoviePlayerController 在 iOS4 中不起作用

网络调用抛出 IO 异常并且在 android 中拒绝连接在 android 设备中不起作用

UIActivityViewController 在 iOS 8 中不起作用

使用 ffmpeg 提取的电视音频在 iOS 中不起作用(但在模拟器中起作用)