AdMob Mediation
於 2014年7月3日 (四) 11:25 由 imported>Wikiuser 所做的修訂
首先將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 Banner View
// TADCustomBanner.m
// 匯入需要的 .h 檔
#import "TADCustomBanner.h"
#import "GADCustomEventBanner.h"
#import "GADCustomEventBannerDelegate.h"
#import "TADBannerView.h"
#import "TADRequest.h"
#import "TADMediationView.h"
@interface TADCustomBanner () <TADBannerViewDelegate> {
// 這裡需要使用 TADMediationView 物件!!!
TADMediationView *_bannerView;
}
@end
@implementation TADCustomBanner
@synthesize delegate = _delegate;
- (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.
TADRequest *tadRequest = [TADRequest request];
// 設定非測試模式
tadRequest.testing = NO;
// 設定 Geolocation 資訊
[tadRequest setLocationWithLatitude:[LATITUDE] longitude:[LONGITUDE] accuracy:[ACCURACY]];
if (_bannerView == nil) {
_bannerView = [[TADMediationView alloc] initWithAdSize:kTADAdSizeBanner];
_bannerView.delegate = self;
_bannerView.adUnitID = serverParameter;
_bannerView.rootViewController = [_delegate viewControllerForPresentingModalView];
}
[_bannerView loadRequest:tadRequest];
}
#pragma mark -
#pragma mark - TADBannerViewDelegate
- (void)adViewDidReceiveAd:(TADBannerView *)view {
[self.delegate customEventBanner:self didReceiveAd:view];
}
- (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(NSError *)error {
[self.delegate customEventBanner:self didFailAd:error];
}
- (void)dealloc{
// 記得要設為 nil
if (_bannerView != nil) {
_bannerView.delegate = nil;
_bannerView = nil;
}
}
@end
Custom Interstitial View
// TADCustomInterstitial.m
// 匯入需要的 .h 檔
#import "TADCustomInterstitial.h"
#import "GADCustomEventInterstitial.h"
#import "GADCustomEventInterstitialDelegate.h"
#import "TADInterstitial.h"
#import "TADRequest.h"
@interface TADCustomInterstitial () <TADInterstitialDelegate> {
// 使用原本 Interstitial 物件即可
TADInterstitial *_interstitialView;
}
@end
@implementation TADCustomInterstitial
- (void)requestInterstitialAdWithParameter:(NSString *)serverParameter
label:(NSString *)serverLabel
request:(GADCustomEventRequest *)customEventRequest {
TADRequest *tadRequest = [TADRequest request];
// 設定非測試模式
tadRequest.testing = NO;
// 設定 Geolocation 資訊
[tadRequest setLocationWithLatitude:[LATITUDE] longitude:[LONGITUDE] accuracy:[ACCURACY]];
if (!_interstitialView) {
_interstitialView = [[TADInterstitial alloc] init];
_interstitialView.delegate = self;
_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];
}
- (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);
}
- (void)dealloc {
// 記得要設為 nil
if (_interstitialView) {
_interstitialView.delegate = nil;
_interstitialView = nil;
}
}
@end