我已使用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.在错误方法中使用循环来再次处理请求,直到成功并且不锁定任何其他内容。
目前只在模拟器上进行测试,如果有任何差异。
答案 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中,隐藏视图而不是广告视图 并且在收到再次显示视图。