 <p>You are hiding your <code>adMobBannerView</code> in your <code>displayiAdsOrNot</code> function. This function is called every time the <code>viewWillAppear</code>. Remove this and you should get the results you desire.</p> <p>As for the rest of your code, you have a lot going on here. First, to simplify things you should move all of your code that is creating and laying out your <code>adBanner</code> and <code>adMobBannerView</code> under <code>viewWillAppear</code> when <code>[[NSUserDefaults standardUserDefaults] boolForKey:@"IAPSuccessful"]</code> is false, and set both banners <code>.hidden = YES</code> automatically. This will eliminate the need for your <code>displayiAdsOrNot</code> and <code>displayAdMobBannerOrNot</code> where you are repeating a lot of the same <code>if</code> statements checking for IAP and which device the user is using. After doing this, in your delegate methods you can simply hide or show the correct banner depending on if iAd fails or not now. For example, iAd loads so set its hidden value to <code>NO</code> and AdMob’s to <code>YES</code>, and vice versa if iAd fails to load an ad. I’m sure you were checking the IAP every time in case the user purchased it while in the current session so you could remove the ads. An easier solution would be to move the ads outside of the screen bounds on completion of the IAP and then on the next launch of your application simply do not create either banner at all if <code>[[NSUserDefaults standardUserDefaults] boolForKey:@"IAPSuccessful"]</code> is true. A few other things to point out are, you should remove your <code>request.testDevices</code> AdMob request before submitting your application, and it seems you are defining your <code>NSLayoutConstraint *myConstraint</code> multiple times. I’m not exactly sure what you’re trying to do here. Also, in <code>didFailToReceiveAdWithError</code> you have <code>self.adBanner.hidden = true</code>, it should be <code>self.adBanner.hidden = YES</code>. </p>