没有收到广告时隐藏广告视图,然后再显示

时间:2013-01-31 09:19:54

标签: ios ios5 admob iad

我已使用Admob Mediation服务设置了测试应用程序。我有一个问题,当发生错误并由方法处理时,如果我隐藏横幅查看它会导致不再发生广告请求,可能是由于此“隐藏状态”。

我可以做的是在错误方法中睡一段时间然后再次请求,但这不是最好的方法...我猜这会锁定一些进程和其他用户输入,而sleepng ?我不确定这一点,因为该应用仅包含广告,因此无法测试。

以下是我的方法......

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error;
{
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);
    bannerView_.hidden = YES;
    sleep(59);
    [bannerView_ loadRequest:[self createRequest]];
}

- (void)adViewDidReceiveAd:(GADBannerView *)view;
{
    NSLog(@"Ad Received");
    bannerView_.hidden = NO;
}

我正在寻找最好的方法: 1.在未返回广告时隐藏视图,但请确保请求继续,并在收到广告后再次显示广告视图。 2.在错误方法中使用循环来再次处理请求,直到成功并且不锁定任何其他内容。

目前只在模拟器上进行测试,如果有任何差异。

2 个答案:

答案 0 :(得分:2)

我建议你使用performSelector进行异步调用而不是使用sleep,因为sleep会阻塞你的线程。所以这是按照你提到的第一种方式实现的。

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error;
{
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);
    bannerView_.hidden = YES;
    [self performSelector:@selector(repeatAdRequest) withObject:nil afterDelay:60.0];
}

- (void)adViewDidReceiveAd:(GADBannerView *)view;
{
    NSLog(@"Ad Received");
    bannerView_.hidden = NO;
}

-(void) repeatAdRequest
{
    [bannerView_ loadRequest:[self createRequest]];
}

答案 1 :(得分:0)

使addview成为另一个空白uiview的子视图。

在adview didfail中,隐藏视图而不是广告视图 并且在收到再次显示视图。