我有一个iAd横幅,即使在我使用导航控制器推送新的视图控制器后,它仍会继续请求广告。我该如何防止这种情况?我可能错误地创建了广告对象。
adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.delegate = self;
[adView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
CGRect frame = adView.frame;
frame.origin.x = 0;
frame.origin.y = self.view.frame.size.height - (frame.size.height);
adView.frame = frame;
这是为iAd制作广告横幅的正确方法吗?如果没有,您能否告诉我如何正确创建广告横幅对象?
-(void) bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"Failed to get banner ad");
adView.hidden = YES;
}
-(void) bannerViewWillLoadAd:(ADBannerView *)banner
{
[self.view addSubview:adView];
NSLog(@"bannerView Will Load Ad");
}
-(void) bannerViewDidLoadAd:(ADBannerView *)banner
{
adView.hidden = NO;
NSLog(@"bannerView Did Load Ad");
}
-(BOOL) bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
NSLog(@"Ad banner action");
return YES;
}
-(void) bannerViewActionDidFinish:(ADBannerView *)banner
{
adView.hidden = NO;
NSLog(@"bannerViewActionDidFinish");
}
这是我的横幅视图方法。
bannerViewWillLoadAd和bannerViewDidLoadAd即使在我推送一个新的视图控制器后仍然会被调用。
编辑:还有一个更快的问题。横幅视图通常在推送新视图控制器后约5分钟请求另一个广告,并且通常在视频控制器上每隔30秒请求我希望广告进入。这5分钟间隔非常奇怪对我来说。是否有理由等待很长时间才能申请广告?
答案 0 :(得分:0)
横幅的创建看起来是正确的。或者,您可以在XIB / Storyboard中执行此操作,但这不是必需的。
您需要清除viewWillDisappear上的adbanners委托或viewDidDisappear视图控制器生命周期方法。 相反,您可以在viewDidAppear方法中将其设置回来,这样当您返回到该视图控制器时它将再次接收广告。
这会阻止消息传递,而另一个视图控制器是堆栈中的主要控制器。如果您没有清除代理,或者当您在不同的视图控制器上时释放横幅(如果您没有使用ARC),则可能会崩溃。