250 lines
9.2 KiB
C#
250 lines
9.2 KiB
C#
#if UNITY_ANDROID
|
|
using BigoAds.Scripts.Platforms.Android;
|
|
using KwaiAds.Scripts.Api;
|
|
using KwaiAds.Scripts.Api.Reward;
|
|
using UnityEngine;
|
|
|
|
namespace KwaiAds.Scripts.Platforms.Android
|
|
{
|
|
public class KwaiRewardAdController : IRewardAdController
|
|
{
|
|
private const string TAG = "[KwaiAdSDK-RewardAdController]";
|
|
private const string RewardedAdConfigBuilderClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.reward.data.KwaiRewardAdConfig$Builder";
|
|
private const string KwaiRewardAdListenerClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.reward.interf.IKwaiRewardAdListener";
|
|
private const string AdLoadListenerClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.common.interf.AdLoadListener";
|
|
private const string KwaiRewardAdRequestClassName = KwaiAndroidPlatformTool.ClassPackage + ".loader.business.reward.data.KwaiRewardAdRequest";
|
|
private const string KwaiAdLoaderManagerMethodName = "getKwaiAdLoaderManager";
|
|
private const string WithKwaiRewardAdListenerMethodName = "withKwaiRewardAdListener";
|
|
private const string BuildRewardAdLoaderMethodName = "buildRewardAdLoader";
|
|
|
|
private AndroidJavaClass _KwaiAdSDKInit;
|
|
private AdLoadListener _AdLoadListener;
|
|
private RewardAdListener _RewardAdListener;
|
|
private AndroidJavaObject _KwaiRewardAd;
|
|
|
|
public bool Load(KwaiRewardAdRequest request, IRewardAdListener rewardAdListener, IRewardAdLoadListener rewardAdLoadListener)
|
|
{
|
|
_KwaiAdSDKInit = Android.KwaiAdSDKInit.Instance.GetKwaiAdSDKClass();
|
|
if (_KwaiAdSDKInit == null)
|
|
{
|
|
Debug.Log($"{TAG}: kwaiAdSDKInit is null.");
|
|
return false;
|
|
}
|
|
|
|
var loaderManager = _KwaiAdSDKInit.CallStatic<AndroidJavaObject>(KwaiAdLoaderManagerMethodName);
|
|
if (loaderManager == null)
|
|
{
|
|
Debug.Log($"{TAG}: loaderManager is null.");
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_AdLoadListener = new AdLoadListener(rewardAdLoadListener, this);
|
|
_RewardAdListener = new RewardAdListener(rewardAdListener);
|
|
var kwaiRewardAdConfig = new AndroidJavaObject(RewardedAdConfigBuilderClassName, _AdLoadListener);
|
|
if (kwaiRewardAdConfig == null)
|
|
{
|
|
Debug.LogError($"{TAG}:Failed to create kwaiRewardAdConfig builder.");
|
|
return false;
|
|
}
|
|
kwaiRewardAdConfig.Call<AndroidJavaObject>(WithKwaiRewardAdListenerMethodName, _RewardAdListener);
|
|
|
|
var kwaiRewardAdAdLoader = loaderManager.Call<AndroidJavaObject>(BuildRewardAdLoaderMethodName, kwaiRewardAdConfig.Call<AndroidJavaObject>("build"));
|
|
var adRequest = new AndroidJavaObject(KwaiRewardAdRequestClassName, request.TagId);
|
|
string floorPrice = request.ExtParams[Constants.Request.BID_FLOOR_PRICE];
|
|
if (floorPrice != null && floorPrice.Length != 0)
|
|
{
|
|
Debug.Log($"{TAG}: floorPrice: {floorPrice}.");
|
|
adRequest.Get<AndroidJavaObject>("extParams").Call<AndroidJavaObject>("put", Constants.Request.BID_FLOOR_PRICE, floorPrice);
|
|
}
|
|
kwaiRewardAdAdLoader.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.");
|
|
_KwaiRewardAd.Call("show", currentActivity);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
Debug.Log($"{TAG}: IsLoaded: {IsLoaded()}, IsReady: {IsReady()}.");
|
|
}
|
|
}
|
|
|
|
public void Destroy()
|
|
{
|
|
if (_AdLoadListener != null)
|
|
{
|
|
_AdLoadListener.Destory();
|
|
_AdLoadListener = null;
|
|
}
|
|
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.Destory();
|
|
}
|
|
|
|
_KwaiRewardAd = null;
|
|
}
|
|
|
|
public bool IsLoaded()
|
|
{
|
|
return _KwaiRewardAd != null;
|
|
}
|
|
|
|
public bool IsReady()
|
|
{
|
|
return IsLoaded() && _KwaiRewardAd.Call<bool>("isReady");
|
|
}
|
|
|
|
public void NotifyLoss()
|
|
{
|
|
if (_KwaiRewardAd != null)
|
|
{
|
|
_KwaiRewardAd.Call("getBidController", "sendBidLose");
|
|
}
|
|
}
|
|
|
|
public void NotifyWin()
|
|
{
|
|
if (_KwaiRewardAd != null)
|
|
{
|
|
_KwaiRewardAd.Call("getBidController", "sendBidWin");
|
|
}
|
|
}
|
|
|
|
private class AdLoadListener : AndroidJavaProxy
|
|
{
|
|
private IRewardAdLoadListener _RewardAdLoadListener;
|
|
private KwaiRewardAdController _KwaiRewardAdController;
|
|
public AdLoadListener(IRewardAdLoadListener rewardAdListener, KwaiRewardAdController kwaiRewardAdController) : base(AdLoadListenerClassName)
|
|
{
|
|
this._RewardAdLoadListener = rewardAdListener;
|
|
this._KwaiRewardAdController = kwaiRewardAdController;
|
|
Debug.Log("yangwu AdLoadListener:"+rewardAdListener+" kwaiRewardAdController:"+kwaiRewardAdController);
|
|
}
|
|
|
|
public void onAdLoadStart(string trackId)
|
|
{
|
|
Debug.Log($"{TAG}: onAdLoadStart");
|
|
if (_RewardAdLoadListener != null)
|
|
{
|
|
_RewardAdLoadListener.OnAdLoadStart(trackId);
|
|
}
|
|
}
|
|
|
|
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiRewardAd)
|
|
{
|
|
if (string.IsNullOrEmpty(trackId) || kwaiRewardAd == null || _KwaiRewardAdController == null) return;
|
|
_KwaiRewardAdController._KwaiRewardAd = kwaiRewardAd;
|
|
string price = kwaiRewardAd.Call<string>("getPrice");
|
|
Debug.Log($"{TAG}: onAdLoaded: {kwaiRewardAd.Call<string>("getPrice")}");
|
|
if (_RewardAdLoadListener != null)
|
|
{
|
|
_RewardAdLoadListener.OnAdLoadSuccess(trackId, price);
|
|
}
|
|
}
|
|
|
|
public void onAdLoadFailed(string trackId, AndroidJavaObject kwaiError)
|
|
{
|
|
int code = kwaiError.Call<int>("getCode");
|
|
string msg = kwaiError.Call<string>("getMsg");
|
|
Debug.LogError($"{TAG}: onAdLoadFailed code = {code} msg = {msg}");
|
|
if (_RewardAdLoadListener != null)
|
|
{
|
|
_RewardAdLoadListener.OnAdLoadFailed(trackId, code, msg);
|
|
}
|
|
}
|
|
|
|
public void Destory()
|
|
{
|
|
_RewardAdLoadListener = null;
|
|
_KwaiRewardAdController = null;
|
|
}
|
|
}
|
|
|
|
private class RewardAdListener : AndroidJavaProxy
|
|
{
|
|
private IRewardAdListener _RewardAdListener;
|
|
|
|
public RewardAdListener(IRewardAdListener rewardAdListener) : base(KwaiRewardAdListenerClassName) {
|
|
_RewardAdListener = rewardAdListener;
|
|
}
|
|
|
|
public void onAdShow()
|
|
{
|
|
Debug.Log($"{TAG}: onAdShow");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnAdShow();
|
|
}
|
|
}
|
|
|
|
public void onAdShowFailed(AndroidJavaObject error)
|
|
{
|
|
int code = error.Call<int>("getCode");
|
|
string msg = error.Call<string>("getMsg");
|
|
Debug.LogError($"{TAG}: onAdShowFailed code = {code} msg = {msg}");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnAdShowFailed(code, msg);
|
|
}
|
|
}
|
|
|
|
public void onAdClick()
|
|
{
|
|
Debug.Log($"{TAG}: onAdClick");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnAdClick();
|
|
}
|
|
}
|
|
|
|
public void onAdPlayComplete()
|
|
{
|
|
Debug.Log($"{TAG}: onAdPlayComplete");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnAdPlayComplete();
|
|
}
|
|
}
|
|
|
|
public void onRewardEarned()
|
|
{
|
|
Debug.Log($"{TAG}: onRewarded");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnRewardEarned();
|
|
}
|
|
}
|
|
|
|
public void onAdClose()
|
|
{
|
|
Debug.Log($"{TAG}: onAdClose");
|
|
if (_RewardAdListener != null)
|
|
{
|
|
_RewardAdListener.OnAdClose();
|
|
}
|
|
}
|
|
|
|
public void Destory()
|
|
{
|
|
_RewardAdListener = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |