【问题标题】:iAd & Admob Interstitial Integration on iPhoneiPhone 上的 iAd 和 Admob 插页式集成
【发布时间】:2013-11-24 19:23:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c ios7 admob iad


    【解决方案1】:

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

    编辑:它有效!

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

    【讨论】:

      【解决方案2】:

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

      https://github.com/larsacus/LARSAdController

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

      【讨论】:

        【解决方案3】:

        要在视图控制器中控制 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 实例,将它放在我的 App Delegate 中,一旦某个视图控制器出现在屏幕上 - 我只需将该 ADBannerView 添加到视图控制器的视图层次结构中,并在视图控制器消失时将其删除。

        【讨论】:

        • 谢谢,但我正在寻找插页式广告。
        • 我的错。你看过插页式代表吗? developer.apple.com/library/ios/documentation/iAd/Reference/…
        • 看起来他们为 iPhone 做的事情不同。您无需创建 AdInterstitialAd,而是向 UIViewController 添加了方法。但我想我有一个解决方案,我正在下面编辑我的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多