1.集成AdMob廣告
請按照將AdMob廣告集成到應(yīng)用中的相同說明操作。要集成非插頁式廣告(橫幅尺寸、頁首橫幅尺寸等),請遵照admob里集成KeyMob橫幅式廣告教程說明。要集成插頁式廣告(占據(jù)整個屏幕的全屏廣告),請遵照admob里集成KeyMob插頁式廣告教程說明。
完成這些集成步驟之后,您需要執(zhí)行下文介紹的一些小修改,將AdMob廣告展示位置改為中介展示位置,從而展示來自多個廣告網(wǎng)絡(luò)的廣告。
2.添加廣告網(wǎng)絡(luò)適配器和SDK
現(xiàn)在您可以下載并向項目中添加相關(guān)廣告網(wǎng)絡(luò)的適配器和SDK,以便投放來自這些廣告網(wǎng)絡(luò)的廣告。您可以在中介網(wǎng)絡(luò)頁面上找到這些廣告網(wǎng)絡(luò)的鏈接。
要在Xcode中添加您下載的廣告網(wǎng)絡(luò)適配器/SDK,請右鍵點擊您的項目,然后點擊Add Files to<project>(將文件添加到<項目>)
3.添加必需的鏈接器標記
現(xiàn)在您需要將-ObjC添加到應(yīng)用目標的構(gòu)建設(shè)置中的Other Linker Flags(其他鏈接器標記):
1:在Xcode的項目導(dǎo)航器中,按藍色的頂級項目圖標。
2:依次點擊目標和Build Settings(構(gòu)建設(shè)置)標簽。
3:在Other Linker Flags(其他鏈接器標記)下,將-ObjC同時添加至Debug(調(diào)試)和Release(發(fā)布)。
4.加入廣告網(wǎng)絡(luò)配置
您需要加入所選的廣告網(wǎng)絡(luò)要求的框架、編譯器標記或鏈接器標記。為方便您查閱,中介網(wǎng)絡(luò)頁面中提供了相應(yīng)鏈接,指向針對每個廣告網(wǎng)絡(luò)的具體說明。
您無需撰寫額外的代碼來創(chuàng)建每個廣告網(wǎng)絡(luò)的廣告視圖。AdMob Mediation SDK會根據(jù)需要調(diào)用每個廣告網(wǎng)絡(luò)的適配器和SDK以創(chuàng)建廣告。下文將介紹如何設(shè)置中介監(jiān)聽器,以便您收到所有廣告網(wǎng)絡(luò)的廣告事件通知。
5.(可選)指定其他請求參數(shù)
您可以視需要在請求中添加用戶的地理位置、性別和生日。這些不是必需的參數(shù),但是廣告網(wǎng)絡(luò)可以使用它們投放定位更精確的廣告。我們提供了用于設(shè)置生日和地理位置的方法,還提供了用于設(shè)置性別的屬性。系統(tǒng)會將這些信息傳遞給所有接受這些參數(shù)的廣告網(wǎng)絡(luò)。請查看以下示例:
-(void)setBirthdayWithMonth:(NSInteger)m day:(NSInteger)d year:(NSInteger)y;
-(void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude accuracy:(CGFloat)accuracyInMeters;
property(nonatomic,assign)GADGender gender;
typedef enum{
kGADGenderUnknown,
kGADGenderMale,
kGADGenderFemale
}GADGender;
一些廣告網(wǎng)絡(luò)接受用戶收入或橫幅廣告顏色等其他參數(shù)。廣告網(wǎng)絡(luò)會逐漸在它們的中介適配器中添加對這些具體參數(shù)的支持,不過目前還無法傳遞針對特定廣告網(wǎng)絡(luò)的參數(shù)。
6.(可選)設(shè)置事件通知
要收到有關(guān)廣告生命周期事件(例如展示)的通知,您可以實現(xiàn)GADBannerViewDelegate。在使用中介時,此委托會自動將您正在中介的所有廣告網(wǎng)絡(luò)的事件通知給您。例如,來自任意廣告網(wǎng)絡(luò)的展示會通過GADBannerViewDelegate的方法adViewDidReceiveAd進行報告。
7.(可選)實現(xiàn)自定義事件
利用自定義事件,您可以投放來自您的廣告服務(wù)器的廣告,或投放來自AdMob中介不支持的廣告網(wǎng)絡(luò)的廣告,或者調(diào)用您選擇的任何其他代碼。
要創(chuàng)建自定義事件,請定義一個實現(xiàn)GADCustomEventBanner的類。
自定義事件必須在成功收到廣告或無法收到廣告時向GADCustomEventBannerDelegate回報。為此,您需要調(diào)用合適的委托方法(如下所示)。如果無法做到這一點,中介按序調(diào)用備用廣告的功能就無法正確運行。
理想情況下,您的自定義事件還應(yīng)通知委托,以報告點擊次數(shù)和點擊操作的結(jié)果(呈現(xiàn)全屏模式或退出應(yīng)用)。這樣一來,您的報告中將會顯示點擊統(tǒng)計信息,您設(shè)置的所有事件監(jiān)聽器都會正確運行。
我們會在運行時實例化您的GADCustomEventBanner,并為您設(shè)置GADCustomEventBannerDelegate,您無需自行實例化這些類。
下面是一個自定義事件示例:
implementation MyCustomEventBanner
//Will be set by the SDK.
synthesize delegate=delegate_;
#pragma mark-
#pragma mark GADCustomEventBanner
-(void)requestBannerAd:(GADAdSize)adSize
parameter:(NSString*)serverParameter
label:(NSString*)serverLabel
request:(GADCustomEventRequest*)request{
//TODO:Use the parameters and self.delegate to make a banner request to your
//ad network.Remember to set this class to be your banner's delegate.
}
#pragma mark-
#pragma mark MyBanner Callbacks
-(void)adViewDidReceiveAd:(MyBanner*)view{
[self.delegate customEventBanner:self didReceiveAd:view];
}
-(void)adView:(MyBanner*)view
didFailToReceiveAdWithError:(NSError*)error{
[self.delegate customEventBanner:self didFailAd:error];
}
-(void)adViewWillPresentScreen:(MyBanner*)adView{
[self.delegate customEventBannerWillPresentModal:self];
}
-(void)adViewWillDismissScreen:(MyBanner*)adView{
[self.delegate customEventBannerWillDismissModal:self];
}
-(void)adViewDidDismissScreen:(MyBanner*)adView{
[self.delegate customEventBannerDidDismissModal:self];
}
-(void)adViewWillLeaveApplication:(MyBanner*)adView{
[self.delegate customEventBannerWillLeaveApplication:self];
}
end
自定義事件可以調(diào)用廣告請求的方法以訪問年齡或性別等請求參數(shù)。有關(guān)詳情,請參閱GADCustomEventRequest.h。
要創(chuàng)建占據(jù)整個屏幕的插頁式廣告自定義事件,而不是橫幅廣告視圖中的自定義事件,請使用GADCustomEventInterstitial取代GADCustomEventBanner。
8.(可選)檢查adNetworkClassName的值
您可以視需要檢查GADBannerView的adNetworkClassName屬性,此屬性可返回在調(diào)用adViewDidReceiveAd回調(diào)后提取了當前橫幅廣告的廣告網(wǎng)絡(luò)的廣告網(wǎng)絡(luò)類名稱:
-(void)adViewDidReceiveAd:(GADBannerView*)bannerView{
NSLog( "Banner adapter class name:% ",bannerView.adNetworkClassName);
}
同樣,對于插頁式廣告,請在interstitialDidReceiveAd中檢查GADInterstitial的adNetworkClassName屬性:
-(void)interstitialDidReceiveAd:(GADInterstitial*)interstitial{
NSLog( "Interstitial adapter class name:% ",interstitial.adNetworkClassName);
}
對于標準Google AdMob廣告和通過中介投放的Google AdMob廣告,adNetworkClassName會返回GADMAdapterGoogleAdMobAds。對于通過自定義事件獲取的廣告,該屬性會返回GADMAdapterCustomEvents。
9.(可選)處理旋轉(zhuǎn)和全寬橫向廣告
智能橫幅廣告仍然屬于新鮮事物,因此來自其他廣告網(wǎng)絡(luò)的中介支持較為有限。不過,有幾個廣告網(wǎng)絡(luò)支持“細長”的廣告格式(在iPhone上展示的480x32和在iPad上展示的1024x66)。對于這些廣告網(wǎng)絡(luò),您可以在UIViewController中指定kGADAdSizeSmartBannerLandscape智能橫幅廣告尺寸,以便在橫向模式中投放這些細長的廣告尺寸。請參見以下示例代碼:
1:定義adSizeForOrientation:
//Define a common function for choosing an ad size based on the device's
//orientation.
-(GADAdSize)adSizeForOrientation:(UIInterfaceOrientation)orientation{
//Landscape.
//Only some networks support a thin landscape size
//(480x32 on iPhone or 1024x90 on iPad).
if(UIInterfaceOrientationIsLandscape(orientation)){
return kGADAdSizeSmartBannerLandscape;
}
//Portrait.
//Most networks support banner(320x50)and Leaderboard(728x90)
//sizes.
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
return kGADAdSizeLeaderboard;
}else if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone){
return kGADAdSizeBanner;
}
//Unknown idiom.
return kGADAdSizeBanner;
}
2:在創(chuàng)建廣告時調(diào)用尺寸選擇函數(shù):
{
//Call the common function you've defined to choose the appropriate ad size
//at ad creation time.
GADAdSize adSize=[self adSizeForOrientation:self.interfaceOrientation];
GADBannerView*adView=[[GADBannerView alloc]initWithAdSize:adSize];
//Request ad
}
3:針對不同的屏幕方向設(shè)置廣告尺寸:
//In the code of your UIViewController that handles interface rotation,set the
//appropriate ad size.
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration{
self.adView.adSize=[self adSizeForOrientation:orientation];
}