| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  | using System; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | using System.Collections.Generic; | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  | using System.Diagnostics; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | using GoogleMobileAds.Api; | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  | using UnityEngine; | 
					
						
							| 
									
										
										
										
											2025-08-31 13:19:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  | namespace WZ | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public class AdmobAdsManager : NormalSingleton<AdmobAdsManager>, IAdService | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         public string ClientName => "Admob"; | 
					
						
							| 
									
										
										
										
											2025-09-01 07:14:26 +00:00
										 |  |  |         public PlatformType Platfrom => PlatformType.Admob; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         private AdmobBannerAdManager _admobBannerAdManager; | 
					
						
							|  |  |  |         private AdmobInterstitialAdManager _admobInterstitialAdManager; | 
					
						
							|  |  |  |         private AdmobRewardedAdManager _admobRewardedAdManager; | 
					
						
							|  |  |  |         private AdmobNativeAdManager _admobNativeAdManager; | 
					
						
							|  |  |  |         private AdmobSplashAdManager _admobSplashAdManager; | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  |         private List<string> _interstitialAdUnits = new List<string>(); | 
					
						
							|  |  |  |         private List<string> _rewardedAdUnits = new List<string>(); | 
					
						
							|  |  |  |         private List<string> _nativeAdUnits = new List<string>(); | 
					
						
							|  |  |  |         private List<string> _splashAdUnits = new List<string>(); | 
					
						
							|  |  |  |         private List<string> _bannerAdUnits = new List<string>(); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |         private string _rvPos; | 
					
						
							|  |  |  |         private string _ivPos; | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |         private Action<bool,double> _rvCloseCallback = null; | 
					
						
							|  |  |  |         private Action<double> _ivCloseCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |         private Action _rvShowFailedCallback = null; | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |         private bool _initialized = false; | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private float _rvStartLoadTime = 0; | 
					
						
							|  |  |  |         private float _ivStartLoadTime = 0; | 
					
						
							|  |  |  |         private float _nvStartLoadTime = 0; | 
					
						
							|  |  |  |         private float _bvStartLoadTime = 0; | 
					
						
							|  |  |  |         private float _spStartLoadTime = 0; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         public void Initialize() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |             if (_initialized) return; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             MobileAds.RaiseAdEventsOnUnityMainThread = true; | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             MobileAds.Initialize(initStatus => | 
					
						
							|  |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |                 if (_bannerAdUnits.Count > 0) LoadBanner(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |                 if (_interstitialAdUnits.Count > 0) LoadInterstitial(); | 
					
						
							|  |  |  |                 if (_rewardedAdUnits.Count > 0) LoadRewarded(); | 
					
						
							| 
									
										
										
										
											2025-09-01 13:28:17 +00:00
										 |  |  |                 if(_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |                 _initialized = true; | 
					
						
							|  |  |  |                 LoggerUtils.Debug("[Admob] init success"); | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |             });             | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |         public void RefreshAdsData() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             _bannerAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Banner); | 
					
						
							|  |  |  |             _interstitialAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Interstitial); | 
					
						
							|  |  |  |             _nativeAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Native); | 
					
						
							|  |  |  |             _splashAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Splash); | 
					
						
							|  |  |  |             _rewardedAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Rewarded); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 激励广告功能 | 
					
						
							|  |  |  |         public void LoadRewarded() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _admobRewardedAdManager?.Destroy(); | 
					
						
							| 
									
										
										
										
											2025-08-31 07:12:52 +00:00
										 |  |  |             _admobRewardedAdManager = new AdmobRewardedAdManager(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             _admobRewardedAdManager.InitializeAdUnits( | 
					
						
							|  |  |  |                 _rewardedAdUnits, | 
					
						
							|  |  |  |                 OnRewardedAdLoaded, | 
					
						
							|  |  |  |                 OnRewardedAdLoadFailed, | 
					
						
							|  |  |  |                 OnRewardedAdShowed, | 
					
						
							|  |  |  |                 OnRewardedAdDismissed, | 
					
						
							|  |  |  |                 OnRewardedAdError, | 
					
						
							|  |  |  |                 OnRewardAdPaid, | 
					
						
							|  |  |  |                 OnRewardedAdClicked | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _rvStartLoadTime = Time.realtimeSinceStartup; | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |             AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Rewarded); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |         public void DisplayRewarded(string adPos, Action<bool,double> rewardCallback = null, Action showFailedCallback = null) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvPos = adPos; | 
					
						
							|  |  |  |             _rvCloseCallback = rewardCallback; | 
					
						
							|  |  |  |             _rvShowFailedCallback = showFailedCallback; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             _admobRewardedAdManager.ShowHighestPayingAd(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public double GetRewardedRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return _admobRewardedAdManager.GetHighestPayingAdRevenue(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsRewardedAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |             if (!_initialized || _rewardedAdUnits.Count == 0) return false; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             return _admobRewardedAdManager.GetAvailableAdUnits().Count > 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnRewardedAdLoaded(string adSource,string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Rewarded,Time.realtimeSinceStartup - _rvStartLoadTime,errorMsg); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdShowed(string adUnitId) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnRewardedAdDismissed(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClosed(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue); | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |             _rvCloseCallback?.Invoke(true,revenue); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvCloseCallback = null; | 
					
						
							|  |  |  |             LoadRewarded(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdError(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvShowFailedCallback?.Invoke(); | 
					
						
							|  |  |  |             _rvShowFailedCallback = null; | 
					
						
							|  |  |  |             LoadRewarded(); | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToShow(Platfrom,AdsType.Rewarded,errorMsg,_rvPos); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnRewardedAdClicked(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Rewarded,_rvPos,revenue); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardAdPaid(AdValue adValue) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 插页广告功能 | 
					
						
							|  |  |  |         public void LoadInterstitial() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _admobBannerAdManager?.Destroy(); | 
					
						
							| 
									
										
										
										
											2025-08-31 07:12:52 +00:00
										 |  |  |             _admobInterstitialAdManager = new AdmobInterstitialAdManager(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             _admobInterstitialAdManager.InitializeAdUnits( | 
					
						
							|  |  |  |                 _interstitialAdUnits, | 
					
						
							|  |  |  |                 OnInterstitialAdLoaded, | 
					
						
							|  |  |  |                 OnInterstitialAdLoadFailed, | 
					
						
							|  |  |  |                 OnInterstitialAdShowed, | 
					
						
							|  |  |  |                 OnInterstitialAdDismissed, | 
					
						
							|  |  |  |                 OnInterstitialAdError, | 
					
						
							|  |  |  |                 OnInterstitialAdPaid, | 
					
						
							|  |  |  |                 OnInterstitialAdClicked | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _ivStartLoadTime = Time.realtimeSinceStartup; | 
					
						
							|  |  |  |             AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Interstitial); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         public double GetInterstitialRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return _admobInterstitialAdManager.GetHighestPayingAdRevenue(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |         public void DisplayInterstitial(string ivPos, IvType _IvType = IvType.IV1, Action<double> closeCallback = null) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivPos = ivPos; | 
					
						
							|  |  |  |             _ivCloseCallback = closeCallback; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             _admobInterstitialAdManager.ShowHighestPayingAd(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsInterstitialAvailable() | 
					
						
							| 
									
										
										
										
											2025-09-01 12:53:08 +00:00
										 |  |  |         {; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnInterstitialAdLoaded(string adSource,string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Interstitial,Time.realtimeSinceStartup - _ivStartLoadTime); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Interstitial,Time.realtimeSinceStartup - _ivStartLoadTime,errorMsg); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnInterstitialAdClicked(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClicked(Platfrom, adSource, adUnitId, AdsType.Interstitial, "", revenue); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialAdPaid(AdValue adValue) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialAdShowed(string adUnitId) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnInterstitialAdDismissed(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClosed(Platfrom, adSource, adUnitId, AdsType.Interstitial, "", revenue); | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |             _ivCloseCallback?.Invoke(revenue); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivCloseCallback = null; | 
					
						
							|  |  |  |             LoadInterstitial(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialAdError(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToShow(Platfrom,AdsType.Interstitial,errorMsg,""); | 
					
						
							| 
									
										
										
										
											2025-09-01 14:14:33 +00:00
										 |  |  |             _ivCloseCallback?.Invoke(0); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivCloseCallback = null; | 
					
						
							|  |  |  |             LoadInterstitial(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 开屏广告功能 | 
					
						
							|  |  |  |         public void LoadSplash() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _admobSplashAdManager?.Destroy(); | 
					
						
							| 
									
										
										
										
											2025-08-31 07:12:52 +00:00
										 |  |  |             _admobSplashAdManager = new AdmobSplashAdManager(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             _admobSplashAdManager.InitializeAdUnits( | 
					
						
							|  |  |  |                 _splashAdUnits, | 
					
						
							|  |  |  |                 OnSplashAdLoaded, | 
					
						
							|  |  |  |                 OnSplashAdLoadFailed, | 
					
						
							|  |  |  |                 OnSplashAdShowed, | 
					
						
							|  |  |  |                 OnSplashAdDismissed, | 
					
						
							|  |  |  |                 OnSplashAdError, | 
					
						
							|  |  |  |                 OnSplashAdPaid, | 
					
						
							|  |  |  |                 OnSplashAdClicked | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _spStartLoadTime = Time.realtimeSinceStartup; | 
					
						
							|  |  |  |             AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Splash); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsSplashAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 01:11:05 +00:00
										 |  |  |             if (!_initialized) return false; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             return _admobBannerAdManager.GetAvailableAdUnits().Count > 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public void DisplaySplash() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             _admobSplashAdManager.ShowHighestPayingAd(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public double GetSplashRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return _admobSplashAdManager.GetHighestPayingAdRevenue(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnSplashAdLoaded(string adSource,string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Splash,Time.realtimeSinceStartup - _spStartLoadTime); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnSplashAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Splash,Time.realtimeSinceStartup - _spStartLoadTime,errorMsg); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnSplashAdShowed(string adUnitId) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  |         private void OnSplashAdDismissed(string adSource, string adUnitId, double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClosed(Platfrom, adSource, adUnitId, AdsType.Splash, "", revenue); | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  |             AdsSDKManager.Instance.OnSplashAdCloseCallback?.Invoke(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnSplashAdError(string adUnitId, int errorCode, string errorMsg) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToShow(Platfrom, AdsType.Splash, errorMsg, ""); | 
					
						
							|  |  |  |             AdsSDKManager.Instance.OnSplashAdCloseCallback?.Invoke(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnSplashAdClicked(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Splash,"",revenue); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnSplashAdPaid(AdValue adValue) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 原生广告功能 | 
					
						
							|  |  |  |         public void LoadNative() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public double GetNativeRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public void DisplayNative(NativeAdPosition position) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsNativeAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public void RemoveNative() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 横幅广告功能 | 
					
						
							|  |  |  |         public void LoadBanner() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             _admobBannerAdManager?.Destroy(); | 
					
						
							|  |  |  |             _admobBannerAdManager = new AdmobBannerAdManager(); | 
					
						
							|  |  |  |             _admobBannerAdManager.InitializeAdUnits(BannerAliignType.BannerCenterBottomAlign, | 
					
						
							|  |  |  |                 _bannerAdUnits, | 
					
						
							|  |  |  |                 OnBannerAdLoaded, | 
					
						
							|  |  |  |                 OnBannerAdLoadFailed, | 
					
						
							|  |  |  |                 OnBannerAdPaid, | 
					
						
							|  |  |  |                 OnBannerAdClicked | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             _bvStartLoadTime = Time.realtimeSinceStartup; | 
					
						
							|  |  |  |             AdsActionEvents.TrackAdStartLoad(Platfrom,"","",AdsType.Banner); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsBannerAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 01:11:05 +00:00
										 |  |  |             if (!_initialized) return false; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             return _admobBannerAdManager.GetAvailableAdUnits().Count > 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public void HideBanner() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             _admobBannerAdManager.HideBanner(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public double GetBannerRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return _admobBannerAdManager.GetHighestPayingAdRevenue(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public void DisplayBanner() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             _admobBannerAdManager.ShowHighestPayingAd(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnBannerAdLoaded(string adSource,string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdLoaded(Platfrom,adSource,adUnitId,AdsType.Banner,Time.realtimeSinceStartup - _bvStartLoadTime); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnBannerAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToLoad(Platfrom,"","",AdsType.Banner,Time.realtimeSinceStartup - _bvStartLoadTime,errorMsg); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |         private void OnBannerAdClicked(string adSource,string adUnitId,double revenue) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |             AdsActionEvents.TrackAdClicked(Platfrom,adSource,adUnitId,AdsType.Banner,"",revenue); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnBannerAdPaid(AdValue adValue) | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  |         #region  收益上报 | 
					
						
							| 
									
										
										
										
											2025-08-31 12:29:24 +00:00
										 |  |  |         public void TrackAdImpression(AdapterResponseInfo loadedAdapterResponseInfo, AdValue adValue, AdsType type, string placement) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AdjustTrackEvent.Instance.TrackAdEvent(adValue.Value / 1000000f, | 
					
						
							|  |  |  |                 loadedAdapterResponseInfo.AdSourceName, | 
					
						
							|  |  |  |                 placement, | 
					
						
							|  |  |  |                 loadedAdapterResponseInfo.AdSourceInstanceName); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(PlatformType.Admob.ToString(), | 
					
						
							|  |  |  |                 loadedAdapterResponseInfo.AdSourceName, | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |                 placement, | 
					
						
							|  |  |  |                 type, | 
					
						
							| 
									
										
										
										
											2025-08-31 12:29:24 +00:00
										 |  |  |                 adValue.Value / 1000000f, | 
					
						
							|  |  |  |                 type == AdsType.Rewarded ? _rvPos : "", | 
					
						
							|  |  |  |                 AdPlayCountManager.GetAdPlayCount(type)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             ShuShuEvent.Instance.OnAdRevenueEvent(PlatformType.Admob.ToString(), | 
					
						
							|  |  |  |                 loadedAdapterResponseInfo.AdSourceName, | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  |                 placement, | 
					
						
							|  |  |  |                 type.ToString(), | 
					
						
							| 
									
										
										
										
											2025-08-31 12:29:24 +00:00
										 |  |  |                 adValue.Value / 1000000f, | 
					
						
							|  |  |  |                 type == AdsType.Rewarded ? _rvPos : "", | 
					
						
							|  |  |  |                 AdPlayCountManager.GetAdPlayCount(type)); | 
					
						
							| 
									
										
										
										
											2025-09-01 08:57:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             AdsActionEvents.TrackAdImpression(Platfrom,loadedAdapterResponseInfo.AdSourceName,placement,type,type == AdsType.Rewarded ? _rvPos : "",adValue.Value / 1000000f); | 
					
						
							| 
									
										
										
										
											2025-08-31 08:26:53 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 14:18:31 +00:00
										 |  |  |         #region 广告行为事件上报 | 
					
						
							|  |  |  |         public void TrackAdAction(AdapterResponseInfo loadedAdapterResponseInfo, double revenue, AdsType type, string placement) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |