From d453b7b73d46029c6fd83a9808b043e5579a71a1 Mon Sep 17 00:00:00 2001 From: luojian Date: Mon, 20 Oct 2025 13:35:35 +0800 Subject: [PATCH] =?UTF-8?q?native=20=E5=A4=9A=E6=AC=A1=E8=B0=83=E7=94=A8sh?= =?UTF-8?q?ow=E7=9A=84=E5=AE=9A=E6=97=B6=E5=88=B7=E6=96=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdmobAdsManager/AdmobNativeAdManager.cs | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) 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(); } // 获取价格最高的广告收益信息