「AdMob Mediation Interstitial」修訂間的差異
跳至導覽
跳至搜尋
imported>Wikiuser |
imported>Wikiuser |
||
行 79: | 行 79: | ||
[self presentFromRootViewController:nil]; | [self presentFromRootViewController:nil]; | ||
// 將 interstitial 物件的 delegate 設為 self 以外的永存物件,以避免 crash 的發生! | '''// 將 interstitial 物件的 delegate 設為 self 以外的永存物件,以避免 crash 的發生!''' | ||
// 這裡選擇使用 UIApplication 的 window 物件 | '''// 這裡選擇使用 UIApplication 的 window 物件''' | ||
_interstitialView.delegate = [[UIApplication sharedApplication].windows objectAtIndex:0]; | _interstitialView.delegate = [[UIApplication sharedApplication].windows objectAtIndex:0]; | ||
} | } |
於 2014年7月14日 (一) 07:18 的修訂
首先將AdMob和TAMedia SDK整合至專案中,AdMob SDK可以在這裡下載 https://developers.google.com/mobile-ads-sdk/download?#downloadios。
接著在AdMob Mediation新增Custom Event(https://mediation.admob.com)。
新增Custom Event的詳細說明可以參考https://developers.google.com/mobile-ads-sdk/docs/admob/mediation#ios。
最後,在專案中加入與Custom Event對應的Class,其中Custom Event的Class Name需要和新增的Class Name保持一致,例如Custom Event的Class Name是TADCustomView,則新增的Class Name也必須為TADCustomView。
Custom Interstitial View
// TADCustomInterstitial.h // 匯入 TAMedia SDK 定義 #import "TADInterstitial.h" #import "TADInterstitialDelegate.h" // 匯入 Admob SDK 定義 #import "GADCustomEventInterstitial.h" #import "GADCustomEventInterstitialDelegate.h" @interface TADCustomInterstitial : NSObject <GADCustomEventInterstitial, TADInterstitialDelegate> { // 以 instant variable 的方式, 宣告 interstitialView 物件 TADInterstitial *_interstitialView; } @property (nonatomic, weak) id<GADCustomEventInterstitialDelegate> delegate; @end
// TADCustomInterstitial.m #import "TADCustomInterstitial.h" @interface TADCustomInterstitial () @end @implementation TADCustomInterstitial @synthesize delegate = _delegate; - (void)requestInterstitialAdWithParameter:(NSString *)serverParameter label:(NSString *)serverLabel request:(GADCustomEventRequest *)customEventRequest { // 將 GADCustomEventRequest 物件裡的資訊轉入 TADRequest 物件 TADRequest *tadRequest = [TADRequest request]; tadRequest.testing = customEventRequest.isTesting; tadRequest.gender = (TADGender)customEventRequest.userGender; tadRequest.birthday = customEventRequest.userBirthday; [tadRequest setLocationWithLatitude:customEventRequest.userLatitude longitude:customEventRequest.userLongitude accuracy:customEventRequest.userLocationAccuracyInMeters]; // interstitialView 物件初始化 if (_interstitialView == nil) { _interstitialView = [[TADInterstitial alloc] init]; } // 必須要設定delegate _interstitialView.delegate = self; // serverParameter 為 AD Unit ID, 在 Admob 裡設定 _interstitialView.adUnitID = serverParameter; // 載入廣告 [_interstitialView loadRequest:tadRequest]; } - (void)presentFromRootViewController:(UIViewController *)rootViewController { [_interstitialView presentFromRootViewController:rootViewController]; } #pragma mark - #pragma mark - TADInterstitialDelegate - (void)interstitialDidReceiveAd:(TADInterstitial *)ad { NSLog(@"[Test App] interstitialDidReceiveAd:%@", ad); [self presentFromRootViewController:nil]; // 將 interstitial 物件的 delegate 設為 self 以外的永存物件,以避免 crash 的發生! // 這裡選擇使用 UIApplication 的 window 物件 _interstitialView.delegate = [[UIApplication sharedApplication].windows objectAtIndex:0]; } - (void)interstitial:(TADInterstitial *)ad didFailToReceiveAdWithError:(TADRequestError *)error { NSLog(@"[Test App] didFailToReceiveAdWithError:%@ %@", ad, error); } - (void)interstitialWillPresentScreen:(TADInterstitial *)ad { NSLog(@"[Test App] interstitialWillPresentScreen:%@", ad); } - (void)interstitialWillDismissScreen:(TADInterstitial *)ad { NSLog(@"[Test App] interstitialWillDismissScreen:%@", ad); } - (void)interstitialDidDismissScreen:(TADInterstitial *)ad { NSLog(@"[Test App] interstitialDidDismissScreen:%@", ad); } - (void)interstitialWillLeaveApplication:(TADInterstitial *)ad { NSLog(@"[Test App] interstitialWillLeaveApplication:%@", ad); } @end