iPhone 上的 iAd 和 Admob 插页式集成



我目前正在我的iPhone应用程序中使用Admob GADIntertitial,并希望利用iOS 7中iAd UIViewController中添加的插页式广告。

我的猜测是苹果的填充率不会那么高,所以如果没有广告,我想回到Admob。不幸的是,iAd 的 API 看起来非常不透明,我看不到确定广告是否可用的方法。

有没有人成功地做到这一点,如果是,如何做到?

我错过了手动演示方法,调用requestInterstitialAdPresentation,返回一个BOOL,说明广告是否会显示。从理论上讲,我可以使用它来控制是否回退到 admob。我稍后会就它是否有效发表评论。

编辑:它有效!

事实证明,请求插页式广告演示确实正确地回答了真或假。然后,唯一要让它感觉像其他 API 的事情就是弄清楚广告 VC 何时被关闭。我通过在 viewDidAppear: 托管视图控制器的方法(如果广告已启动)中响应来做到这一点。我实际上将其封装在AdManager类中,并使用NSNotization来传达viewDidAppear:,因此能够非常干净地放入iAds。

您可以查看以下库,该库将无缝集成iAd和Google Ads。

https://github.com/larsacus/LARSAdController

我已经使用它几个月了,它很酷。

要在视图控制器中控制 iAd,您可以设置委托来侦听 iAd 状态:

@interface MyViewController : UIViewController <ADBannerViewDelegate>
...
@property (nonatomic, weak) IBOutlet ADBannerView* banner;
@end

然后在您的实现文件中:

@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

此外,我通常只保留 ADBannerView 的一个实例,将其放在我的应用程序委托中,一旦某个视图控制器出现在屏幕上 - 我只需添加该 ADBannerView 以查看视图控制器的层次结构,并在视图控制器消失时将其删除。

最新更新