215 lines
8.1 KiB
C#
215 lines
8.1 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;
|
|
|
|
public DTBAdRequest () {
|
|
UnityEngine.AndroidJavaClass playerClass = new UnityEngine.AndroidJavaClass ("com.unity3d.player.UnityPlayer");
|
|
UnityEngine.AndroidJavaObject currentActivityObject = playerClass.GetStatic<UnityEngine.AndroidJavaObject> ("currentActivity");
|
|
dTBAdRequest = new AndroidJavaObject ("com.amazon.device.ads.DTBAdRequest", currentActivityObject);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |