DFP issue: No ad to show

白昼怎懂夜的黑 提交于 2019-12-06 05:27:26

问题


My app provide three ads in UIScrollView (via DoubleClick for Publisher). I used old version of AdMob SDK for iOS and everything works correctly. I decided to download new version because there were some problems with AppStore. Once I added new version, I'm getting error:

Error Domain=com.google.ads Code=1 "Request Error: No ad to show." UserInfo=0x14e88e60 {NSLocalizedDescription=Request Error: No ad to show., NSLocalizedFailureReason=Request Error: No ad to show.}

Ads have custom size of creatives (320x125). UIScrollView where it's been added is 960x125 and It's placed as header of UITableView.

Banner Code:

- (void)viewDidLoad {
    [super viewDidLoad];

    DFPBannerView *bannerView = (DFPBannerView *)self.view;
    [self preventBannerCaptureTouch:bannerView];
    // Create a view of the standard size at the bottom of the screen.
    // Available AdSize constants are explained in GADAdSize.h.
    //bannerView = [[DFPBannerView alloc] initWithAdSize:CG];
    bannerView.adSize = GADAdSizeFromCGSize(CGSizeMake(320, 125));
    // Specify the ad's "unit identifier." This is your DFP ad unit ID.
    bannerView.adUnitID = self.adUnitID;

    [bannerView setAppEventDelegate:self];
    [bannerView setDelegate:self];

    bannerView.rootViewController = self.bannerOwner;

    // Initiate a generic request to load it with an ad.
    GADRequest *request = [[GADRequest alloc] init];
    //request.testDevices = [NSArray arrayWithObjects: nil];

    [bannerView loadRequest:request];

    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    spinner.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
    [self.view addSubview:spinner];
    [spinner startAnimating];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}

- (void)preventBannerCaptureTouch:(GADBannerView*)bannerView {
    for (UIWebView *webView in bannerView.subviews) {
        if ([webView isKindOfClass:[UIWebView class]]) {
            webView.scrollView.bounces = NO;

            for (UIGestureRecognizer *gestureRecognizer in webView.gestureRecognizers) {
                if ([gestureRecognizer isKindOfClass:NSClassFromString(@"GADImpressionTicketGestureRecognizer")]) {
                    gestureRecognizer.delegate = self;
                }
            }

            for (id view in [[[webView subviews] objectAtIndex:0] subviews]) {
                if ([view isKindOfClass:NSClassFromString(@"UIWebBrowserView")]) {
                    for (UIGestureRecognizer *recognizer in [view gestureRecognizers]) {
                        if ([recognizer isKindOfClass:NSClassFromString(@"UIWebTouchEventsGestureRecognizer")]) {
                            [view removeGestureRecognizer:recognizer];
                        }
                    }
                    return;
                }
            }
        }

        [webView setTintColor:[UIColor whiteColor]];
    }
}

- (void)viewWillUnload {
    [super viewWillUnload];

    DFPBannerView *bannerView = (DFPBannerView *)self.view;
    bannerView.appEventDelegate = nil;
    bannerView.delegate = nil;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.bannerSlider bannerTouchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.bannerSlider bannerTouchesEnded:touches withEvent:event];
}

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView {
    [spinner stopAnimating];
}

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {
    NSLog(@"GOOGLE Ad ERROR: %@", error);
    [spinner stopAnimating];
}

Code of UIScrollView:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIScrollView *view = (UIScrollView *)self.view;
    view.bounces = NO;
    // @"/6499/example/banner"
    GWBannerController *oneController = [[GWBannerController alloc] initWithNibName:@"BannerView" bundle:nil bannerOwner:self.bannerOwner bannerSlider:self ID:@"/XXX/iOSLeaderBanner_One"];
    //GWBannerController *oneController = [[GWBannerController alloc] initWithNibName:@"BannerView" bundle:nil bannerOwner:self.bannerOwner bannerSlider:self ID:@"/6499/example/banner"];
    oneController.view.frame = CGRectMake(0, 0, 320, 125);
    [view addSubview:oneController.view];

    [bannerArray addObject:oneController];

    GWBannerController *twoController = [[GWBannerController alloc] initWithNibName:@"BannerView" bundle:nil bannerOwner:self.bannerOwner bannerSlider:self ID:@"/XXX/iOSLeaderBanner_Two"];
    twoController.view.frame = CGRectMake(320, 0, 320, 125);
    [view addSubview:twoController.view];

    [bannerArray addObject:twoController];

    GWBannerController *threeController = [[GWBannerController alloc] initWithNibName:@"BannerView" bundle:nil bannerOwner:self.bannerOwner bannerSlider:self ID:@"/XXX/iOSLeaderBanner_Three"];
    threeController.view.frame = CGRectMake(640, 0, 320, 125);
    [view addSubview:threeController.view];

    [bannerArray addObject:threeController];

    [view setContentSize:CGSizeMake(960, 125)];
    [self startTimer];
}

回答1:


The ad server will return this message mainly because there are no ads for your ad unit id. Check whether your ad unit id is proper or not. You will get the same error if either your banner width/height is 0. Make sure that your adUnitID is perfect.



来源:https://stackoverflow.com/questions/25642492/dfp-issue-no-ad-to-show

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!