From b9fe36c2e07cdc26df9120fcf73746595567d410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=89=E5=B3=B0?= Date: Wed, 10 Sep 2025 14:21:12 +0800 Subject: [PATCH] =?UTF-8?q?admob=E6=8B=89=E5=8F=96=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E5=B9=BF=E5=91=8Aid=E5=90=8E=E9=94=80=E6=AF=81=E6=97=A0?= =?UTF-8?q?=E6=95=88id=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdmobAdsManager/AdmobAdsManager.cs | 9 ++++++- .../AdmobAdsManager/AdmobBannerAdManager.cs | 25 +++++++++++++++++++ .../AdmobInterstitialAdManager.cs | 23 +++++++++++++++++ .../AdmobAdsManager/AdmobNativeAdManager.cs | 25 +++++++++++++++++++ .../AdmobAdsManager/AdmobRewardedAdManager.cs | 24 ++++++++++++++++++ .../AdmobAdsManager/AdmobSplashAdManager.cs | 23 +++++++++++++++++ 6 files changed, 128 insertions(+), 1 deletion(-) diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs index 858317d..22f7989 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs @@ -42,6 +42,7 @@ namespace WZ if (_initialized) return; MobileAds.RaiseAdEventsOnUnityMainThread = true; _initialized = true; + MobileAds.Initialize(initStatus => { if (_bannerAdUnits.Count > 0) LoadBanner(); @@ -62,6 +63,12 @@ namespace WZ _nativeAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Native); _splashAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Splash); _rewardedAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Rewarded); + + _admobBannerAdManager?.ClearAds(_bannerAdUnits.ToArray()); + _admobInterstitialAdManager?.ClearAds(_interstitialAdUnits.ToArray()); + _admobNativeAdManager?.ClearAds(_nativeAdUnits.ToArray()); + _admobSplashAdManager?.ClearAds(_splashAdUnits.ToArray()); + _admobRewardedAdManager?.ClearAds(_rewardedAdUnits.ToArray()); } #region 激励广告功能 @@ -108,7 +115,7 @@ namespace WZ private void OnRewardedAdLoadFailed(string adUnitId, int errorCode, string errorMsg) { - AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime,errorMsg); + AdsActionEvents.TrackAdFailToLoad(Platfrom,"",adUnitId,AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime,errorMsg); } private void OnRewardedAdShowed(string adUnitId) diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs index 3565825..a7cb7cc 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobBannerAdManager.cs @@ -194,6 +194,31 @@ namespace WZ _loadCallbacks.Clear(); _adRevenueCache.Clear(); } + + public void ClearAds(string[] adUnitIds) + { + // 将数组转换为HashSet以提高查找性能 + HashSet validKeys = new HashSet(adUnitIds); + // 收集需要移除的key + List keysToRemove = new List(); + + foreach (var key in _bannerAds.Keys) + { + if (!validKeys.Contains(key)) + { + keysToRemove.Add(key); + } + } + + // 移除不在数组中的key + foreach (string key in keysToRemove) + { + _bannerAds.Remove(key); + _retryCounters.Remove(key); + _loadCallbacks.Remove(key); + _adRevenueCache.Remove(key); + } + } } } diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs index 0098f0f..b70d07c 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobInterstitialAdManager.cs @@ -188,5 +188,28 @@ namespace WZ _interstitialAds.Clear(); _adRevenueCache.Clear(); } + + public void ClearAds(string[] adUnitIds) + { + // 将数组转换为HashSet以提高查找性能 + HashSet validKeys = new HashSet(adUnitIds); + // 收集需要移除的key + List keysToRemove = new List(); + + foreach (var key in _interstitialAds.Keys) + { + if (!validKeys.Contains(key)) + { + keysToRemove.Add(key); + } + } + + // 移除不在数组中的key + foreach (string key in keysToRemove) + { + _interstitialAds.Remove(key); + _adRevenueCache.Remove(key); + } + } } } diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs index 815a03f..7f755d3 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs @@ -267,5 +267,30 @@ namespace WZ LoadAd(adUnitId); } } + + public void ClearAds(string[] adUnitIds) + { + // 将数组转换为HashSet以提高查找性能 + HashSet validKeys = new HashSet(adUnitIds); + // 收集需要移除的key + List keysToRemove = new List(); + + foreach (var key in _nativeAds.Keys) + { + if (!validKeys.Contains(key)) + { + keysToRemove.Add(key); + } + } + + // 移除不在数组中的key + foreach (string key in keysToRemove) + { + _nativeAds.Remove(key); + _retryCounters.Remove(key); + _adStartLoadTimes.Remove(key); + _adRevenueCache.Remove(key); + } + } } } \ No newline at end of file diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs index 3265d40..382c38f 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobRewardedAdManager.cs @@ -188,5 +188,29 @@ namespace WZ _rewardedAds.Clear(); _adRevenueCache.Clear(); } + + + public void ClearAds(string[] adUnitIds) + { + // 将数组转换为HashSet以提高查找性能 + HashSet validKeys = new HashSet(adUnitIds); + // 收集需要移除的key + List keysToRemove = new List(); + + foreach (var key in _rewardedAds.Keys) + { + if (!validKeys.Contains(key)) + { + keysToRemove.Add(key); + } + } + + // 移除不在数组中的key + foreach (string key in keysToRemove) + { + _rewardedAds.Remove(key); + _adRevenueCache.Remove(key); + } + } } } diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs index 5bd83ac..dc2bef6 100644 --- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs +++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobSplashAdManager.cs @@ -187,5 +187,28 @@ namespace WZ _appOpenAds.Clear(); _adRevenueCache.Clear(); } + + public void ClearAds(string[] adUnitIds) + { + // 将数组转换为HashSet以提高查找性能 + HashSet validKeys = new HashSet(adUnitIds); + // 收集需要移除的key + List keysToRemove = new List(); + + foreach (var key in _appOpenAds.Keys) + { + if (!validKeys.Contains(key)) + { + keysToRemove.Add(key); + } + } + + // 移除不在数组中的key + foreach (string key in keysToRemove) + { + _appOpenAds.Remove(key); + _adRevenueCache.Remove(key); + } + } } } \ No newline at end of file