You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

395 lines
12 KiB
C#

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class IronSourceInterstitialEvents : MonoBehaviour
{
#if UNITY_ANDROID
#pragma warning disable CS0067
public static event Action<IronSourceAdInfo> onAdReadyEvent;
public static event Action<IronSourceError> onAdLoadFailedEvent;
public static event Action<IronSourceAdInfo> onAdOpenedEvent;
public static event Action<IronSourceAdInfo> onAdClosedEvent;
public static event Action<IronSourceAdInfo> onAdShowSucceededEvent;
public static event Action<IronSourceError, IronSourceAdInfo> onAdShowFailedEvent;
public static event Action<IronSourceAdInfo> onAdClickedEvent;
#endif
#if UNITY_ANDROID
private IUnityLevelPlayInterstitial LevelPlayInterstitialAndroid;
#endif
void Awake()
{
#if UNITY_ANDROID && !UNITY_EDITOR
LevelPlayInterstitialAndroid = new IronSourceInterstitialLevelPlayAndroid();//sets this.IronSourceInterstitialLevelPlayAndroid as listener for Interstitia(Mediation& Demand Only) events in the bridge
registerInterstitialEvents();//subscribe to Interstitial events from this.interstitialAndroid
#endif
gameObject.name = "IronSourceInterstitialEvents"; //Change the GameObject name to IronSourceEvents.
DontDestroyOnLoad(gameObject); //Makes the object not be destroyed automatically when loading a new scene.
}
#if UNITY_ANDROID && !UNITY_EDITOR
//subscribe to IronSourceInterstitialAndroid IS Mediation & rewarded Interstitial events and notify to subscribed events inside the app
private void registerInterstitialEvents()
{
LevelPlayInterstitialAndroid.OnAdClicked += (IronSourceAdInfo) =>
{
if (onAdClickedEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdClickedEvent?.Invoke(IronSourceAdInfo);
});
}
};
LevelPlayInterstitialAndroid.OnAdReady += (IronSourceAdInfo) =>
{
if (onAdReadyEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdReadyEvent?.Invoke(IronSourceAdInfo);
});
}
};
LevelPlayInterstitialAndroid.OnAdClosed += (IronSourceAdInfo) =>
{
if (onAdClosedEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdClosedEvent?.Invoke(IronSourceAdInfo);
});
}
};
LevelPlayInterstitialAndroid.OnAdOpened += (IronSourceAdInfo) =>
{
if (onAdOpenedEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdOpenedEvent?.Invoke(IronSourceAdInfo);
});
}
};
LevelPlayInterstitialAndroid.OnAdLoadFailed += (ironsourceError) =>
{
if (onAdLoadFailedEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdLoadFailedEvent?.Invoke(ironsourceError);
});
}
};
LevelPlayInterstitialAndroid.OnAdShowFailed += (ironSourceError, IronSourceAdInfo) =>
{
if (onAdShowFailedEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdShowFailedEvent?.Invoke(ironSourceError, IronSourceAdInfo);
});
}
};
LevelPlayInterstitialAndroid.OnAdShowSucceeded += (IronSourceAdInfo) =>
{
if (onAdShowSucceededEvent != null)
{
IronSourceEventsDispatcher.executeAction(() =>
{
onAdShowSucceededEvent?.Invoke(IronSourceAdInfo);
});
}
};
}
#endif
#if !UNITY_ANDROID
// ******************************* Interstitial Events *******************************
private static event Action<IronSourceAdInfo> _onAdReadyEvent;
public static event Action<IronSourceAdInfo> onAdReadyEvent
{
add
{
if (_onAdReadyEvent == null || !_onAdReadyEvent.GetInvocationList().Contains(value))
{
_onAdReadyEvent += value;
}
}
remove
{
if (_onAdReadyEvent != null && _onAdReadyEvent.GetInvocationList().Contains(value))
{
_onAdReadyEvent -= value;
}
}
}
public void onAdReady(string args)
{
if (_onAdReadyEvent != null)
{
IronSourceAdInfo adInfo = new IronSourceAdInfo(args);
_onAdReadyEvent(adInfo);
}
}
private static event Action<IronSourceError> _onAdLoadFailedEvent;
public static event Action<IronSourceError> onAdLoadFailedEvent
{
add
{
if (_onAdLoadFailedEvent == null || !_onAdLoadFailedEvent.GetInvocationList().Contains(value))
{
_onAdLoadFailedEvent += value;
}
}
remove
{
if (_onAdLoadFailedEvent != null && _onAdLoadFailedEvent.GetInvocationList().Contains(value))
{
_onAdLoadFailedEvent -= value;
}
}
}
public void onAdLoadFailed(string description)
{
if (_onAdLoadFailedEvent != null)
{
IronSourceError sse = getErrorFromErrorObject(description);
_onAdLoadFailedEvent(sse);
}
}
private static event Action<IronSourceAdInfo> _onAdOpenedEvent;
public static event Action<IronSourceAdInfo> onAdOpenedEvent
{
add
{
if (_onAdOpenedEvent == null || !_onAdOpenedEvent.GetInvocationList().Contains(value))
{
_onAdOpenedEvent += value;
}
}
remove
{
if (_onAdOpenedEvent != null && _onAdOpenedEvent.GetInvocationList().Contains(value))
{
_onAdOpenedEvent -= value;
}
}
}
public void onAdOpened(string args)
{
if (_onAdOpenedEvent != null)
{
IronSourceAdInfo adInfo = new IronSourceAdInfo(args);
_onAdOpenedEvent(adInfo);
}
}
private static event Action<IronSourceAdInfo> _onAdClosedEvent;
public static event Action<IronSourceAdInfo> onAdClosedEvent
{
add
{
if (_onAdClosedEvent == null || !_onAdClosedEvent.GetInvocationList().Contains(value))
{
_onAdClosedEvent += value;
}
}
remove
{
if (_onAdClosedEvent != null && _onAdClosedEvent.GetInvocationList().Contains(value))
{
_onAdClosedEvent -= value;
}
}
}
public void onAdClosed(string args)
{
if (_onAdClosedEvent != null)
{
IronSourceAdInfo adInfo = new IronSourceAdInfo(args);
_onAdClosedEvent(adInfo);
}
}
private static event Action<IronSourceAdInfo> _onAdShowSucceededEvent;
public static event Action<IronSourceAdInfo> onAdShowSucceededEvent
{
add
{
if (_onAdShowSucceededEvent == null || !_onAdShowSucceededEvent.GetInvocationList().Contains(value))
{
_onAdShowSucceededEvent += value;
}
}
remove
{
if (_onAdShowSucceededEvent != null && _onAdShowSucceededEvent.GetInvocationList().Contains(value))
{
_onAdShowSucceededEvent -= value;
}
}
}
public void onAdShowSucceeded(string args)
{
if (_onAdShowSucceededEvent != null)
{
IronSourceAdInfo adInfo = new IronSourceAdInfo(args);
_onAdShowSucceededEvent(adInfo);
}
}
private static event Action<IronSourceError, IronSourceAdInfo> _onAdShowFailedEvent;
public static event Action<IronSourceError, IronSourceAdInfo> onAdShowFailedEvent
{
add
{
if (_onAdShowFailedEvent == null || !_onAdShowFailedEvent.GetInvocationList().Contains(value))
{
_onAdShowFailedEvent += value;
}
}
remove
{
if (_onAdShowFailedEvent != null && _onAdShowFailedEvent.GetInvocationList().Contains(value))
{
_onAdShowFailedEvent -= value;
}
}
}
public void onAdShowFailed(string args)
{
if (_onAdShowFailedEvent != null)
{
List<object> argList = IronSourceJSON.Json.Deserialize(args) as List<object>;
IronSourceError err = getErrorFromErrorObject(argList[0]);
IronSourceAdInfo adInfo = new IronSourceAdInfo(argList[1].ToString());
_onAdShowFailedEvent(err, adInfo);
}
}
private static event Action<IronSourceAdInfo> _onAdClickedEvent;
public static event Action<IronSourceAdInfo> onAdClickedEvent
{
add
{
if (_onAdClickedEvent == null || !_onAdClickedEvent.GetInvocationList().Contains(value))
{
_onAdClickedEvent += value;
}
}
remove
{
if (_onAdClickedEvent != null && _onAdClickedEvent.GetInvocationList().Contains(value))
{
_onAdClickedEvent -= value;
}
}
}
public void onAdClicked(string args)
{
if (_onAdClickedEvent != null)
{
IronSourceAdInfo adInfo = new IronSourceAdInfo(args);
_onAdClickedEvent(adInfo);
}
}
#endif
// ******************************* Helper methods *******************************
private IronSourceError getErrorFromErrorObject(object descriptionObject)
{
Dictionary<string, object> error = null;
if (descriptionObject is IDictionary)
{
error = descriptionObject as Dictionary<string, object>;
}
else if (descriptionObject is String && !String.IsNullOrEmpty(descriptionObject.ToString()))
{
error = IronSourceJSON.Json.Deserialize(descriptionObject.ToString()) as Dictionary<string, object>;
}
IronSourceError sse = new IronSourceError(-1, "");
if (error != null && error.Count > 0)
{
int eCode = Convert.ToInt32(error[IronSourceConstants.ERROR_CODE].ToString());
string eDescription = error[IronSourceConstants.ERROR_DESCRIPTION].ToString();
sse = new IronSourceError(eCode, eDescription);
}
return sse;
}
private IronSourcePlacement getPlacementFromObject(object placementObject)
{
Dictionary<string, object> placementJSON = null;
if (placementObject is IDictionary)
{
placementJSON = placementObject as Dictionary<string, object>;
}
else if (placementObject is String)
{
placementJSON = IronSourceJSON.Json.Deserialize(placementObject.ToString()) as Dictionary<string, object>;
}
IronSourcePlacement ssp = null;
if (placementJSON != null && placementJSON.Count > 0)
{
int rewardAmount = Convert.ToInt32(placementJSON["placement_reward_amount"].ToString());
string rewardName = placementJSON["placement_reward_name"].ToString();
string placementName = placementJSON["placement_name"].ToString();
ssp = new IronSourcePlacement(placementName, rewardName, rewardAmount);
}
return ssp;
}
}