#if UNITY_ANDROID using BigoAds.Scripts.Platforms.Android; using KwaiAds.Scripts.Api; using KwaiAds.Scripts.Api.Interstitial; using UnityEngine; namespace KwaiAds.Scripts.Platforms.Android { public class KwaiInterstitialAdController : IInterstitialAdController { private const string TAG = "[KwaiAdSDK-InterstitialAdController]"; private const string InterstitialAdConfigBuilderClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.interstitial.data.KwaiInterstitialAdConfig$Builder"; private const string KwaiInterstitialAdListenerClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.interstitial.interf.IKwaiInterstitialAdListener"; private const string AdLoadListenerClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.common.interf.AdLoadListener"; private const string KwaiInterstitialAdRequestClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.interstitial.data.KwaiInterstitialAdRequest"; private const string KwaiAdLoaderManagerMethodName = "getKwaiAdLoaderManager"; private const string WithKwaiInterstitialAdListenerMethodName = "withKwaiInterstitialAdListener"; private const string BuildInterstitialAdLoaderMethodName = "buildInterstitialAdLoader"; private AndroidJavaClass _KwaiAdSDKInit; private AdLoadListener _AdLoadListener; private InterstitialAdListener _InterstitialAdListener; private AndroidJavaObject _KwaiInterstitialAd; public bool Load(KwaiInterstitialAdRequest request, IInterstitialAdListener adListener, IInterstitialAdLoadListener adLoadListener) { _KwaiAdSDKInit = Android.KwaiAdSDKInit.Instance.GetKwaiAdSDKClass(); if (_KwaiAdSDKInit == null) { Debug.Log($"{TAG}: kwaiAdSDKInit is null."); return false; } var loaderManager = _KwaiAdSDKInit.CallStatic(KwaiAdLoaderManagerMethodName); if (loaderManager == null) { Debug.Log($"{TAG}: loaderManager is null."); return false; } else { _AdLoadListener = new AdLoadListener(adLoadListener, this); _InterstitialAdListener = new InterstitialAdListener(adListener); var kwaiInterstitialAdConfig = new AndroidJavaObject(InterstitialAdConfigBuilderClassName, _AdLoadListener); if (kwaiInterstitialAdConfig == null) { Debug.LogError($"{TAG}: Failed to create kwaiInterstitialAdConfig builder."); return false; } kwaiInterstitialAdConfig.Call(WithKwaiInterstitialAdListenerMethodName, _InterstitialAdListener); var kwaiInterstitialAdAdLoader = loaderManager.Call(BuildInterstitialAdLoaderMethodName, kwaiInterstitialAdConfig.Call("build")); var adRequest = new AndroidJavaObject(KwaiInterstitialAdRequestClassName, request.TagId); string floorPrice = request.ExtParams[Constants.Request.BID_FLOOR_PRICE]; if (floorPrice != null && floorPrice.Length != 0) { Debug.Log($"{TAG}: floorPrice: {floorPrice}."); adRequest.Get("extParams").Call("put", Constants.Request.BID_FLOOR_PRICE, floorPrice); } kwaiInterstitialAdAdLoader.Call("loadAd", adRequest); } return true; } public void Show() { if (IsReady()) { AndroidJavaObject currentActivity = KwaiAndroidPlatformTool.GetGameActivity(); if (currentActivity == null) { Debug.Log($"{TAG}: Current Game Activity not found."); } else { Debug.Log($"{TAG}: start showing."); _KwaiInterstitialAd.Call("show", currentActivity); } } else { Debug.Log($"{TAG}: IsLoaded: {IsLoaded()}, IsReady: {IsReady()}."); } } public void Destroy() { if (_AdLoadListener != null) { _AdLoadListener.Destory(); _AdLoadListener = null; } if (_InterstitialAdListener != null) { _InterstitialAdListener.Destory(); } _KwaiInterstitialAd = null; } public bool IsLoaded() { return _KwaiInterstitialAd != null; } public bool IsReady() { return IsLoaded() && _KwaiInterstitialAd.Call("isReady"); } public void NotifyLoss() { if (_KwaiInterstitialAd != null) { _KwaiInterstitialAd.Call("getBidController", "sendBidLose"); } } public void NotifyWin() { if (_KwaiInterstitialAd != null) { _KwaiInterstitialAd.Call("getBidController", "sendBidWin"); } } private class AdLoadListener : AndroidJavaProxy { private IInterstitialAdLoadListener _InterstitialAdLoadListener; private KwaiInterstitialAdController _KwaiInterstitialAdController; public AdLoadListener(IInterstitialAdLoadListener interstitialAdLoadListener, KwaiInterstitialAdController kwaiInterstitialAdController) : base(AdLoadListenerClassName) { this._InterstitialAdLoadListener = interstitialAdLoadListener; this._KwaiInterstitialAdController = kwaiInterstitialAdController; } public void onAdLoadStart(string trackId) { Debug.Log($"{TAG}: onAdLoadStart"); if (_InterstitialAdLoadListener != null) { _InterstitialAdLoadListener.OnAdLoadStart(trackId); } } public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiInterstitialAd) { if (string.IsNullOrEmpty(trackId) || kwaiInterstitialAd == null) return; _KwaiInterstitialAdController._KwaiInterstitialAd = kwaiInterstitialAd; string price = kwaiInterstitialAd.Call("getPrice"); Debug.Log($"{TAG}: onAdLoaded: {kwaiInterstitialAd.Call("getPrice")}"); if (_InterstitialAdLoadListener != null) { _InterstitialAdLoadListener.OnAdLoadSuccess(trackId, price); } } public void onAdLoadFailed(string trackId, AndroidJavaObject kwaiError) { int code = kwaiError.Call("getCode"); string msg = kwaiError.Call("getMsg"); Debug.LogError($"{TAG}: onAdLoadFailed code = {code} msg = {msg}"); if (_InterstitialAdLoadListener != null) { _InterstitialAdLoadListener.OnAdLoadFailed(trackId, code, msg); } } public void Destory() { _InterstitialAdLoadListener = null; _KwaiInterstitialAdController = null; } } private class InterstitialAdListener : AndroidJavaProxy { private IInterstitialAdListener _InterstitialAdListener; public InterstitialAdListener(IInterstitialAdListener interstitialAdListener) : base(KwaiInterstitialAdListenerClassName) { _InterstitialAdListener = interstitialAdListener; } public void onAdShow() { Debug.Log($"{TAG}: onAdShow"); if (_InterstitialAdListener != null) { _InterstitialAdListener.OnAdShow(); } } public void onAdShowFailed(AndroidJavaObject error) { int code = error.Call("getCode"); string msg = error.Call("getMsg"); Debug.LogError($"{TAG}: onAdShowFailed code = {code} msg = {msg}"); if (_InterstitialAdListener != null) { _InterstitialAdListener.OnAdShowFailed(code, msg); } } public void onAdClick() { Debug.Log($"{TAG}: onAdClick"); if (_InterstitialAdListener != null) { _InterstitialAdListener.OnAdClick(); } } public void onAdClose() { Debug.Log($"{TAG}: onAdClose"); if (_InterstitialAdListener != null) { _InterstitialAdListener.OnAdClose(); } } public void onAdPlayComplete() { Debug.Log($"{TAG}: onAdPlayComplete"); if (_InterstitialAdListener != null) { _InterstitialAdListener.OnAdPlayComplete(); } } public void Destory() { _InterstitialAdListener = null; } } } } #endif