I need a higher comment for comments, but the problem may be related to how you create the GADBannerView.
As you know, the delegate -tableView:viewForFooterInSection: is called whenever a footer view is required. If you view this view off-screen and back again, the delegate starts again.
Creating a GADBannerView in the delegate method -tableView:viewForFooterInSection: will create a new advertisement each time you scroll forward and backward, and a new request will be sent.
My suggestion is to move the creation of the GADBannerView to the -viewDidLoad: ViewController method and return the same instance each time.
@interface MyViewController () @property (nonatomic, strong) GADBannerView *footerAdView; @property (nonatomic, assign, getter=isFooterAdRequested) BOOL footerAdRequested; @end @implementation MyViewController ... -(void)viewDidLoad:(BOOL)animated { self.footerAdView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; _footerAdView.adUnitID = @"myID"; _footerAdView.rootViewController = self; } ... - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if(![self isFooterAdFetched]) { [_footerAdView loadRequest:[GADRequest request]]; self.footerAdRequested = YES;
Even if my vague assumption does not help you, perhaps this example will help you keep the same type of advertising and be a little nicer for the user, without changing the ad every time the user scrolls back and forth.
My vague guess:
I have never worked with Google Ads, so I canβt tell you if they are trying to process ads without being properly attached to the hierarchy of views. My suspicion was that a shot ad (covered with a keyboard so that a new one is loading) somehow becomes inappropriate.
Patrik Nyblad
source share