GADRequest请求委托并不总是收到响应

时间:2014-07-15 21:48:27

标签: ios objective-c request admob google-dfp

我正在开发一款使用Google Ad SDK的iOS应用。应该显示广告的视图控制器是GADBannerViewDelegate和GADSwipeableBannerViewDelegate的委托。

广告在大多数情况下都很好。然而,有时AdMob似乎挂了,我的代表中没有得到任何回应。

我做错了吗?或者,有没有办法检测这种行为?

我初始化广告横幅,然后在viewWillAppear中重新加载广告(假设它尚未加载)。它通常工作得很好,但有时也没有。

以下是相关代码:

UPDATE :: 我改变了代码但无济于事。这是新代码(摆脱了前两种方法):

-(void)resetAdView:(UIViewController *)rootViewController {
    [self.adMob_ActivityIndicator startAnimating];
    if (adBanner_ == nil) {
        adBanner_ = [[DFPSwipeableBannerView alloc]
                     initWithFrame:CGRectMake(30, 365, 300, 150)];
    }    
    [adBanner_ setHidden:YES];
    if (isLoaded_) {
        GADRequest *request = [GADRequest request];
        [adBanner_ loadRequest:request];
        [self.scrollView addSubview:adBanner_];
    } else {
        adBanner_.delegate = self;
        adBanner_.rootViewController = rootViewController;
        adBanner_.adUnitID = AD_UNIT_ID;
        GADRequest *request = [GADRequest request];
        [adBanner_ loadRequest:request];
        [self.scrollView addSubview:adBanner_];
    }
}

我的实例变量是:

  

DFPSwipeableBannerView * adBanner_;   BOOL isLoaded _;

2 个答案:

答案 0 :(得分:0)

这可能是由于缺少广告资源。

您是否实施了横幅视图的错误捕获代理功能?

  • (void)adView:(DFPBannerView *)视图didFailToReceiveAdWithError:(GADRequestError *)错误

如果您的代码中没有实现此委托方法,请实现它并记录错误对象以获取详细的错误说明。

答案 1 :(得分:0)

我最后只是从superview中擦除了横幅视图,并完全重新初始化它和请求。这并不能解决挂起响应的问题,但现在如果您切换到另一个视图并返回到此视图,则广告会重新加载。我可能只是在滚动视图中添加了太多的视图,而不再是这种情况。

-(void)resetAdView:(UIViewController *)rootViewController {
    // in reset method
    [self.adMob_ActivityIndicator startAnimating];
    adBanner_ = nil;
    for (UIView *subview in self.scrollView.subviews) {
        if (subview.tag == 666) {
            // removing banner view from superview
            [subview removeFromSuperview];
        }
    }
    // (re) initializing banner view
    adBanner_ = [[DFPSwipeableBannerView alloc]
                 initWithFrame:CGRectMake(30, 365, 300, 150)];
    [adBanner_ setHidden:YES];
    // setting up and requesting ad
    adBanner_.delegate = self;
    adBanner_.rootViewController = rootViewController;
    adBanner_.adUnitID = AD_UNIT_ID;
    GADRequest *request = [GADRequest request];
    [adBanner_ loadRequest:request];
    adBanner_.tag = 666;
    [self.scrollView addSubview:adBanner_];
}