广告展示逻辑

This commit is contained in:
juncong lee 2026-01-06 11:04:34 +08:00
parent 663a5747a4
commit de76a6faf3
5 changed files with 73 additions and 98 deletions

View File

@ -10,7 +10,6 @@ namespace WZ
{ {
public class AdsSDKManager : D_MonoSingleton<AdsSDKManager> public class AdsSDKManager : D_MonoSingleton<AdsSDKManager>
{ {
private List<IAdService> _adNetworks = new List<IAdService>();
// 是否有激励视频或者插屏广告在展示 // 是否有激励视频或者插屏广告在展示
public bool otherAdsOnShow = false; public bool otherAdsOnShow = false;
public void InitSDK() public void InitSDK()
@ -20,77 +19,99 @@ namespace WZ
#region 广 #region 广
public bool IsRewardAdReady() public bool IsRewardAdReady(PlatformType _platformType)
{ {
return _adNetworks.Any(network => network.IsRewardedAvailable()); if(_platformType == PlatformType.Admob)
{
return AdmobAdsManager.Instance.IsRewardedAvailable();
}
return TpnAdsManager.Instance.IsRewardedAvailable();
} }
/// <summary> /// <summary>
/// 展示激励广告 /// 展示激励广告
/// </summary> /// </summary>
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowRewardAd(string _adPos, Action<bool, double> _rewardCallback = null, Action _showFailedCallback = null) public void ShowRewardAd(string _adPos, Action<bool, double> _rewardCallback, Action _showFailedCallback,PlatformType _platformType)
{ {
LoggerUtils.Debug("ShowRewardAd _adPos:"+_adPos+" ready:"+IsRewardAdReady()); LoggerUtils.Debug("ShowRewardAd _adPos:"+_adPos+" ready:"+IsRewardAdReady(_platformType));
otherAdsOnShow = true; otherAdsOnShow = true;
/// yangwu todo
{
_showFailedCallback?.Invoke();
}
AdPlayCountManager.IncrementAdsActionCount(AdsType.Rewarded,AdPlayCountManager.PLAY_COUNT_SUFFIX); AdPlayCountManager.IncrementAdsActionCount(AdsType.Rewarded,AdPlayCountManager.PLAY_COUNT_SUFFIX);
AdjustTrackEvent.Instance.TrackEventName("RV_Show", new Dictionary<string, object>()); AdjustTrackEvent.Instance.TrackEventName("RV_Show", new Dictionary<string, object>());
if(_platformType == PlatformType.Admob)
{
AdmobAdsManager.Instance.DisplayRewarded(_adPos,_rewardCallback,_showFailedCallback);
}
else
{
TpnAdsManager.Instance.DisplayRewarded(_adPos,_rewardCallback,_showFailedCallback);
}
} }
#endregion #endregion
#region 广 #region 广
public bool IsInterstitialReady() public bool IsInterstitialReady(PlatformType _platformType)
{ {
return _adNetworks.Any(network => network.IsInterstitialAvailable()); if(_platformType == PlatformType.Admob)
{
return AdmobAdsManager.Instance.IsInterstitialAvailable();
}
return TpnAdsManager.Instance.IsInterstitialAvailable();
} }
/// <summary> /// <summary>
/// 展示激励广告 /// 展示激励广告
/// </summary> /// </summary>
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowInterstitialAd(string _adPos, IvType _IvType = IvType.IV1, Action<double> _closeCallback = null) public void ShowInterstitialAd(string _adPos, IvType _IvType, Action<double> _closeCallback,PlatformType _platformType)
{ {
AdsSDKManager.Instance.otherAdsOnShow = true; AdsSDKManager.Instance.otherAdsOnShow = true;
// yangwu todo
{
_closeCallback?.Invoke(0);
}
AdPlayCountManager.IncrementAdsActionCount(AdsType.Interstitial,AdPlayCountManager.PLAY_COUNT_SUFFIX); AdPlayCountManager.IncrementAdsActionCount(AdsType.Interstitial,AdPlayCountManager.PLAY_COUNT_SUFFIX);
AdjustTrackEvent.Instance.TrackEventName("IV_Show", new Dictionary<string, object>()); AdjustTrackEvent.Instance.TrackEventName("IV_Show", new Dictionary<string, object>());
// 刷新其他类型广告
if(_platformType == PlatformType.Admob)
{
AdmobAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
else
{
TpnAdsManager.Instance.DisplayInterstitial(_adPos, _IvType, _closeCallback);
}
} }
#endregion #endregion
#region 广 #region 广
public bool IsBannerAdReady(BannerType bannerType) public bool IsBannerAdReady(BannerType bannerType,PlatformType platformType)
{ {
return AdmobAdsManager.Instance.IsBannerAvailable(bannerType); if(platformType == PlatformType.Admob)
{
return AdmobAdsManager.Instance.IsBannerAvailable(bannerType);
}else
{
return TpnAdsManager.Instance.IsBannerAvailable();
}
} }
public void ShowBanner(BannerType bannerType,BannerAlignType bannerAlignType) public void ShowBanner(BannerType bannerType,BannerAlignType bannerAlignType,PlatformType platformType)
{ {
AdmobAdsManager.Instance.DisplayBanner(bannerType,bannerAlignType);
AdPlayCountManager.IncrementAdsActionCount(AdsType.Banner,AdPlayCountManager.PLAY_COUNT_SUFFIX); AdPlayCountManager.IncrementAdsActionCount(AdsType.Banner,AdPlayCountManager.PLAY_COUNT_SUFFIX);
AdjustTrackEvent.Instance.TrackEventName("Banner_Show", new Dictionary<string, object>()); AdjustTrackEvent.Instance.TrackEventName("Banner_Show", new Dictionary<string, object>());
if (platformType == PlatformType.Admob)
{
AdmobAdsManager.Instance.DisplayBanner(bannerType,bannerAlignType);
}else
{
TpnAdsManager.Instance.ShowBanner();
}
} }
public void HideBanner(BannerType bannerType) public void HideBanner(BannerType bannerType)
{ {
AdmobAdsManager.Instance.HideBanner(bannerType); AdmobAdsManager.Instance.HideBanner(bannerType);
TpnAdsManager.Instance.HideBanner();
} }
#endregion #endregion
@ -103,7 +124,6 @@ namespace WZ
public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position) public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position)
{ {
AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position); AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position);
AdjustTrackEvent.Instance.TrackEventName("NA_Show", new Dictionary<string, object>()); AdjustTrackEvent.Instance.TrackEventName("NA_Show", new Dictionary<string, object>());
AdPlayCountManager.IncrementAdsActionCount(AdsType.Native,AdPlayCountManager.PLAY_COUNT_SUFFIX); AdPlayCountManager.IncrementAdsActionCount(AdsType.Native,AdPlayCountManager.PLAY_COUNT_SUFFIX);

View File

@ -86,6 +86,7 @@ namespace WZ
public bool IsRewardedAvailable() public bool IsRewardedAvailable()
{ {
if(!_initialized && AdmobAdsManager.Instance._initialized) Initialize();
return string.IsNullOrEmpty(_topon_rewarded_units) ? false : ATRewardedAutoVideo.Instance.autoLoadRewardedVideoReadyForPlacementID(_topon_rewarded_units); return string.IsNullOrEmpty(_topon_rewarded_units) ? false : ATRewardedAutoVideo.Instance.autoLoadRewardedVideoReadyForPlacementID(_topon_rewarded_units);
} }
@ -117,6 +118,7 @@ namespace WZ
public bool IsInterstitialAvailable() public bool IsInterstitialAvailable()
{ {
if(!_initialized && AdmobAdsManager.Instance._initialized) Initialize();
return string.IsNullOrEmpty(_topon_interstitial_units) ? false : ATInterstitialAutoAd.Instance.autoLoadInterstitialAdReadyForPlacementID(_topon_interstitial_units); return string.IsNullOrEmpty(_topon_interstitial_units) ? false : ATInterstitialAutoAd.Instance.autoLoadInterstitialAdReadyForPlacementID(_topon_interstitial_units);
} }
#endregion #endregion
@ -143,6 +145,7 @@ namespace WZ
public bool IsBannerAvailable() public bool IsBannerAvailable()
{ {
if(!_initialized && AdmobAdsManager.Instance._initialized) Initialize();
return string.IsNullOrEmpty(_topon_banner_units) ? false : bannerReady; return string.IsNullOrEmpty(_topon_banner_units) ? false : bannerReady;
} }

View File

@ -20,7 +20,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
public static string GetSDKVersion() public static string GetSDKVersion()
{ {
return "1.0.5.2"; return "1.0.0";
} }
protected override void Initialized() protected override void Initialized()
{ {
@ -36,10 +36,8 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
AdsSplashManager.Instance.SetSplashAdCloseCallback(action); AdsSplashManager.Instance.SetSplashAdCloseCallback(action);
FireBaseSDKManager.Instance.Init(); FireBaseSDKManager.Instance.Init();
ShuShuMangage.Instance.Init(); ShuShuMangage.Instance.Init();
AdmobAdsManager.Instance.RefreshAdsData();
AdmobAdsManager.Instance.Initialize();
AdjustManager.Instance.Init(); AdjustManager.Instance.Init();
AdsSDKManager.Instance.InitSDK();
#if UNITY_PURCHASE #if UNITY_PURCHASE
IAPPurchaseManager.Instance.Initialize(); IAPPurchaseManager.Instance.Initialize();
#endif #endif
@ -191,14 +189,6 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
#region ad #region ad
/// <summary>
/// 是否已缓存激励广告
/// </summary>
/// <returns></returns>
public bool IsRewardedAdReady()
{
return AdsSDKManager.Instance.IsRewardAdReady(); ;
}
/// <summary> /// <summary>
/// 展示激励广告 /// 展示激励广告
@ -208,7 +198,11 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
public void ShowRewardAd(string position, Action<bool, double> callback = null) public void ShowRewardAd(string position, Action<bool, double> callback = null)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Rewarded, position); AdsActionEvents.TrackAdPosition(AdsType.Rewarded, position);
bool isRewardAdReady = AdsSDKManager.Instance.IsRewardAdReady();
var _platform = TransferAndroidClass.IsVpnConnected() ? PlatformType.Admob : PlatformType.Topon;
bool isRewardAdReady = AdsSDKManager.Instance.IsRewardAdReady(_platform);
if (isRewardAdReady) if (isRewardAdReady)
{ {
AdsSDKManager.Instance.ShowRewardAd(position, (isReward, revenue) => AdsSDKManager.Instance.ShowRewardAd(position, (isReward, revenue) =>
@ -223,7 +217,10 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
{ {
callback?.Invoke(false, 0); callback?.Invoke(false, 0);
} }
}); }, () =>
{
callback?.Invoke(false, 0);
},_platform);
} }
else else
{ {
@ -232,42 +229,23 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
} }
} }
/// <summary>
/// 是否已缓存插屏
/// </summary>
public bool IsInterstitialAdReady()
{
return AdsSDKManager.Instance.IsInterstitialReady();
}
/// <summary>
/// 是否能展示插屏
/// </summary>
/// <param name="ivType"></param>
/// <returns></returns>
public bool CanShowInterstitialAd(IvType ivType)
{
return AdsSDKManager.Instance.IvRulesShow(ivType, false);
}
/// <summary> /// <summary>
/// 展示插屏广告 /// 展示插屏广告
/// </summary> /// </summary>
/// <param name="position"></param> /// <param name="position"></param>
/// <param name="ivadType"></param> /// <param name="ivadType"></param>
/// <param name="callback"></param> /// <param name="callback"></param>
public void ShowInterstitial(string position, IvType ivadType = IvType.IV1, Action<double> callback = null, bool ivRules = true) public void ShowInterstitial(string position, IvType ivadType = IvType.IV1, Action<double> callback = null)
{ {
AdsActionEvents.TrackAdPosition(AdsType.Interstitial, position); AdsActionEvents.TrackAdPosition(AdsType.Interstitial, position);
//插屏展示逻辑 //插屏展示逻辑
bool ivRulesShow = AdsSDKManager.Instance.IvRulesShow(ivadType); bool ivRulesShow = AdsSDKManager.Instance.IvRulesShow(ivadType);
if (!ivRules) var _platform = TransferAndroidClass.IsVpnConnected() ? PlatformType.Admob : PlatformType.Topon;
if (ivRulesShow)
{ {
//激励竞价不能被规则限制
//是否有缓存 //是否有缓存
bool isInterstitialReady = AdsSDKManager.Instance.IsInterstitialReady(); bool isInterstitialReady = AdsSDKManager.Instance.IsInterstitialReady(_platform);
if (isInterstitialReady) if (isInterstitialReady)
{ {
AdsSDKManager.Instance.ShowInterstitialAd(position, ivadType, (revenue) => AdsSDKManager.Instance.ShowInterstitialAd(position, ivadType, (revenue) =>
@ -277,28 +255,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp(); IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp();
AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup; AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup;
callback?.Invoke(revenue); callback?.Invoke(revenue);
}); },_platform);
}
else
{
AdsActionEvents.TrackAdFailToShow(AdsType.Interstitial, position, AdsShowFailType.NoFill);
callback?.Invoke(-1);
}
}
else if (ivRulesShow && ivRules)
{
//是否有缓存
bool isInterstitialReady = AdsSDKManager.Instance.IsInterstitialReady();
if (isInterstitialReady)
{
AdsSDKManager.Instance.ShowInterstitialAd(position, ivadType, (revenue) =>
{
//展示完一个插屏之后调用
IvRulesConst.OverLevels[ivadType.ToString()] = 1;
IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp();
AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup;
callback?.Invoke(revenue);
});
} }
else else
{ {
@ -322,9 +279,10 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
{ {
AdsActionEvents.TrackAdPosition(AdsType.Banner, ""); AdsActionEvents.TrackAdPosition(AdsType.Banner, "");
if (AdsSDKManager.Instance.IsBannerAdReady(bannerType)) var _platform = TransferAndroidClass.IsVpnConnected() ? PlatformType.Admob : PlatformType.Topon;
if (AdsSDKManager.Instance.IsBannerAdReady(bannerType,_platform))
{ {
AdsSDKManager.Instance.ShowBanner(bannerType, bannerAlignType); AdsSDKManager.Instance.ShowBanner(bannerType, bannerAlignType, _platform);
} }
else else
{ {

View File

@ -36,11 +36,6 @@ namespace WZ
RetryingAdMobCheck RetryingAdMobCheck
} }
public void Init()
{
}
public void OnAdjustCallbackReceived() public void OnAdjustCallbackReceived()
{ {
Debug.Log("收到Adjust回调开始处理广告初始化"); Debug.Log("收到Adjust回调开始处理广告初始化");

View File

@ -62,7 +62,6 @@ public class Test : MonoBehaviour
public void OnInterShow() public void OnInterShow()
{ {
AdsSDKManager.Instance.ShowInterstitialAd("endgame", IvType.IV1, (revenue) => { LoggerUtils.Debug("oninter show call revenue:" + revenue); });
} }
public void ToponDebug() public void ToponDebug()