diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs index baf2b42..2860337 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs @@ -27,6 +27,7 @@ namespace WZ private Dictionary _retryCounters = new Dictionary(); private Dictionary _adStartLoadTimes = new Dictionary(); private Dictionary showingNativeAds = new(); + private Dictionary TimingRefreshDict = new(); public void InitializeAdUnits(List adUnitIds) { @@ -128,7 +129,7 @@ namespace WZ adUnitId, AdsType.Native, AdmobUtils.GetNativeEcpm(ad)); - + _retryCounters[adUnitId] = 0; @@ -143,8 +144,8 @@ namespace WZ ad.OnAdPaid += (AdValue adValue) => { LoggerUtils.Debug($"[Admob] Native ad paid {adValue.Value} {adValue.CurrencyCode}."); - AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName??"", - ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId??"", + AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName ?? "", + ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId ?? "", adValue, AdsType.Native, adUnitId); @@ -275,6 +276,16 @@ namespace WZ private void TimingRefresh(string adUnitId) { + // 同一个id只允许触发一次定时刷新。 避免多次调用show ,多次来触发刷新 + if (TimingRefreshDict.TryGetValue(adUnitId, out var timingRefresh)) + { + if (timingRefresh) + { + LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh finished. 正在刷新中.不用重复刷新."); + return; + } + } + var nativeReflashGap = int.Parse(FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("Native_Reflash_Gap", "0")); if (nativeReflashGap <= 0) @@ -295,10 +306,15 @@ namespace WZ return; } + LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh start. nativeReflashGap = {nativeReflashGap}"); + + TimingRefreshDict.AddIfNotExists(adUnitId, true); + WLoom.QueueOnMainThread(o => { var refreshAdUnitId = (string)o; - LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}."); + var remove = TimingRefreshDict.Remove(refreshAdUnitId); + LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}. TimingRefreshDict.Remove = {remove}"); if (showingNativeAds.ContainsKey(refreshAdUnitId)) { LoadAd(refreshAdUnitId, true); @@ -332,10 +348,10 @@ namespace WZ public string GetHighestPayingAdUnit() { return _adRevenueCache - .Where(kvp => IsAdAvailable(kvp.Key)) - .OrderByDescending(kvp => kvp.Value) - .Select(kvp => kvp.Key) - .FirstOrDefault(); + .Where(kvp => IsAdAvailable(kvp.Key)) + .OrderByDescending(kvp => kvp.Value) + .Select(kvp => kvp.Key) + .FirstOrDefault(); } // 获取价格最高的广告收益信息