甚至在更改viewcontroller后请求iAd BannerViews

时间:2014-07-30 17:03:44

标签: ios iad

我有一个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分钟间隔非常奇怪对我来说。是否有理由等待很长时间才能申请广告?

1 个答案:

答案 0 :(得分:0)

横幅的创建看起来是正确的。或者,您可以在XIB / Storyboard中执行此操作,但这不是必需的。

您需要清除viewWillDisappear上的adbanners委托或viewDidDisappear视图控制器生命周期方法。 相反,您可以在viewDidAppear方法中将其设置回来,这样当您返回到该视图控制器时它将再次接收广告。

这会阻止消息传递,而另一个视图控制器是堆栈中的主要控制器。如果您没有清除代理,或者当您在不同的视图控制器上时释放横幅(如果您没有使用ARC),则可能会崩溃。