5

現在、iPhone アプリで Admob GADInterstitial を使用しており、iOS 7 で追加された iAd UIViewController で提供されるインタースティシャルを利用したいと考えています。

私の推測では、Apple の広告掲載率はそれほど高くないので、広告が利用できない場合は Admob にフォールバックしたいと考えています。残念ながら、iAd の API は非常にわかりにくく、広告が利用可能かどうかを判断する方法がわかりません。

誰かがこれを成功させましたか? もしそうなら、どのように?

4

3 に答える 3

5

requestInterstitialAdPresentationを呼び出す手動のプレゼンテーション アプローチでは、広告が表示されるかどうかを示す BOOL が返されることを見逃していました。理論的には、これを使用して admob にフォールバックするかどうかを制御できます。効果があったかどうかは後ほどコメントします。

編集:それは動作します!

requestInterstitialAdPresentation は true または false に適切に応答することがわかりました。次に、他の API のように感じさせるために残っている唯一のことは、広告 VC がいつ閉じられるかを把握することです。これは、広告が開始された場合に、ホスティング ビュー コントローラーの viewDidAppear: メソッドで応答することによって行いました。私は実際にそれを AdManager クラスにカプセル化し、NSNotification を使用して viewDidAppear: を伝達したので、iAds をきれいにドロップすることができました。

于 2013-09-30T20:43:06.930 に答える
4

iAd と Google 広告をシームレスに統合する次のライブラリを確認できます。

https://github.com/larsacus/LARSAdController

私は数ヶ月間それを使用していますが、それはクールです.

于 2013-11-24T11:23:19.257 に答える
0

ビュー コントローラで 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のインスタンスを1つだけ保持し、App Delegateに入れ、ビューコントローラーが画面に表示されたら、そのADBannerViewをビューコントローラーのビュー階層に追加し、ビューコントローラーが消えたら削除します。

于 2013-09-30T20:25:02.990 に答える