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 在模拟器和设备中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ImageView加载问题:在模拟器中工作,在真实设备中不起作用
MPMoviePlayerController 在 iOS4 中不起作用
网络调用抛出 IO 异常并且在 android 中拒绝连接在 android 设备中不起作用