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 ("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; } } } }