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