#if UNITY_ANDROID //&& !UNITY_EDITOR using System; using Azerion.BlueStack.API; using Azerion.BlueStack.Internal; using UnityEngine; namespace Azerion.BlueStack.Platforms.Android { public class NativeAdClient : AndroidJavaProxy, INativeAdClient { private readonly AndroidJavaObject _unityNativeAd; private readonly BlueStackErrorUtils _blueStackErrorUtils; public NativeAdClient(AndroidJavaObjectFactory androidJavaObjectFactory, BlueStackErrorUtils blueStackErrorUtils) : base(BlueStackNativeClassNames.UnityNativeAdListener) { _unityNativeAd = androidJavaObjectFactory.CreateUnityNativeAdAndroidJavaObject(this); _blueStackErrorUtils = blueStackErrorUtils; } public event EventHandler OnNativeAdDidLoad; public event EventHandler OnNativeAdDidFail; public event EventHandler OnNativeAdImpression; public event EventHandler OnNativeAdClicked; // public event EventHandler OnNativeAdOpening; //TODO public event EventHandler OnNativeAdClosed; public void Create(string placementId) { _unityNativeAd.Call("create", placementId); } public void Load() { _unityNativeAd.Call("load", null); } public void Load(IPreferenceClient iPreferenceClient) { PreferenceClient preferenceClient = (PreferenceClient)iPreferenceClient; _unityNativeAd.Call("load", preferenceClient.getMNGPreference()); } public string GetTitle() { return _unityNativeAd.Call("getTitle"); } public string GetBodyText() { return _unityNativeAd.Call("getBodyText"); } public string GetCallToActionText() { return _unityNativeAd.Call("getCTAText"); } public byte[] GetBadgeBytes() { sbyte[] sBytes = _unityNativeAd.Call("getBadgeBytes"); byte[] bytes = (byte[]) (Array)sBytes; Debug.Log("GetBadgeBytes ToString: " + BitConverter.ToString(bytes)); return bytes; } public string GetBadge() { return "Ad"; } public string GetIconUrl() { return _unityNativeAd.Call("getAdIconUrl"); } public string GetCoverImageUrl() { return _unityNativeAd.Call("getAdCoverImageUrl"); } public string GetClickUrl() { return _unityNativeAd.Call("getClickUrl"); } public void RecordImpression() { _unityNativeAd.Call("recordImpression"); } public void PerformClick() { _unityNativeAd.Call("performClick"); } public void Destroy() { _unityNativeAd.Call("destroy"); } public void onNativeAdDidLoad() { Debug.Log("NativeAdClient.onNativeAdDidLoad"); OnNativeAdDidLoad?.Invoke(this, EventArgs.Empty); } public void onNativeAdDidFail(AndroidJavaObject adsErrorJavaObject) { OnNativeAdDidFail?.Invoke(this, _blueStackErrorUtils.CreateBlueStackErrorFromJavaObject(adsErrorJavaObject)); } public void onNativeAdRecordedImpression() { Debug.Log("NativeAdClient.onNativeAdRecordedImpression"); OnNativeAdImpression?.Invoke(this, EventArgs.Empty); } public void onNativeAdPerformedClick() { Debug.Log("NativeAdClient.onNativeAdPerformedClick"); OnNativeAdClicked?.Invoke(this, EventArgs.Empty); } public void onNativeAdClose() { Debug.Log("NativeAdClient.onNativeAdClose"); OnNativeAdClosed?.Invoke(this, EventArgs.Empty); _unityNativeAd.Dispose(); } } } #endif