| 
									
										
										
										
											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
										 |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-02 09:14:49 +00:00
										 |  |  |     public class AdmobAdsManager : D_MonoSingleton<AdmobAdsManager>, IAdService | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         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-09 06:31:15 +00:00
										 |  |  |         private string _naPos; | 
					
						
							| 
									
										
										
										
											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 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-09-02 13:42:07 +00:00
										 |  |  |         public bool _splashLoaded = false; | 
					
						
							| 
									
										
										
										
											2025-09-02 15:25:00 +00:00
										 |  |  |         public bool _initialized { get; private set; } = false; | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |         private bool _receivedReward = false; | 
					
						
							| 
									
										
										
										
											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-03 14:11:37 +00:00
										 |  |  |             _initialized = true; | 
					
						
							| 
									
										
										
										
											2025-09-10 06:21:12 +00:00
										 |  |  |              | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |             MobileAds.Initialize(initStatus => | 
					
						
							|  |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-09-03 05:42:30 +00:00
										 |  |  |                 if (_bannerAdUnits.Count > 0) LoadBanner(); | 
					
						
							|  |  |  |                 if (_interstitialAdUnits.Count > 0) LoadInterstitial(); | 
					
						
							|  |  |  |                 if (_rewardedAdUnits.Count > 0) LoadRewarded(); | 
					
						
							|  |  |  |                 if (_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash(); | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |                 if (_nativeAdUnits.Count > 0) LoadNative(); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |                 LoggerUtils.Debug("[Admob] init success"); | 
					
						
							| 
									
										
										
										
											2025-09-02 13:42:07 +00:00
										 |  |  |             }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-09-10 06:21:12 +00:00
										 |  |  |              | 
					
						
							|  |  |  |             _admobBannerAdManager?.ClearAds(_bannerAdUnits.ToArray()); | 
					
						
							|  |  |  |             _admobInterstitialAdManager?.ClearAds(_interstitialAdUnits.ToArray()); | 
					
						
							|  |  |  |             _admobNativeAdManager?.ClearAds(_nativeAdUnits.ToArray()); | 
					
						
							|  |  |  |             _admobSplashAdManager?.ClearAds(_splashAdUnits.ToArray()); | 
					
						
							|  |  |  |             _admobRewardedAdManager?.ClearAds(_rewardedAdUnits.ToArray()); | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |                 OnRewardEarnReward, | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |                 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-10 06:21:12 +00:00
										 |  |  |             AdsActionEvents.TrackAdFailToLoad(Platfrom,"",adUnitId,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-03 11:58:43 +00:00
										 |  |  |             _rvCloseCallback?.Invoke(_receivedReward,revenue); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvCloseCallback = null; | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |             _receivedReward = false;     | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             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-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
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |         private void OnRewardEarnReward(bool reward) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-03 11:58:43 +00:00
										 |  |  |             _receivedReward = reward; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 插页广告功能 | 
					
						
							|  |  |  |         public void LoadInterstitial() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-02 10:11:18 +00:00
										 |  |  |             _admobInterstitialAdManager?.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-03 05:42:30 +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-09 06:19:16 +00:00
										 |  |  |             AdsActionEvents.TrackAdClicked(Platfrom, adSource, adUnitId, AdsType.Interstitial, _ivPos, 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-09 06:19:16 +00:00
										 |  |  |             AdsActionEvents.TrackAdClosed(Platfrom, adSource, adUnitId, AdsType.Interstitial, _ivPos, 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 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-09-02 10:11:18 +00:00
										 |  |  |             return _admobSplashAdManager.GetAvailableAdUnits().Count > 0; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         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-02 13:42:07 +00:00
										 |  |  |             _splashLoaded = true; | 
					
						
							| 
									
										
										
										
											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-02 13:42:07 +00:00
										 |  |  |             _splashLoaded = true; | 
					
						
							| 
									
										
										
										
											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-02 13:57:18 +00:00
										 |  |  |             AdsSDKManager.Instance.otherAdsOnShow = true; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-02 13:57:18 +00:00
										 |  |  |             AdsSDKManager.Instance.otherAdsOnShow = false; | 
					
						
							| 
									
										
										
										
											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-02 13:57:18 +00:00
										 |  |  |             AdsSDKManager.Instance.otherAdsOnShow = false; | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  |             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() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |             _admobNativeAdManager?.Destroy(); | 
					
						
							|  |  |  |             _admobNativeAdManager = new AdmobNativeAdManager(); | 
					
						
							|  |  |  |             _admobNativeAdManager.InitializeAdUnits( | 
					
						
							|  |  |  |                 _nativeAdUnits | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2025-09-03 05:42:30 +00:00
										 |  |  |             AdsActionEvents.TrackAdStartLoad(Platfrom, "", "", AdsType.Native); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         public bool IsNativeAvailable(string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |             return _admobNativeAdManager.IsAdAvailable(adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-09 06:31:15 +00:00
										 |  |  |             _naPos = _adPos; | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |             _admobNativeAdManager.ShowAd(position, adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         public void RemoveNative(string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |             _admobNativeAdManager.RemoveNative(adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-02 02:07:10 +00:00
										 |  |  |         public double GetNativeRevenue(string adUnitId) | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-08 08:36:59 +00:00
										 |  |  |             return _admobNativeAdManager.GetAdRevenue(adUnitId); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         #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); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-09 06:31:15 +00:00
										 |  |  |             var position = type switch | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AdsType.Rewarded => _rvPos, | 
					
						
							|  |  |  |                 AdsType.Interstitial => _ivPos, | 
					
						
							|  |  |  |                 AdsType.Native => _naPos, | 
					
						
							|  |  |  |                 _ => "" | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 12:29:24 +00:00
										 |  |  |             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, | 
					
						
							| 
									
										
										
										
											2025-09-09 06:31:15 +00:00
										 |  |  |                 position, | 
					
						
							| 
									
										
										
										
											2025-09-04 09:19:05 +00:00
										 |  |  |                 AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX)); | 
					
						
							| 
									
										
										
										
											2025-08-31 12:29:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             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, | 
					
						
							| 
									
										
										
										
											2025-09-09 06:31:15 +00:00
										 |  |  |                 position, | 
					
						
							| 
									
										
										
										
											2025-09-04 09:19:05 +00:00
										 |  |  |                 AdPlayCountManager.GetAdsActionCount(type, AdPlayCountManager.PLAY_COUNT_SUFFIX)); | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |