Search code examples
iosiadviewdidload

iAd white banner won't go away


-(void)viewDidLoad{

    self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0.0f, 60.0f, 320.0f, 50.0f)];
    [self.bannerView setDelegate:self];
    [self.view addSubview:self.bannerView]; 
}


-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{

    [bannerView setDelegate:self];
    [bannerView setAlpha:0];
    bannerView.hidden=YES;
}

As soon as viewDidLoad loads and before the iAd loads, there is a white blank fill in banner before iAd banner appears always. I did not set a AdBannerView in storyboard. What can I do to make sure if there is no iAd, for there to also be no white space in its place?

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{  

  admobBannerView=[[GADBannerView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];

self.admobBannerView.adUnitID = @"UNIT-ID";
self.admobBannerView.rootViewController = self;
self.admobBannerView.delegate = self;

[self.view addSubview:self.admobBannerView];

GADRequest *request =[GADRequest request];

request.testDevices= @[ GAD_SIMULATOR_ID ]; 

[self.admobBannerView loadRequest:request];
 }

Solution

  • Hide the ad view upon its creation since it takes time for the first ad to load or fail, ex:

    -(void)viewDidLoad {
    
        self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0.0f, 60.0f, 320.0f, 50.0f)];
        [self.bannerView setDelegate:self];
        self.bannerView.hidden = YES; <-- Hide it
        [self.view addSubview:self.bannerView]; 
    }
    

    Then make it reappear once the ad loads, ex:

    - (void)bannerViewDidLoadAd:(ADBannerView *)banner
    {
        self.bannerView.hidden = NO;
    }
    

    And as for the code currently in your didFailToReceiveAdWithError: method, you don't need to set the alpha to 0 or set the delegate to self again. Also any mention of bannerView in didFailToReceiveAdWithError: should either be self.bannerView or banner, ex:

    -(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
    {
        self.bannerView.hidden=YES;
    }