我在XCode 4中测试iAd。
一切正常,直到第一次收到bannerView:didFailToReceiveAdWithError:
,我通过在屏幕上滑动横幅做出反应。
//move the ad back off the screen if an error occurs
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
if (self.bannerIsInScreenBounds)
{
[UIView beginAnimations:@"animateAdBannerOff" context:NULL];
// move the banner view off the screen.
banner.frame = CGRectOffset(banner.frame, 320, 0);
[UIView commitAnimations];
}
}
之后,不再向ADBannerViewDelegate发送bannerViewDidLoadAd:
条消息。我正在将该方法记录在顶部,它不再被调用。
我没有发布横幅或任何东西,ADBannerViewDelegate类仍然在那里并做其他事情。
可能出现什么问题?
感谢。
答案 0 :(得分:0)
为什么你希望它在发生错误后加载广告 - 我认为这是正确的行为。
查看评论显示错误为“操作无法完成。广告资源不可用”。
如果找不到任何广告,你如何期望它给你广告;)
答案 1 :(得分:0)
好的,不是理想的解决方案,但这就是我最终做的事情。
每当我收到didFailToReceiveAdWithError时,我等待10秒钟(以避免因失败而发送垃圾邮件),然后重新创建横幅。
-(void)replaceAdView {
UIView *adViewSuperview = [adView superview];
[adView removeFromSuperview];
[adView release];
//starting off the screen again
adView = [[NSClassFromString(@"ADBannerView") alloc] initWithFrame:CGRectMake(320, 382, 320, 50)];
adView.delegate = self;
if (adViewSuperview) {
[adViewSuperview addSubview:adView];
}
self.bannerIsInScreenBounds = NO;
}
答案 2 :(得分:0)
作为我在how to implement AdBannerview and ADBannerview delegate的评论,在ipad模拟器中运行iphone应用程序,我在设置ADBannerView委托时立即获得didFailToReceiveAdWithError
,而从未进行另一次委托调用。在iphone模拟器上运行它(或将应用程序目标更改为通用),只有在将ADBannerView添加为子视图后才会调用该委托,然后每隔30秒委派一次调用。