com.guru.unity.max/Amazon/Scripts/Common/IAdRequest.cs

87 lines
3.9 KiB
C#

using System;
using System.Collections;
using System.Runtime.InteropServices;
using UnityEngine;
namespace AmazonAds {
public abstract class IAdRequest : IDisposable {
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);
public void Dispose() {
}
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);
}
}
}
}