隐藏广告横幅不会导致请求/显示更多的广告
我有一个使用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; }]; }
关于“这个日志之后没有进一步的条目,它就像停止请求?
当我从视图层次结构中删除广告时,也会发生这种情况。 但是,当我将广告添加回视图层次结构时,请求会继续。 他们唯一没有继续的时候是我使用隐藏的财产。