0

我已经使用 Admob 中介服务设置了一个测试应用程序。我有一个问题,当发生错误并由方法处理时,如果我隐藏横幅视图,则不会导致进一步的广告请求发生,可能是由于这种“隐藏状态”。

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

这是我的方法...

- (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.在错误方法中使用循环来处理再次请求,直到成功并且不锁定其他任何内容。

目前仅在模拟器上进行测试,如果有任何区别。

4

2 回答 2

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]];
}
于 2013-02-03T11:31:14.113 回答
0

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

在 adview didfail 中,隐藏视图而不是 adview 并在接收中再次显示视图。

于 2013-01-31T09:27:42.287 回答