「Expandable」修訂間的差異
		
		
		
		
		
		跳至導覽
		跳至搜尋
		
				
		
		
	
| imported>Wikiuser  (新頁面: 擴張式廣告結合了橫幅及插頁式廣告, 讓橫幅廣告被點擊後先不會因打開瀏覽器app而離開廣告所在的app, 讓使用者可以在同一個app裡全版面的...) | imported>Wikiuser  | ||
| 行 8: | 行 8: | ||
| ==== ExpandableViewController.h ==== | ==== ExpandableViewController.h ==== | ||
|   '''//  | |||
|   '''// 匯入 TAMedia SDK 定義''' | |||
|   #import "TADBannerView.h" |   #import "TADBannerView.h" | ||
|   #import "TADBannerViewDelegate.h" |   #import "TADBannerViewDelegate.h" | ||
|   @interface  |   @interface ExpandableViewController : UIViewController <TADBannerViewDelegate> | ||
|       '''// 宣告 bannerView  |  { | ||
|       '''// 以 instant variable 的方式, 宣告 bannerView 物件''' | |||
|       TADBannerView *bannerView; |       TADBannerView *bannerView; | ||
|   } |   } | ||
|   @end |   @end | ||
| ==== ExpandableViewController.m ==== | ==== ExpandableViewController.m ==== | ||
|   - (void)viewDidLoad | |||
|  { | |||
|      [super viewDidLoad]; | |||
|      '''// Do any additional setup after loading the view.''' | |||
|      self.view.backgroundColor = [UIColor whiteColor]; | |||
|      self.title = @"TAMedia Expandable"; | |||
|      UIButton *fireButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; | |||
|      fireButton.frame = CGRectMake(10, 120, 200, 40); | |||
|      fireButton.backgroundColor = [UIColor colorWithRed:239/255.0 green:239/255.0 blue:239/255.0 alpha:1.0]; | |||
|      [fireButton setTitle:@"Expandable Ad" forState:UIControlStateNormal]; | |||
|      [fireButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; | |||
|      [fireButton addTarget:self action:@selector(requestAd) forControlEvents:UIControlEventTouchUpInside]; | |||
|      [self.view addSubview:fireButton]; | |||
|   } | |||
|   - (void) |   - (void)requestAd | ||
|  { | |||
|      TADRequest *request = [TADRequest request]; | |||
|      '''// Type: TADGender''' | |||
|      request.gender = [_GENDER_]; | |||
|      '''// Set birthday''' | |||
|      [request setBirthdayWithYear:[_YEAR_] month:[_MONTH_] day:[_DAY_]]; | |||
|      '''// Set location''' | |||
|      [request setLocationWithLatitude:[_LATITUDE_] longitude:[_LONGITUDE_] accuracy:[_ACCURACY_]]; | |||
|      '''// bannerView 物件初始化, 帶入自訂的origin''' | |||
|      if (!bannerView) { | |||
|          bannerView = [[TADBannerView alloc] initWithAdSize:kTADAdSizeBanner origin:CGPointMake(0, self.view.frame.size.height - 50)]; | |||
|      } | |||
|      '''// 必須要設定delegate''' | |||
|      bannerView.delegate = self; | |||
|      '''// 設定 AD Unit ID''' | |||
|      bannerView.adUnitID = [_YOUR_AD_UNIT_ID_]; | |||
|      '''// 設定 rootViewController''' | |||
|      bannerView.rootViewController = self; | |||
|      '''// 載入廣告''' | |||
|      [bannerView loadRequest:request]; | |||
|   } |   } | ||
| 行 49: | 行 77: | ||
|   - (void)viewWillDisappear:(BOOL)animated { |   - (void)viewWillDisappear:(BOOL)animated { | ||
|      '''// viewController 的 view 消失前, 必須將 bannerView 及其 delegate 設為 nil''' | |||
|      if (bannerView != nil) { | |||
|          bannerView.delegate = nil; | |||
|          bannerView = nil; | |||
|      } | |||
|   } |   } | ||
| 行 65: | 行 90: | ||
|   @protocol TADBannerViewDelegate <NSObject> |   @protocol TADBannerViewDelegate <NSObject> | ||
|   @optional |   @optional | ||
|   // Ad Request Lifecycle Notifications |   '''// Ad Request Lifecycle Notifications''' | ||
|   - (void)adViewDidReceiveAd:(TADBannerView *)view; |   - (void)adViewDidReceiveAd:(TADBannerView *)view; | ||
|   - (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(TADRequestError *)error; |   - (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(TADRequestError *)error; | ||
|   // Click-Time Lifecycle Notifications |   '''// Click-Time Lifecycle Notifications''' | ||
|   - (void)adViewWillPresentScreen:(TADBannerView *)adView; |   - (void)adViewWillPresentScreen:(TADBannerView *)adView; | ||
|   - (void)adViewWillDismissScreen:(TADBannerView *)adView; |   - (void)adViewWillDismissScreen:(TADBannerView *)adView; | ||
於 2014年7月10日 (四) 10:47 的修訂
擴張式廣告結合了橫幅及插頁式廣告, 讓橫幅廣告被點擊後先不會因打開瀏覽器app而離開廣告所在的app, 讓使用者可以在同一個app裡全版面的豐富體驗
加入 ExpandableView
Expandable廣告使用 TADBannerView class 來實現擴張的行為 以 TADBannerView 的加入方法來加入
ExpandableViewController.h
// 匯入 TAMedia SDK 定義
#import "TADBannerView.h"
#import "TADBannerViewDelegate.h"
@interface ExpandableViewController : UIViewController <TADBannerViewDelegate>
{
    // 以 instant variable 的方式, 宣告 bannerView 物件
    TADBannerView *bannerView;
}
@end
ExpandableViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    self.title = @"TAMedia Expandable";
    UIButton *fireButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    fireButton.frame = CGRectMake(10, 120, 200, 40);
    fireButton.backgroundColor = [UIColor colorWithRed:239/255.0 green:239/255.0 blue:239/255.0 alpha:1.0];
    [fireButton setTitle:@"Expandable Ad" forState:UIControlStateNormal];
    [fireButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [fireButton addTarget:self action:@selector(requestAd) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:fireButton];
}
- (void)requestAd
{
    TADRequest *request = [TADRequest request];
    
    // Type: TADGender
    request.gender = [_GENDER_];
    
    // Set birthday
    [request setBirthdayWithYear:[_YEAR_] month:[_MONTH_] day:[_DAY_]];
    
    // Set location
    [request setLocationWithLatitude:[_LATITUDE_] longitude:[_LONGITUDE_] accuracy:[_ACCURACY_]];
    
    // bannerView 物件初始化, 帶入自訂的origin
    if (!bannerView) {
        bannerView = [[TADBannerView alloc] initWithAdSize:kTADAdSizeBanner origin:CGPointMake(0, self.view.frame.size.height - 50)];
    }
    
    // 必須要設定delegate
    bannerView.delegate = self;
    
    // 設定 AD Unit ID
    bannerView.adUnitID = [_YOUR_AD_UNIT_ID_];
    
    // 設定 rootViewController
    bannerView.rootViewController = self;
    
    // 載入廣告
    [bannerView loadRequest:request];
}
特別注意
在 ViewController 的 view 即將消失前, 必須要將 bannerView 本身以及其 delegate 設定為 nil
- (void)viewWillDisappear:(BOOL)animated {
    // viewController 的 view 消失前, 必須將 bannerView 及其 delegate 設為 nil
    if (bannerView != nil) {
        bannerView.delegate = nil;
        bannerView = nil;
    }
}
TADBannerViewDelegate
@protocol TADBannerViewDelegate <NSObject> @optional // Ad Request Lifecycle Notifications - (void)adViewDidReceiveAd:(TADBannerView *)view; - (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(TADRequestError *)error; // Click-Time Lifecycle Notifications - (void)adViewWillPresentScreen:(TADBannerView *)adView; - (void)adViewWillDismissScreen:(TADBannerView *)adView; - (void)adViewDidDismissScreen:(TADBannerView *)adView; - (void)adViewWillLeaveApplication:(TADBannerView *)adView; @end
- (void)adViewDidReceiveAd:(TADBannerView *)view
廣告載入成功後被呼叫, 可以在這裡呈現廣告
- (void)adView:(TADBannerView *)view didFailToReceiveAdWithError:(TADRequestError *)error
廣告載入失敗後被呼叫
- (void)adViewWillPresentScreen:(TADBannerView *)adView
廣告即將被呈現之前被呼叫
- (void)adViewWillDismissScreen:(TADBannerView *)adView
廣告即將被關閉之前被呼叫
- (void)adViewDidDismissScreen:(TADBannerView *)adView
廣告被關閉之後被呼叫
- (void)adViewWillLeaveApplication:(TADBannerView *)adView
應用程式及將改在背景執行或中止運作前被呼叫