Mopub Mediation Interstitial

出自TAMedia
於 2017年6月7日 (三) 06:17 由 imported>Wikiuser 所做的修訂
跳至導覽 跳至搜尋

依照Mopub設定教學設定後,開始實做Custom event
官方教學:連結
1.先建立一class繼承MPInterstitialCustomEvent,class名稱必須與Mopub設定內一樣
2.加入Tamedia TADInterstitial.h
3.複寫-requestInterstitialWithCustomEventInfo:以及在此method內用TADInterstitial呼叫廣告
4.複寫-showInterstitialFromRootViewController:以及在此method內用TADInterstitial的方法-presentFromRootViewController:顯示廣告
5.TADInterstitial的delegate內呼叫MPInterstitialCustomEvent delegate執行對應的method
可參考以下代碼

CustomInterstitialEvent

  #import "MPInterstitialCustomEvent.h"
  #import "TADInterstitial.h"
  
  @interface CustomInterstitialEvent : MPInterstitialCustomEvent <TADInterstitialDelegate>
  
  @property (nonatomic,strong) TADInterstitial *interstitialView;
  
  @end
  #import "CustomInterstitialEvent.h"
  
  @implementation CustomInterstitialEvent
  
  - (void)requestInterstitialWithCustomEventInfo:(NSDictionary *)info {
      TADRequest *request = [TADRequest request];
      
      request.testing = NO;
      // Type: TADGender
      request.gender = kTADGenderUnknown;       
      // Set birthday
      [request setBirthdayWithYear:1988 month:6 day:11];    
      // Set location
      [request setLocationWithLatitude:25.033534 longitude:121.534791 accuracy:1];
      
      // interstitialView 物件初始化
      if (self.interstitialView == nil) {
          self.interstitialView = [[TADInterstitial alloc] init];
      } 
      // 必須要設定delegate
      self.interstitialView.delegate = self;
      
      // 設定 AD Unit ID
      NSString *interstitialId = info[@"InterstitialId"];//此處InterstitialId是在Mopub內設定
      self.interstitialView.adUnitID = interstitialId;
      self.interstitialView.turnOnMicrophone = NO;
      
      // 載入廣告
      [self.interstitialView loadRequest:request];
  }
  
  - (void)showInterstitialFromRootViewController:(UIViewController *)rootViewController {
      [self.interstitialView presentFromRootViewController:rootViewController];
  }
   
  // Interstitial廣告成功載入後呼叫, 可以在此時間點及之後顯示呈現廣告
  - (void)interstitialDidReceiveAd:(TADInterstitial *)ad {    
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEvent:didLoadAd:)]) {
          [self.delegate interstitialCustomEvent:self didLoadAd:ad];
      }
   }
  
  // Interstitial廣告載入失敗時呼叫, 處理錯誤 或 顯示錯誤訊息
  - (void)interstitial:(TADInterstitial *)ad didFailToReceiveAdWithError:(TADRequestError *)error {
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEvent:didFailToLoadAdWithError:)]) {
          [self.delegate interstitialCustomEvent:self didFailToLoadAdWithError:error];
      }
  }
  
  // Interstitial廣告呈現之前呼叫, 注意使用者可能會在廣告內按下連結(網頁, AppStore, ...)而因此離開應用程式, 可以在這function中處理該暫停之項目
  - (void)interstitialWillPresentScreen:(TADInterstitial *)ad {
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEventWillAppear:)]) {
          [self.delegate interstitialCustomEventWillAppear:self];
      }
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEventDidAppear:)]) {
          [self.delegate interstitialCustomEventDidAppear:self];
      }
  }
  
  // Interstitial廣告關閉, 在螢幕上消失之前呼叫, 再次提醒在Interstitail消失前, 必須將Interstitial及delegate設為nil (可以在這個function中執行)
  - (void)interstitialWillDismissScreen:(TADInterstitial *)ad {
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEventWillDisappear:)]) {
          [self.delegate interstitialCustomEventWillDisappear:self];
      }    
  }
  
  // Interstitial廣告關閉, 在螢幕上消失之後呼叫
  - (void)interstitialDidDismissScreen:(TADInterstitial *)ad {
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEventDidDisappear:)]) {
          [self.delegate interstitialCustomEventDidDisappear:self];
      }    
  }
  
  // 使用者在廣告內按下連結(網頁, AppStore, ...)而因此離開應用程式之前呼叫
  - (void)interstitialWillLeaveApplication:(TADInterstitial *)ad {
      if ([self.delegate respondsToSelector:@selector(interstitialCustomEventWillLeaveApplication:)]) {
          [self.delegate interstitialCustomEventWillLeaveApplication:self];
      }
  } 
  
  - (void)dealloc {
      if (self.interstitialView != nil) {
          self.interstitialView.delegate = nil;
          self.interstitialView = nil;
      }
  }