SDK_UnityMoney/Assets/Script/SDKManager/AdsSDKManager/KwaiAdsManager/KwaiAdsManager.cs

310 lines
12 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using KwaiAds.Scripts.Api.Interstitial;
using KwaiAds.Scripts.Api.Reward;
using KwaiAds.Scripts.Common;
using UnityEngine;
using static WZ.KwaiAdsConfigParser;
namespace WZ
{
public class KwaiAdsManager : D_MonoSingleton<KwaiAdsManager>, IAdService
{
//目前都是测试id
public string _appId = "";
public string _token = "";
public string _rewardAdUnitId = "";
public string _interstitialAdUnitId = "";
public double _rewardAdRevenue = -1;
public double _interstitiaAdRevenue = -1;
private IRewardAdController _rewardAdController;
private IInterstitialAdController _interstitialAdController;
public string _rvPos;
public string _ivPos;
public Action<bool, double> _rvCloseCallback = null;
public Action<double> _ivCloseCallback = null;
public Action _rvShowFailedCallback = null;
public int _rewardRetryAttempt;
public int _interRetryAttempt;
public float _rvStartLoadTime = 0;
public float _ivStartLoadTime = 0;
public string ClientName => "Kwai";
public PlatformType Platfrom => PlatformType.Kwai;
public bool _initialized { get; private set; } = false;
public bool _receivedReward = false;
public void Initialize()
{
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
KwaiFloorRvManager.Instance.InitializeWithFloors();
}
if (KwaiAdsConfigParser.GetKwaiIvFloorOpen())
{
KwaiFloorIvManager.Instance.InitializeWithFloors();
}
LoggerUtils.Debug("KwaiAdsManager Initialize start" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId + " useToponKwai:" + UseToponInitKwai());
if (UseToponInitKwai())
{
if (!string.IsNullOrEmpty(_appId) && !string.IsNullOrEmpty(_token))
{
ToponKwaiUtils.InitSDK(_appId, _token, (res, msg) =>
{
LoggerUtils.Debug("KwaiAdsManager is init topon" + ToponKwaiUtils.IsInit() + " res:" + res.ToString() + " msg:" + msg);
if (res)
{
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
.SetAppId(_appId)
.SetToken(_token)
.SetDebugLog(false)
.Build();
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
_initialized = true;
LoadInterstitial();
LoadRewarded();
}
});
}
}
else
{
LoggerUtils.Debug("KwaiAdsManager RefreshAdsData" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId + " init:" + _initialized);
if (string.IsNullOrEmpty(_appId) || string.IsNullOrEmpty(_token) || _initialized) return;
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
.SetAppId(_appId)
.SetToken(_token)
.SetDebugLog(false)
.Build();
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
_initialized = true;
}
}
public static bool UseToponInitKwai()
{
return RushSDKManager.Instance.GetRemoteConfigStr("use_topon_kwai", "1").Equals("1");
}
public void RefreshAdsData()
{
_appId = AdConfigParser.GetKwaiAppId();
_token = AdConfigParser.GetKwaiAppToken();
_rewardAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Rewarded).FirstOrDefault();
_interstitialAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Interstitial).FirstOrDefault();
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen()) KwaiFloorRvManager.Instance.LoadKwaiBiddingConfig();
if (KwaiAdsConfigParser.GetKwaiIvFloorOpen()) KwaiFloorIvManager.Instance.LoadKwaiBiddingConfig();
LoggerUtils.Debug("KwaiAdsManager RefreshAdsData" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId);
}
#region 广
public void LoadRewarded()
{
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
LoadRewardedStandard();
return;
}
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
KwaiFloorRvManager.Instance.LoadRewardedWithFloors();
}
public void LoadRewardedStandard()
{
LoggerUtils.Debug("kwai load rewarded standard"+_rewardAdUnitId);
if (string.IsNullOrEmpty(_rewardAdUnitId)) return;
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
if (_rewardAdController != null)
{
_rewardAdController.Destroy();
_rewardAdController = null;
}
_rewardAdRevenue = -1;
_rewardAdController = KwaiAds.Scripts.Api.KwaiAdsSdk.SDK.getRewardAdController();
KwaiRewardAdRequest kwaiRewardAdRequest = new KwaiRewardAdRequest(_rewardAdUnitId);
_rewardAdController.Load(kwaiRewardAdRequest, new RewardAdListener(), new RewardAdLoadListener());
_rvStartLoadTime = Time.realtimeSinceStartup;
}
public bool IsRewardedAvailable()
{
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
if (string.IsNullOrEmpty(_rewardAdUnitId)) return false;
return _rewardAdController != null && _rewardAdController.IsReady();
}
else
{
// 对于竞价模式,检查是否有成功的楼层广告
return KwaiFloorRvManager.Instance.IsRewardedAvailable();
}
}
public void DisplayRewarded(string _adPos, Action<bool, double> _rewardCallback = null, Action _showFailedCallback = null)
{
_rvPos = _adPos;
_rvCloseCallback = _rewardCallback;
_rvShowFailedCallback = _showFailedCallback;
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
if (_rewardAdController != null)
{
_rewardAdController.Show();
}
else
{
_rvShowFailedCallback?.Invoke();
LoadRewarded();
}
}
else
{
KwaiFloorRvManager.Instance.ShowRewarded(()=> { _rvShowFailedCallback?.Invoke(); });
}
}
public double GetRewardedRevenue()
{
return _rewardAdRevenue;
}
#endregion
#region
public void LoadInterstitial()
{
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
{
LoadInterstitialStandard();
return;
}
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
KwaiFloorIvManager.Instance.LoadInterstitialWithFloors();
}
private void LoadInterstitialStandard()
{
LoggerUtils.Debug("kwai load interstitial standard:"+_interstitialAdUnitId);
if (string.IsNullOrEmpty(_interstitialAdUnitId)) return;
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
if (_interstitialAdController != null)
{
_interstitialAdController.Destroy();
_interstitialAdController = null;
}
_interstitiaAdRevenue = -1;
_interstitialAdController = KwaiAds.Scripts.Api.KwaiAdsSdk.SDK.getInterstitialAdController();
KwaiInterstitialAdRequest kwaiInterstitialAdRequest = new KwaiInterstitialAdRequest(_interstitialAdUnitId);
_interstitialAdController.Load(kwaiInterstitialAdRequest, new InterstitialAdListener(), new InterstitialAdLoadListener());
_ivStartLoadTime = Time.realtimeSinceStartup;
}
public bool IsInterstitialAvailable()
{
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
{
if (string.IsNullOrEmpty(_interstitialAdUnitId)) return false;
return _interstitialAdController != null && _interstitialAdController.IsReady();
}
else
{
return KwaiFloorIvManager.Instance.IsInterstitialAdAvailable();
}
}
public void DisplayInterstitial(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null)
{
_ivPos = _adPos;
_ivCloseCallback = _closeCallback;
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
{
if (_interstitialAdController != null)
{
_interstitialAdController.Show();
}
else
{
_closeCallback?.Invoke(0);
LoadInterstitial();
}
}
else
{
KwaiFloorIvManager.Instance.ShowInterstitialAd(()=> { _ivCloseCallback?.Invoke(0); });
}
}
public double GetInterstitialRevenue()
{
return _interstitiaAdRevenue;
}
#endregion
#region 广
public void LoadBanner() { }
public bool IsBannerAvailable(BannerType bannerType) { return false; }
public void DisplayBanner(BannerType bannerType,BannerAlignType bannerAlignType) { }
public void HideBanner(BannerType bannerType) { }
public double GetBannerRevenue(BannerType bannerType) { return 0; }
#endregion
#region 广
public void LoadSplash() { }
public bool IsSplashAvailable() { return false; }
public void DisplaySplash() { }
public double GetSplashRevenue() { return 0; }
#endregion
#region 广
public void LoadNative() { }
public bool IsNativeAvailable(string adUnitId) { return false; }
public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position) { }
public void RemoveNative(string adUnitId) { }
public double GetNativeRevenue(string adUnitId) { return 0; }
#endregion
#region
public void TrackAdImpression(AdsType type,string adUnitId)
{
AdjustTrackEvent.Instance.TrackAdEvent(type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue,
ClientName,
adUnitId,
adUnitId);
FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(ClientName,
ClientName,
adUnitId,
type,
type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue,
type == AdsType.Rewarded ? _rvPos : _ivPos,
AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX));
ShuShuEvent.Instance.OnAdRevenueEvent(ClientName,
ClientName,
adUnitId,
type.ToString(),
type == AdsType.Rewarded ? _rewardAdRevenue : _interstitiaAdRevenue,
type == AdsType.Rewarded ? _rvPos : _ivPos,
AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX));
}
#endregion
}
}