224 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
| using System.Collections;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace AmazonAds.Android {
 | |
|     public class DTBAdRequest : IAdRequest {
 | |
|         private AndroidJavaObject dTBAdRequest = null;
 | |
|         private string _slotGroupName = null;
 | |
|         private IAdSize _bannerAdSize = null;
 | |
|         private IInterstitialAdSize _interstitialAdSize = null;
 | |
|         private IVideo _videoAdSize = null;
 | |
| 
 | |
|         UnityEngine.AndroidJavaClass playerClass;
 | |
|         UnityEngine.AndroidJavaObject currentActivityObject;
 | |
| 
 | |
|         public DTBAdRequest () {
 | |
|             playerClass = new UnityEngine.AndroidJavaClass ("com.unity3d.player.UnityPlayer");
 | |
|             currentActivityObject = playerClass.GetStatic<UnityEngine.AndroidJavaObject> ("currentActivity");
 | |
|             dTBAdRequest = new AndroidJavaObject ("com.amazon.device.ads.DTBAdRequest", currentActivityObject);
 | |
|         }
 | |
| 
 | |
|         public void Dispose() {
 | |
|             playerClass.Dispose();
 | |
|             currentActivityObject.Dispose();
 | |
|             dTBAdRequest.Dispose();
 | |
|         }
 | |
| 
 | |
|         public DTBAdRequest (AndroidJavaObject dtbRequest) { 
 | |
|             dTBAdRequest = dtbRequest;
 | |
|         }
 | |
| 
 | |
|         public override void PutCustomTarget (string key, string value) {
 | |
|             dTBAdRequest.Call ("putCustomTarget", key, value);
 | |
|         }
 | |
| 
 | |
|         public override void SetSizes (IAdSize sizes) {
 | |
|             _bannerAdSize = sizes;
 | |
|             DTBAdSize size = (DTBAdSize) sizes;
 | |
|             autoRefreshID = "Banner_" + sizes.GetWidth () + "_" + sizes.GetHeight () + "_" + sizes.GetSlotUUID ();
 | |
|             AndroidJavaClass arrayClass = new AndroidJavaClass( "java.lang.reflect.Array" );
 | |
|             AndroidJavaObject arrayObject = arrayClass.CallStatic< AndroidJavaObject >( "newInstance", new AndroidJavaClass( "com.amazon.device.ads.DTBAdSize" ), 1 );
 | |
|             arrayClass.CallStatic( "set", arrayObject, 0, ((DTBAdSize) sizes).GetInstance ()  );
 | |
|             var ar = new object[] { arrayObject };
 | |
|             dTBAdRequest.Call ("setSizes", ar);
 | |
|         }
 | |
| 
 | |
|         public override void SetSizes (IInterstitialAdSize sizes) {
 | |
|             _interstitialAdSize = sizes;
 | |
|             AndroidJavaClass arrayClass = new AndroidJavaClass( "java.lang.reflect.Array" );
 | |
|             AndroidJavaObject arrayObject = arrayClass.CallStatic< AndroidJavaObject >( "newInstance", new AndroidJavaClass( "com.amazon.device.ads.DTBAdSize" ), 1 );
 | |
|             arrayClass.CallStatic( "set", arrayObject, 0, ((DTBAdSize.DTBInterstitialAdSize) sizes).GetInstance ()  );
 | |
|             var ar = new object[] { arrayObject };
 | |
|             dTBAdRequest.Call ("setSizes", ar);
 | |
|         }
 | |
| 
 | |
|         public override void SetSizes (IVideo sizes) {
 | |
|             _videoAdSize = sizes;
 | |
|             AndroidJavaClass arrayClass = new AndroidJavaClass( "java.lang.reflect.Array" );
 | |
|             AndroidJavaObject arrayObject = arrayClass.CallStatic< AndroidJavaObject >( "newInstance", new AndroidJavaClass( "com.amazon.device.ads.DTBAdSize" ), 1 );
 | |
|             arrayClass.CallStatic( "set", arrayObject, 0, ((DTBAdSize.DTBVideo) sizes).GetInstance ()  );
 | |
|             var ar = new object[] { arrayObject };
 | |
|             dTBAdRequest.Call ("setSizes", ar);
 | |
|         }
 | |
| 
 | |
|         public override void SetSlotGroup (string slotGroupName) {
 | |
|             _slotGroupName = slotGroupName;
 | |
|             autoRefreshID = "Banner_" + slotGroupName;
 | |
|             dTBAdRequest.Call ("setSlotGroup", slotGroupName);
 | |
|         }
 | |
| 
 | |
|         public IAdSize GetBannerAdSizes () {
 | |
|             return _bannerAdSize;
 | |
|         }
 | |
| 
 | |
|         public IInterstitialAdSize GetInterstitialSizes () {
 | |
|             return _interstitialAdSize;
 | |
|         }
 | |
| 
 | |
|         public IVideo GetVideoSizes () {
 | |
|             return _videoAdSize;
 | |
|         }
 | |
| 
 | |
|         public string GetSlotGroup () {
 | |
|             return _slotGroupName;
 | |
|         }
 | |
| 
 | |
|         public override void LoadAd (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
 | |
|             if (IsAutoRefreshAdMob ()) {
 | |
|                 Schedule.WaitForAdResponce (fetchManager, failure, success);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             DTBCallback callback = createLoadAdCallback(success);
 | |
|             callback.onFailureCallback = failure;
 | |
| 
 | |
|             dTBAdRequest.Call ("loadAd", callback);
 | |
|             requestHasBeenUsed = true;
 | |
|         }
 | |
| 
 | |
|         public override void LoadSmartBanner (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
 | |
|             if (IsAutoRefreshAdMob ()) {
 | |
|                 Schedule.WaitForAdResponce (fetchManager, failure, success);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             DTBCallback callback = createLoadAdCallback(success);
 | |
|             callback.onFailureCallback = failure;
 | |
| 
 | |
|             dTBAdRequest.Call ("loadSmartBanner", callback);
 | |
|             requestHasBeenUsed = true;
 | |
|         }
 | |
| 
 | |
|         public override void LoadAd (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success) {
 | |
|             DTBCallback callback = createLoadAdCallback(success);
 | |
|             callback.onFailureWithErrorCallback = failure;
 | |
|             
 | |
|             dTBAdRequest.Call ("loadAd", callback);
 | |
|             requestHasBeenUsed = true;
 | |
|         }
 | |
| 
 | |
|         public override void LoadSmartBanner (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success) {
 | |
|             DTBCallback callback = createLoadAdCallback(success);
 | |
|             callback.onFailureWithErrorCallback = failure;
 | |
|             
 | |
|             dTBAdRequest.Call ("loadSmartBanner", callback);
 | |
|             requestHasBeenUsed = true;
 | |
|         }
 | |
| 
 | |
|         private DTBCallback createLoadAdCallback(Amazon.OnSuccessDelegate success) {
 | |
|             DTBCallback callback = new DTBCallback ();
 | |
|             callback.onSuccessCallback = success;
 | |
| 
 | |
|             return callback;
 | |
|         }
 | |
| 
 | |
|         public AndroidJavaObject GetClient () {
 | |
|             return dTBAdRequest;
 | |
|         }
 | |
| 
 | |
|         public override void SetAutoRefresh() {
 | |
|             dTBAdRequest.Call("setAutoRefresh");
 | |
|         }
 | |
| 
 | |
|         public override void SetAutoRefresh(int secs) {
 | |
|             dTBAdRequest.Call("setAutoRefresh", secs);
 | |
|         }
 | |
| 
 | |
|         public override void ResumeAutoRefresh() {
 | |
|             dTBAdRequest.Call("resumeAutoRefresh");
 | |
|         }
 | |
| 
 | |
|         public override void StopAutoRefresh() {
 | |
|             dTBAdRequest.Call("stop");
 | |
|         }
 | |
| 
 | |
|         public override void PauseAutoRefresh() {
 | |
|             dTBAdRequest.Call("pauseAutoRefresh");
 | |
|         }
 | |
| 
 | |
|         public override void SetAutoRefreshMoPub (bool flag){
 | |
|             SetAutoRefreshMoPub(flag, refreshTime);
 | |
|         }
 | |
| 
 | |
|         public override void SetAutoRefreshMoPub (bool flag, int refreshTime) {
 | |
|             isAutoRefreshMoPub = flag;
 | |
|             this.refreshTime = refreshTime;
 | |
|             if(flag){
 | |
|                 if( requestHasBeenUsed ){
 | |
|                     ResumeAutoRefresh();
 | |
|                 } else {
 | |
|                     SetAutoRefresh(refreshTime);
 | |
|                 }
 | |
|             } else {
 | |
|                 PauseAutoRefresh();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void SetAutoRefreshAdMob (bool flag, bool isSmartBanner = false) {
 | |
|             isAutoRefreshAdMob = flag;
 | |
|             if (flag) {
 | |
|                 CreateFetchManager (isSmartBanner);
 | |
|                 StartFetchManager ();
 | |
|             } else {
 | |
|                 StopFetchManager ();
 | |
|             }
 | |
|         }
 | |
|         
 | |
|         public override void SetRefreshFlag (bool flag) {
 | |
|             dTBAdRequest.Call("setRefreshFlag", flag);
 | |
|         }
 | |
| 
 | |
|         public override void DisposeAd () {
 | |
|             if (fetchManager != null) {
 | |
|                 fetchManager.dispense ();
 | |
|             } else {
 | |
|                 Debug.LogWarning ("FetchManager not Init. Please turn on auto-refresh.");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void StartFetchManager () {
 | |
|             if (fetchManager != null){
 | |
|                 fetchManager.start ();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void StopFetchManager () {
 | |
|             if (fetchManager != null){
 | |
|                 fetchManager.stop ();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void CreateFetchManager (bool isSmartBanner = false) {
 | |
|             if (fetchManager == null) {
 | |
|                 fetchManager = DTBFetchFactory.GetInstance ().createFetchManager (autoRefreshID, dTBAdRequest, isSmartBanner);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override void DestroyFetchManager () {
 | |
|             if (fetchManager != null) {
 | |
|                 DTBFetchFactory.GetInstance ().removeFetchManager (autoRefreshID);
 | |
|                 fetchManager = null;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |