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