2013-09-30 51 views
5

我目前使用AdMob的GADInterstitial在我的iPhone應用程序,並希望藉此在iOS中的iAd的UIViewController中補充提供的插頁廣告的優勢7.的iAd和AdMob插頁集成在iPhone上

我的猜測是,蘋果的填充率不會很高,所以如果廣告不可用,我想回到Admob。不幸的是,iAd的API看起來非常不透明,而且我也沒有辦法確定廣告是否可用。

有沒有人成功地做過這件事,如果是的話,怎麼樣?

回答

5

我錯過了手動呈現方法,調用requestInterstitialAdPresentation,返回一個BOOL表示是否顯示廣告。理論上,我可以用這個來控制是否回到admob。我稍後會發表評論,看它是否有效。

編輯:它的工作!

事實證明,requestInterstitialAdPresentation確實適合回答true或false。然後唯一讓它感覺像其他API的東西是找出廣告VC何時被解僱。如果廣告已經啓動,我通過在託管視圖控制器的viewDidAppear:方法中做出響應來實現此目的。我實際上已經將它封裝在一個AdManager類中,並使用NSNotification來傳達viewDidAppear :,所以能夠非常乾淨地放入iAds中。

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,將它放在我的App Delegate中,一旦某個視圖控制器出現在屏幕上 - 我只需添加該ADBannerView即可查看視圖控制器的層次結構,並在視圖控制器消失時將其刪除。

+0

謝謝,但我正在尋找插頁式廣告。 –

+0

我的不好。您是否看過插頁式代表? https://developer.apple.com/library/ios/documentation/iAd/Reference/ADInterstitialAdDelegate_Ref/Introduction/Introduction.html#//apple_ref/occ/intf/ADInterstitialAdDelegate – interrupt

+0

看起來他們爲iPhone做了不同的事情。您不會創建AdInterstitialAd,而是向UIViewController添加方法。但我認爲我有一個解決方案,我在下面編輯我的答案。 –