广告展示逻辑

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>
{
private List<IAdService> _adNetworks = new List<IAdService>();
// 是否有激励视频或者插屏广告在展示
public bool otherAdsOnShow = false;
public void InitSDK()
@ -20,77 +19,99 @@ namespace WZ
#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>
/// <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;
/// yangwu todo
{
_showFailedCallback?.Invoke();
}
AdPlayCountManager.IncrementAdsActionCount(AdsType.Rewarded,AdPlayCountManager.PLAY_COUNT_SUFFIX);
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
#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>
/// <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;
// yangwu todo
{
_closeCallback?.Invoke(0);
}
AdPlayCountManager.IncrementAdsActionCount(AdsType.Interstitial,AdPlayCountManager.PLAY_COUNT_SUFFIX);
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
#region 广
public bool IsBannerAdReady(BannerType bannerType)
public bool IsBannerAdReady(BannerType bannerType,PlatformType platformType)
{
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);
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)
{
AdmobAdsManager.Instance.HideBanner(bannerType);
TpnAdsManager.Instance.HideBanner();
}
#endregion
@ -103,7 +124,6 @@ namespace WZ
public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position)
{
AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position);
AdjustTrackEvent.Instance.TrackEventName("NA_Show", new Dictionary<string, object>());
AdPlayCountManager.IncrementAdsActionCount(AdsType.Native,AdPlayCountManager.PLAY_COUNT_SUFFIX);

View File

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

View File

@ -20,7 +20,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
public static string GetSDKVersion()
{
return "1.0.5.2";
return "1.0.0";
}
protected override void Initialized()
{
@ -36,10 +36,8 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
AdsSplashManager.Instance.SetSplashAdCloseCallback(action);
FireBaseSDKManager.Instance.Init();
ShuShuMangage.Instance.Init();
AdmobAdsManager.Instance.RefreshAdsData();
AdmobAdsManager.Instance.Initialize();
AdjustManager.Instance.Init();
AdsSDKManager.Instance.InitSDK();
#if UNITY_PURCHASE
IAPPurchaseManager.Instance.Initialize();
#endif
@ -191,14 +189,6 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
#region ad
/// <summary>
/// 是否已缓存激励广告
/// </summary>
/// <returns></returns>
public bool IsRewardedAdReady()
{
return AdsSDKManager.Instance.IsRewardAdReady(); ;
}
/// <summary>
/// 展示激励广告
@ -208,7 +198,11 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
public void ShowRewardAd(string position, Action<bool, double> callback = null)
{
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)
{
AdsSDKManager.Instance.ShowRewardAd(position, (isReward, revenue) =>
@ -223,7 +217,10 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
{
callback?.Invoke(false, 0);
}
});
}, () =>
{
callback?.Invoke(false, 0);
},_platform);
}
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>
/// <param name="position"></param>
/// <param name="ivadType"></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);
//插屏展示逻辑
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)
{
AdsSDKManager.Instance.ShowInterstitialAd(position, ivadType, (revenue) =>
@ -277,28 +255,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
IvRulesConst.Intervals[ivadType.ToString()] = TimeUtils.GetLocalTimestamp();
AdsSplashManager.Instance.backgroundTime = Time.realtimeSinceStartup;
callback?.Invoke(revenue);
});
}
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);
});
},_platform);
}
else
{
@ -322,9 +279,10 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
{
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
{

View File

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

View File

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