Reputation: 911
I'm currently using Admob GADInterstitial in my iPhone app, and would like to take advantage of the interstitials offered in the iAd UIViewController additions in iOS 7.
My guess is that Apple's fill rate will not be that high, so I'd like to fall back to Admob if an ad isn't available. Unfortunately the API for iAd looks really opaque, and I don't see a way to determine if an ad is available.
Has anyone successfully done this, and if so, how?
Upvotes: 5
Views: 6298
Reputation: 1147
You can check following library which will seamlessly integrate iAd and Google Ads.
https://github.com/larsacus/LARSAdController
I have been using it for fews months and it is cool.
Upvotes: 4
Reputation: 911
I missed that the manual presentation approach, calling requestInterstitialAdPresentation, returns a BOOL that says whether an ad will be displayed. Theoretically, I can use this to control whether to fall back to admob. I'll post a comment later on whether it worked or not.
EDIT: It works!
It turns out requestInterstitialAdPresentation does appropriately answer true or false. Then the only thing that remains to make it feel like the other APIs is to figure out when the ad VC is dismissed. I did this by responding in the viewDidAppear: method of the hosting view controller if an ad had been launched. I actually have it encapsulated in an AdManager class,and use an NSNotification to communicate the viewDidAppear:, so was able to drop in iAds pretty cleanly.
Upvotes: 5
Reputation: 2070
To control iAd in your view controller you can setup a delegate to listen for iAd states:
@interface MyViewController : UIViewController <ADBannerViewDelegate>
...
@property (nonatomic, weak) IBOutlet ADBannerView* banner;
@end
then in your implementation file:
@implementation MyViewController
- (void)viewDidLoad
{
...
[_banner setHidden:YES];
_banner.delegate = self;
}
...
#pragma mark - ADBannerViewDelegate implementation
- (void)bannerView:(ADBannerView*)banner didFailToReceiveAdWithError:(NSError*)error
{
// iAd is not available, so we are going to hide it to get rid of ugly white rectangle
[_banner setHidden:YES];
// Here you can add your logic to show your other ads
}
- (void)bannerViewDidLoadAd:(ADBannerView*)banner
{
// iAd is available, lets show it
[_banner setHidden:NO];
// Here you can add your logic to hide your other ads
}
@end
Also I normally keep just one instance of ADBannerView, have it in my App Delegate and once some view controller appears on a screen - I simply add that ADBannerView to view hierarchy of view controller and remove it when view controller disappears.
Upvotes: 0