「AdMob Mediation Banner」修訂間的差異
跳至導覽
跳至搜尋
imported>Wikiuser |
imported>Wikiuser |
||
行 3: | 行 3: | ||
新增Custom Event的詳細說明可以參考https:'''//developers.google.com/mobile-ads-sdk/docs/admob/mediation#ios。<br>''' | 新增Custom Event的詳細說明可以參考https:'''//developers.google.com/mobile-ads-sdk/docs/admob/mediation#ios。<br>''' | ||
最後,在專案中加入與Custom Event對應的Class,其中Custom Event的Class Name需要和新增的Class Name保持一致,例如Custom Event的Class Name是TADCustomView,則新增的Class Name也必須為TADCustomView。 | 最後,在專案中加入與Custom Event對應的Class,其中Custom Event的Class Name需要和新增的Class Name保持一致,例如Custom Event的Class Name是TADCustomView,則新增的Class Name也必須為TADCustomView。 | ||
== Mediation View Controller == | |||
'''// MediationViewController.h''' | |||
'''// 使用 GADBannerView 物件來介接 TADBannerView''' | |||
@property (nonatomic, strong) GADBannerView *_adBanner; | |||
'''// MediationViewController.m''' | |||
- (void)viewWillDisappear:(BOOL)animated { | |||
'''// MediationViewController 的 view 消失前, 將 _adBanner 及其 delegate 設為 nil''' | |||
if (_adBanner != nil) { | |||
_adBanner.delegate = nil; | |||
_adBanner = nil; | |||
} | |||
} | |||
行 12: | 行 32: | ||
'''// 匯入 TAMedia SDK 定義''' | '''// 匯入 TAMedia SDK 定義''' | ||
#import "TADBannerView.h" | #import "TADBannerView.h" | ||
'''// 匯入 Admob SDK 定義''' | '''// 匯入 Admob SDK 定義''' | ||
#import "GADCustomEventBanner.h" | #import "GADCustomEventBanner.h" | ||
@interface TADCustomBanner : NSObject<GADCustomEventBanner, TADBannerViewDelegate> | @interface TADCustomBanner : NSObject<GADCustomEventBanner, TADBannerViewDelegate> | ||
行 28: | 行 46: | ||
@end | @end | ||
#import "TADCustomBanner.h" | #import "TADCustomBanner.h" | ||
@implementation TADCustomBanner | @implementation TADCustomBanner | ||
行 51: | 行 64: | ||
[tadRequest setLocationWithLatitude:customEventRequest.userLatitude longitude:customEventRequest.userLongitude accuracy:customEventRequest.userLocationAccuracyInMeters]; | [tadRequest setLocationWithLatitude:customEventRequest.userLatitude longitude:customEventRequest.userLongitude accuracy:customEventRequest.userLocationAccuracyInMeters]; | ||
'''// bannerView 物件初始化 | '''// bannerView 物件初始化''' | ||
if ( | if (_bannerView == nil) { | ||
_bannerView = [[TADBannerView alloc] initWithAdSize:TADAdSizeFromCGSize(adSize.size | _bannerView = [[TADBannerView alloc] initWithAdSize:TADAdSizeFromCGSize(adSize.size)]; | ||
} | } | ||
行 70: | 行 83: | ||
- (void)adViewDidReceiveAd:(TADBannerView *)view { | - (void)adViewDidReceiveAd:(TADBannerView *)view { | ||
NSLog(@"CustomBanner - | NSLog(@"CustomBanner - adViewDidReceiveAd!!"); | ||
[_delegate customEventBanner:self didReceiveAd:view]; | [_delegate customEventBanner:self didReceiveAd:view]; | ||
} | } | ||
- (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(NSError *)error { | - (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(NSError *)error { | ||
NSLog(@"CustomBanner - didFailToReceiveAdWithError!! error: %@", error); | |||
[_delegate customEventBanner:self didFailAd:error]; | [_delegate customEventBanner:self didFailAd:error]; | ||
} | } | ||
- (void)adViewWillPresentScreen:(TADBannerView *)adView { | - (void)adViewWillPresentScreen:(TADBannerView *)adView { | ||
NSLog(@"CustomBanner - adViewWillPresentScreen!!"); | |||
[_delegate customEventBannerWillPresentModal:self]; | [_delegate customEventBannerWillPresentModal:self]; | ||
} | } | ||
- (void)adViewWillDismissScreen:(TADBannerView *)adView { | - (void)adViewWillDismissScreen:(TADBannerView *)adView { | ||
NSLog(@"CustomBanner - adViewWillDismissScreen!!"); | |||
[_delegate customEventBannerWillDismissModal:self]; | [_delegate customEventBannerWillDismissModal:self]; | ||
} | } | ||
- (void)adViewDidDismissScreen:(TADBannerView *)adView { | - (void)adViewDidDismissScreen:(TADBannerView *)adView { | ||
NSLog(@"CustomBanner - adViewDidDismissScreen!!"); | |||
[_delegate customEventBannerDidDismissModal:self]; | [_delegate customEventBannerDidDismissModal:self]; | ||
} | } | ||
- (void)adViewWillLeaveApplication:(TADBannerView *)adView { | - (void)adViewWillLeaveApplication:(TADBannerView *)adView { | ||
NSLog(@"CustomBanner - adViewWillLeaveApplication!!"); | |||
[_delegate customEventBannerWillLeaveApplication:self]; | [_delegate customEventBannerWillLeaveApplication:self]; | ||
} | } | ||
- (void)dealloc { | - (void)dealloc { | ||
NSLog(@"CustomBanner - dealloc!!"); | |||
'''// Custom物件消失前, 要將 bannerView 及其 delegate 設為 nil''' | '''// Custom物件消失前, 要將 bannerView 及其 delegate 設為 nil''' | ||
if (_bannerView != nil) { | if (_bannerView != nil) { |
於 2014年7月24日 (四) 08:47 的修訂
首先將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。
Mediation View Controller
// MediationViewController.h // 使用 GADBannerView 物件來介接 TADBannerView @property (nonatomic, strong) GADBannerView *_adBanner;
// MediationViewController.m - (void)viewWillDisappear:(BOOL)animated { // MediationViewController 的 view 消失前, 將 _adBanner 及其 delegate 設為 nil if (_adBanner != nil) { _adBanner.delegate = nil; _adBanner = nil; } }
Custom Banner View
// TADCustomBanner.h // 匯入 TAMedia SDK 定義 #import "TADBannerView.h" // 匯入 Admob SDK 定義 #import "GADCustomEventBanner.h" @interface TADCustomBanner : NSObject<GADCustomEventBanner, TADBannerViewDelegate> { // 以 instant variable 的方式, 宣告 bannerView 物件 TADBannerView *_bannerView; } @property (nonatomic, weak) id<GADCustomEventBannerDelegate> delegate; @end
#import "TADCustomBanner.h" @implementation TADCustomBanner @synthesize delegate = _delegate; - (void)requestBannerAd:(GADAdSize)adSize parameter:(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]; // bannerView 物件初始化 if (_bannerView == nil) { _bannerView = [[TADBannerView alloc] initWithAdSize:TADAdSizeFromCGSize(adSize.size)]; } // 必須要設定delegate _bannerView.delegate = self; // serverParameter 為 AD Unit ID, 在 Admob 裡設定 _bannerView.adUnitID = serverParameter; // 載入廣告 [_bannerView loadRequest:tadRequest]; } #pragma mark - #pragma mark - TADBannerViewDelegate - (void)adViewDidReceiveAd:(TADBannerView *)view { NSLog(@"CustomBanner - adViewDidReceiveAd!!"); [_delegate customEventBanner:self didReceiveAd:view]; } - (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(NSError *)error { NSLog(@"CustomBanner - didFailToReceiveAdWithError!! error: %@", error); [_delegate customEventBanner:self didFailAd:error]; } - (void)adViewWillPresentScreen:(TADBannerView *)adView { NSLog(@"CustomBanner - adViewWillPresentScreen!!"); [_delegate customEventBannerWillPresentModal:self]; } - (void)adViewWillDismissScreen:(TADBannerView *)adView { NSLog(@"CustomBanner - adViewWillDismissScreen!!"); [_delegate customEventBannerWillDismissModal:self]; } - (void)adViewDidDismissScreen:(TADBannerView *)adView { NSLog(@"CustomBanner - adViewDidDismissScreen!!"); [_delegate customEventBannerDidDismissModal:self]; } - (void)adViewWillLeaveApplication:(TADBannerView *)adView { NSLog(@"CustomBanner - adViewWillLeaveApplication!!"); [_delegate customEventBannerWillLeaveApplication:self]; } - (void)dealloc { NSLog(@"CustomBanner - dealloc!!"); // Custom物件消失前, 要將 bannerView 及其 delegate 設為 nil if (_bannerView != nil) { _bannerView.delegate = nil; _bannerView = nil; } } @end