84 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections;
							 | 
						|||
| 
								 | 
							
								using System.Runtime.InteropServices;
							 | 
						|||
| 
								 | 
							
								using UnityEngine;
							 | 
						|||
| 
								 | 
							
								namespace AmazonAds {
							 | 
						|||
| 
								 | 
							
								    public abstract class IAdRequest {
							 | 
						|||
| 
								 | 
							
								        protected int refreshTime = 60;
							 | 
						|||
| 
								 | 
							
								        protected string autoRefreshID = "0"; //FetchManageerUniqueID
							 | 
						|||
| 
								 | 
							
								        protected bool isAutoRefreshAdMob = false;
							 | 
						|||
| 
								 | 
							
								        protected bool isAutoRefreshMoPub = false;
							 | 
						|||
| 
								 | 
							
								        protected bool requestHasBeenUsed = false;
							 | 
						|||
| 
								 | 
							
								        protected IFetchManager fetchManager;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        public abstract void PutCustomTarget (string key, string value);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetSizes (IAdSize sizes);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetSizes (IInterstitialAdSize sizes);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetSizes (IVideo sizes);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetSlotGroup (string slotGroupName);
							 | 
						|||
| 
								 | 
							
								        public abstract void LoadAd (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success);
							 | 
						|||
| 
								 | 
							
								        public abstract void LoadAd (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success);
							 | 
						|||
| 
								 | 
							
								        public abstract void LoadSmartBanner (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success);
							 | 
						|||
| 
								 | 
							
								        public abstract void LoadSmartBanner (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetAutoRefreshAdMob (bool flag, bool isSmartBanner = false);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetAutoRefreshMoPub (bool flag);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetAutoRefreshMoPub (bool flag, int refreshTime);
							 | 
						|||
| 
								 | 
							
								        public abstract void SetAutoRefresh();
							 | 
						|||
| 
								 | 
							
								        public abstract void SetAutoRefresh(int secs);
							 | 
						|||
| 
								 | 
							
								        public abstract void ResumeAutoRefresh();
							 | 
						|||
| 
								 | 
							
								        public abstract void StopAutoRefresh();
							 | 
						|||
| 
								 | 
							
								        public abstract void PauseAutoRefresh();
							 | 
						|||
| 
								 | 
							
								        public bool IsAutoRefreshAdMob (){ return isAutoRefreshAdMob;}
							 | 
						|||
| 
								 | 
							
								        public bool IsAutoRefreshMoPub (){ return isAutoRefreshMoPub;}
							 | 
						|||
| 
								 | 
							
								        public string AutoRefreshID (){return autoRefreshID.ToString ();}
							 | 
						|||
| 
								 | 
							
								        public abstract void DisposeAd ();
							 | 
						|||
| 
								 | 
							
								        public abstract void CreateFetchManager (bool isSmartBanner = false);
							 | 
						|||
| 
								 | 
							
								        public abstract void DestroyFetchManager ();
							 | 
						|||
| 
								 | 
							
								        public abstract void StopFetchManager();
							 | 
						|||
| 
								 | 
							
								        public abstract void StartFetchManager();
							 | 
						|||
| 
								 | 
							
								        public abstract void SetRefreshFlag(bool flag);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        protected static class Schedule {
							 | 
						|||
| 
								 | 
							
								            private class Runner : MonoBehaviour { }
							 | 
						|||
| 
								 | 
							
								            private static Runner _backer;
							 | 
						|||
| 
								 | 
							
								            private static Runner Backer {
							 | 
						|||
| 
								 | 
							
								                get {
							 | 
						|||
| 
								 | 
							
								                    if (_backer == null) {
							 | 
						|||
| 
								 | 
							
								                        var go = new GameObject ("Scheduler");
							 | 
						|||
| 
								 | 
							
								                        GameObject.DontDestroyOnLoad (go);
							 | 
						|||
| 
								 | 
							
								                        _backer = go.AddComponent<Runner> ();
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    return _backer;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            private static float expiration = 5f;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            public static void WaitForAdResponce (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
							 | 
						|||
| 
								 | 
							
								                Schedule.Backer.StartCoroutine (WaitForAdResponceCoroutine (fetchManager, failure, success));
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            static IEnumerator WaitForAdResponceCoroutine (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) {
							 | 
						|||
| 
								 | 
							
								                float timerExp = 0;
							 | 
						|||
| 
								 | 
							
								                bool flagResp = true;
							 | 
						|||
| 
								 | 
							
								                while (fetchManager.isEmpty()) {
							 | 
						|||
| 
								 | 
							
								                    timerExp += Time.deltaTime;
							 | 
						|||
| 
								 | 
							
								                    if (timerExp > expiration) {
							 | 
						|||
| 
								 | 
							
								                        flagResp = false;
							 | 
						|||
| 
								 | 
							
								                        failure ("no ads from fetchManager");
							 | 
						|||
| 
								 | 
							
								                        break;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    yield return null;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                if (flagResp) {
							 | 
						|||
| 
								 | 
							
								                    success( fetchManager.peek () );
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                Schedule.Clear ();
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            public static void Clear () {
							 | 
						|||
| 
								 | 
							
								                GameObject.Destroy (Backer);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |