| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  | 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; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-24 01:28:57 +00:00
										 |  |  |  |         UnityEngine.AndroidJavaClass playerClass; | 
					
						
							|  |  |  |  |         UnityEngine.AndroidJavaObject currentActivityObject; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  |         public DTBAdRequest () { | 
					
						
							| 
									
										
										
										
											2024-06-24 01:28:57 +00:00
										 |  |  |  |             playerClass = new UnityEngine.AndroidJavaClass ("com.unity3d.player.UnityPlayer"); | 
					
						
							|  |  |  |  |             currentActivityObject = playerClass.GetStatic<UnityEngine.AndroidJavaObject> ("currentActivity"); | 
					
						
							| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  |             dTBAdRequest = new AndroidJavaObject ("com.amazon.device.ads.DTBAdRequest", currentActivityObject); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-24 01:28:57 +00:00
										 |  |  |  |         public void Dispose() { | 
					
						
							|  |  |  |  |             playerClass.Dispose(); | 
					
						
							|  |  |  |  |             currentActivityObject.Dispose(); | 
					
						
							|  |  |  |  |             dTBAdRequest.Dispose(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-26 03:47:44 +00:00
										 |  |  |  |         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; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |