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

171 lines
5.2 KiB
C#
Raw Normal View History

2025-08-30 04:15:48 +00:00
using System;
2025-08-31 05:15:14 +00:00
using System.Collections.Generic;
using System.Linq;
using DKManager.AdsSDKManager.Constant;
using Script.Common;
using Script.SDKManager.AdsSDKManager.AdmobAdsManager;
using Script.SDKManager.AdsSDKManager.BigoAdsManager;
using Script.SDKManager.AdsSDKManager.MaxAdsManager;
using Script.SDKManager.AdsSDKManager.TpnAdsManager;
using Script.SDKManager.AdsSDKManager.Utils;
using SDKManager.AdsSDKManager.Constant;
2025-08-30 04:15:48 +00:00
using UnityEngine;
public class AdsSDKManager : MonoBehaviour
{
public static AdsSDKManager instance;
2025-08-31 05:15:14 +00:00
private List<IAdService> _adNetworks = new List<IAdService>();
2025-08-30 04:15:48 +00:00
/// <summary>
/// 看完广告的回调
/// </summary>
private Action<double> AdRewardCallback;
/// <summary>
/// 广告竞价开关激励、插屏、全屏Native广告竞价
/// </summary>
public bool IsMoreAdsBidding = false;
private void Awake()
{
instance = this;
InitSDK();
}
private void InitSDK()
{
KwaiAdsManager.Init();
2025-08-31 05:15:14 +00:00
AdmobAdsManager.Instance.Initialize();
BigoAdsManager.Instance.Initialize();
TpnAdsManager.Instance.Initialize();
MaxAdsManager.Instance.Initialize();
_adNetworks.Add(AdmobAdsManager.Instance);
_adNetworks.Add(BigoAdsManager.Instance);
_adNetworks.Add(TpnAdsManager.Instance);
_adNetworks.Add(MaxAdsManager.Instance);
2025-08-30 04:15:48 +00:00
}
2025-08-31 05:15:14 +00:00
public bool IsRewardAdReady()
{
return _adNetworks.Any(network => network.IsRewardedAvailable());
}
2025-08-30 04:15:48 +00:00
/// <summary>
/// 展示激励广告
/// </summary>
/// <param name="callback"></param>
2025-08-31 05:15:14 +00:00
public void ShowRewardAd(string _adPos, Action<bool> _rewardCallback = null, Action _showFailedCallback = null)
{
if (!IsRewardAdReady())
{
_showFailedCallback?.Invoke();
return;
}
PlatformType result = GetBestPlatformType(false);
if (result == PlatformType.Max)
{
MaxAdsManager.Instance.DisplayRewarded(_adPos, _rewardCallback, _showFailedCallback);
}
else if (result == PlatformType.Admob)
{
AdmobAdsManager.Instance.DisplayRewarded(_adPos, _rewardCallback, _showFailedCallback);
}
else if (result == PlatformType.Bigo)
{
BigoAdsManager.Instance.DisplayRewarded(_adPos, _rewardCallback, _showFailedCallback);
}
else if (result == PlatformType.Tpn)
{
TpnAdsManager.Instance.DisplayRewarded(_adPos, _rewardCallback, _showFailedCallback);
}
else if (result == PlatformType.Kwai)
{
}
else
{
_showFailedCallback?.Invoke();
}
}
public bool IsInterstitialReady()
{
return _adNetworks.Any(network => network.IsInterstitialAvailable());
}
/// <summary>
/// 展示激励广告
/// </summary>
/// <param name="callback"></param>
public void ShowInterstitialAd(string _adPos, IvType _IvType = IvType.IV1, Action _closeCallback = null)
{
if (!IsRewardAdReady())
{
_closeCallback?.Invoke();
_closeCallback = null;
return;
}
PlatformType result = GetBestPlatformType(true);
if (result == PlatformType.Max)
{
MaxAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
else if (result == PlatformType.Admob)
{
AdmobAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
else if (result == PlatformType.Bigo)
{
BigoAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
else if (result == PlatformType.Tpn)
{
TpnAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
else if (result == PlatformType.Kwai)
{
}
else
{
_closeCallback?.Invoke();
}
}
private PlatformType GetBestPlatformType(bool isInterstitial)
2025-08-30 04:15:48 +00:00
{
2025-08-31 05:15:14 +00:00
if (isInterstitial)
{
AdPriceInfo priceInfo = new AdPriceInfo(
maxPrice: MaxAdsManager.Instance.GetInterstitialRevenue(),
admobPrice: AdmobAdsManager.Instance.GetInterstitialRevenue(),
bigoPrice: BigoAdsManager.Instance.GetInterstitialRevenue(),
toponAdUnitId: TpnAdsManager.Instance.topon_interstitial_units
);
return AdsBidResult.GetPlatformType(priceInfo);
}
else
{
AdPriceInfo priceInfo = new AdPriceInfo(
maxPrice: MaxAdsManager.Instance.GetRewardedRevenue(),
admobPrice: AdmobAdsManager.Instance.GetRewardedRevenue(),
bigoPrice: BigoAdsManager.Instance.GetRewardedRevenue(),
toponAdUnitId: TpnAdsManager.Instance.topon_rewarded_units
);
return AdsBidResult.GetPlatformType(priceInfo);
}
2025-08-30 04:15:48 +00:00
}
/// <summary>
/// 广告看完回调
/// </summary>
public void OnRewardAdCallback(double price)
{
AdRewardCallback?.Invoke(price);
AdRewardCallback = null;
}
}