It seems there are 2 options for displaying interstitial ads using iAds on iPhone. The documentation on interstitials is out of date, but according to the iAds Additions Reference all one needs to do to set up is:
[UIViewController prepareInterstitialAds];
[self setInterstitialPresentationPolicy:ADInterstitialPresentationPolicyManual];
followed by:
[self requestInterstitialAdPresentation]
(which returns a bool if successful) whenever you'd like to display an ad.
The other options is to manually create an interstitial ad object:
ADInterstitialAd *interstitial;
Then:
interstitial = [[ADInterstitialAd alloc] init];
interstitial.delegate = self;
And when you want to show an ad:
if (interstitial.isLoaded) {
[interstitial presentFromViewController:self];
}
However PresentViewController: is deprecated, and using presentInView:self.view means the ad doesn't have a close button. The compiler also suggests requestInterstitalAdPresentation.
So one would assume option 1 is the preferred approach. I'm a little confused by the answer to this question as it uses a combination of the 2, but it seems requestInterstitalAdPresentation doesn't trigger the delegate methods of the ADInterstitialAd instance and using both is pointless.
So my question is - is the first approach really sufficient? I've found it only displays one ad, and then fails to display any more. I read in another question that the ADInterstitialAd instance needs to be assigned to nil in order to request a new ad, but then requestInterstitialAdPresentation ignores this instance anyway. Is requestInterstitialAdPresentation just simulating low fill rates? Or am I missing a step?