#if UNITY_ANDROID //&& !UNITY_EDITOR using System; using Azerion.BlueStack.API; using Azerion.BlueStack.Internal; using UnityEngine; namespace Azerion.BlueStack.Platforms.Android { public class InterstitialAdClient : AndroidJavaProxy, IInterstitialAdClient { private readonly AndroidJavaObject _unityInterstitialAd; private readonly BlueStackErrorUtils _blueStackErrorUtils; public InterstitialAdClient(AndroidJavaObjectFactory androidJavaObjectFactory, BlueStackErrorUtils blueStackErrorUtils) : base(BlueStackNativeClassNames.UnityInterstitialAdListener) { _unityInterstitialAd = androidJavaObjectFactory.CreateUnityInterstitialAdAndroidJavaObject(this); _blueStackErrorUtils = blueStackErrorUtils; } public event EventHandler OnInterstitialDidLoaded; public event EventHandler OnInterstitialDidFail; public event EventHandler OnInterstitialClicked; public event EventHandler OnInterstitialDisappear; public event EventHandler OnInterstitialDidShown; public void Create(string placementId) { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityInterstitialAd.Call("create", placementId); }); } public void Load() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityInterstitialAd.Call("load", null); }); } public void Load(IPreferenceClient iPreferenceClient) { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { PreferenceClient preferenceClient = (PreferenceClient)iPreferenceClient; _unityInterstitialAd.Call("load", preferenceClient.getRequestOptions()); }); } public void Show() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityInterstitialAd.Call("show"); }); } public void Destroy() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityInterstitialAd.Call("destroy"); _unityInterstitialAd.Dispose(); }); } public void onInterstitialDidLoaded() { OnInterstitialDidLoaded?.Invoke(this, EventArgs.Empty); } public void onInterstitialDidFail(AndroidJavaObject adsErrorJavaObject) { OnInterstitialDidFail?.Invoke(this, _blueStackErrorUtils.CreateBlueStackErrorFromJavaObject(adsErrorJavaObject)); } public void onInterstitialClicked() { OnInterstitialClicked?.Invoke(this, EventArgs.Empty); } public void onInterstitialDisappear() { OnInterstitialDisappear?.Invoke(this, EventArgs.Empty); } public void onInterstitialDidShown() { OnInterstitialDidShown?.Invoke(this, EventArgs.Empty); } } } #endif