隐藏广告横幅不会导致请求/显示更多的广告

我有一个使用AdMob中介服务的testing应用程序设置,目前仅在testing设备上使用。 我已经为每个文档设置了所有必需的方法。 我有一个问题,当发生无法接收广告错误,没有更多的广告要求或显示?

标题:

#import <UIKit/UIKit.h> #import "GADBannerViewDelegate.h" @class GADBannerView, GADRequest; @interface AdTestViewController : UIViewController <GADBannerViewDelegate> { GADBannerView *bannerView_; } @property (nonatomic, retain) GADBannerView *bannerView; - (GADRequest *)createRequest; @end 

Imp文件

 #import "AdTestViewController.h" #import "Constants.h" #import "GADBannerView.h" #import "GADRequest.h" @implementation AdTestViewController @synthesize bannerView = bannerView_; - (void)viewDidLoad { [super viewDidLoad]; // Create a view of the standard size at the top of the screen. // Available AdSize constants are explained in GADAdSize.h. //bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; // Initialize the banner at the bottom of the screen. //CGPoint origin = CGPointMake(0.0, // self.view.frame.size.height - // CGSizeFromGADAdSize(kGADAdSizeBanner).height); self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; //origin:origin]; self.bannerView.adUnitID = kAdMobPublisherID; self.bannerView.delegate = self; [self.bannerView setRootViewController:self]; [self.view addSubview:self.bannerView]; self.bannerView.center = CGPointMake(self.view.center.x, self.bannerView.center.y); [bannerView_ loadRequest:[self createRequest]]; bannerView_.backgroundColor = [UIColor blueColor]; // Make the request for a test ad. Put in an identifier for // the simulator as well as any devices you want to receive test ads. GADRequest *request = [GADRequest request]; request.testDevices = [NSArray arrayWithObjects: @"4D047EB9-A3A7-441E-989E-C5437F05DB04", @"YOUR_DEVICE_IDENTIFIER", nil]; } - (GADRequest *)createRequest { GADRequest *request = [GADRequest request]; // Make the request for a test ad. Put in an identifier for the simulator as // well as any devices you want to receive test ads. request.testDevices = [NSArray arrayWithObjects: @"4D047EB9-A3A7-441E-989E-C5437F05DB04", @"YOUR_DEVICE_IDENTIFIER", nil]; return request; } - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error; { NSLog(@"Error - did Fail to Receive an Ad"); bannerView_.hidden = YES; } - (void)adViewDidReceiveAd:(GADBannerView *)view; { NSLog(@"Ad Received"); bannerView_.hidden = NO; } @end 

我在日志中看到的是“收到的广告”几次,然后是“错误 – 没有收到广告”…在这个日志之后没有进一步的条目就像停止请求? 目前只在模拟器上testing。

任何想法如何解决这个问题,或者在接收到错误/没有广告时隐藏视图的潜在替代方法?

我发现同样的事情 – 当GADBannerView被隐藏时,没有更多的请求被发送出去。

有一件事我成功地尝试了将GADBannerView移出屏幕而不是隐藏它。 当然,您只需要这样做,作为didFailToReceiveAdWithError的结果,然后在adViewDidReceiveAd时将其移回屏幕上。 我得到这个工作,所以用户看到一个很好的animation广告来来去去,就像iAd鼓励。

简而言之,下面的代码将把你的GADBannerView (这里叫做mAdBannerView )放在屏幕的底部或者离屏,取决于布尔值adIsLoaded

  CGRect bannerFrame = mAdBannerView.frame; bannerFrame.origin.y = self.view.bounds.size.height - (adIsLoaded * bannerFrame.size.height); mAdBannerView.frame = bannerFrame; 

在有些东西存在错误时调用的方法

 bannerView_.hidden = 1; 

如果出现错误,则会隐藏该视图,并且如果收到没有错误的广告,它可能会自动显示

认为你最好隐藏bannerView_与隐藏的属性。

 - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error { bannerView_.hidden = YES; } 

当然,您必须记得在广告成功收到时将hidden设置为YES

简单的解决scheme,在adView:didFailToReciewvwAdWithError方法中设置bannerView_.hidden为true。 并检索视图使用adViewDidReceiveAd方法。 示例代码:

这些是ADmob的委托方法:

 - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error { bannerView_.hidden = YES; } - (void)adViewDidReceiveAd:(GADBannerView *)view { bannerView_.hidden = NO; } 

我有同样的问题,这对我工作:

不要使用.hidden属性来隐藏AdMob广告。 只需将alpha设置为0(不可见)或1(可见)。

所以在你的GADBannerView委托方法中…

 -(void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error { // Hide the ad banner. [UIView animateWithDuration:0.5 animations:^{ self.myADBanner.alpha = 0.0; }]; } -(void)adViewDidReceiveAd:(GADBannerView *)bannerView { //Show the ad banner. [UIView animateWithDuration:0.5 animations:^{ self.myADBanner.alpha = 1.0; }]; } 

关于“这个日志之后没有进一步的条目,它就像停止请求?

当我从视图层次结构中删除广告时,也会发生这种情况。 但是,当我将广告添加回视图层次结构时,请求会继续。 他们唯一没有继续的时候是我使用隐藏的财产。