#if UNITY_ANDROID //&& !UNITY_EDITOR using System; using Azerion.BlueStack.API; using Azerion.BlueStack.Internal; using UnityEngine; namespace Azerion.BlueStack.Platforms.Android { public class RewardedVideoAdClient : AndroidJavaProxy, IRewardedVideoAdClient { private readonly AndroidJavaObject _unityRewardedVideoAd; private readonly BlueStackErrorUtils _blueStackErrorUtils; public event EventHandler OnRewardedVideoLoaded; public event EventHandler OnRewardedVideoError; public event EventHandler OnRewardedVideoClicked; public event EventHandler OnRewardedVideoClosed; public event EventHandler OnRewardedVideoAppeared; public event EventHandler OnUserRewardEarned; public RewardedVideoAdClient(AndroidJavaObjectFactory androidJavaObjectFactory, BlueStackErrorUtils blueStackErrorUtils) : base( BlueStackNativeClassNames.UnityRewardedAdListener) { _unityRewardedVideoAd = androidJavaObjectFactory.CreateUnityRewardedAdAndroidJavaObject(this); _blueStackErrorUtils = blueStackErrorUtils; } public void Create(string placementId) { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityRewardedVideoAd.Call("create", placementId); }); } public void Load() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityRewardedVideoAd.Call("load", null); }); } public void Load(IPreferenceClient iPreferenceClient) { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { PreferenceClient preferenceClient = (PreferenceClient)iPreferenceClient; _unityRewardedVideoAd.Call("load", preferenceClient.getRequestOptions()); }); } public void Show() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityRewardedVideoAd.Call("show"); }); } public void Destroy() { AndroidJavaObjectFactory.Instance.RunOnUiThread(() => { _unityRewardedVideoAd.Call("destroy"); _unityRewardedVideoAd.Dispose(); }); } public void onRewardedVideoLoaded() { OnRewardedVideoLoaded?.Invoke(this, EventArgs.Empty); } public void onRewardedVideoError(AndroidJavaObject adsErrorJavaObject) { OnRewardedVideoError?.Invoke(this, _blueStackErrorUtils.CreateBlueStackErrorFromJavaObject(adsErrorJavaObject)); } public void onRewardedVideoClicked() { OnRewardedVideoClicked?.Invoke(this, EventArgs.Empty); } public void onRewardedVideoClosed() { OnRewardedVideoClosed?.Invoke(this, EventArgs.Empty); } public void onRewardedVideoAppeared() { OnRewardedVideoAppeared?.Invoke(this, EventArgs.Empty); } public void onUserRewardEarned(AndroidJavaObject mAdvertiseVideoReward) { RewardedItem rewardedItem = null; if (mAdvertiseVideoReward != null) { rewardedItem = new RewardedItem(mAdvertiseVideoReward.Get("amount"), mAdvertiseVideoReward.Get("type")); Debug.Log($"Reward Amount: {rewardedItem.Amount}, Reward Type: {rewardedItem.Type}"); } OnUserRewardEarned?.Invoke(this, rewardedItem); } } } #endif