342 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			342 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System.Collections.Generic; | ||
|  | using GoogleMobileAds.Api; | ||
|  | using Script.Common; | ||
|  | using Script.SDKManager.AdsSDKManager.Utils; | ||
|  | using Script.Utils; | ||
|  | using SDK.Utils; | ||
|  | using SDKManager.AdsSDKManager.Constant; | ||
|  | 
 | ||
|  | namespace Script.SDKManager.AdsSDKManager.AdmobAdsManager | ||
|  | { | ||
|  | 
 | ||
|  |     public class AdmobAdsManager : NormalSingleton<AdmobAdsManager>, IAdService | ||
|  |     { | ||
|  |         public string ClientName => "Admob"; | ||
|  |         private AdmobBannerAdManager _admobBannerAdManager; | ||
|  |         private AdmobInterstitialAdManager _admobInterstitialAdManager; | ||
|  |         private AdmobRewardedAdManager _admobRewardedAdManager; | ||
|  |         private AdmobNativeAdManager _admobNativeAdManager; | ||
|  |         private AdmobSplashAdManager _admobSplashAdManager; | ||
|  |         private List<string> _interstitialAdUnits; | ||
|  |         private List<string> _rewardedAdUnits; | ||
|  |         private List<string> _nativeAdUnits; | ||
|  |         private List<string> _splashAdUnits; | ||
|  |         private List<string> _bannerAdUnits; | ||
|  |         private bool _initialized; | ||
|  | 
 | ||
|  | 
 | ||
|  |         public void Initialize() | ||
|  |         { | ||
|  |             MobileAds.RaiseAdEventsOnUnityMainThread = true; | ||
|  |             _bannerAdUnits = AdConfigParser.GetAdmobAdUnits(AdsType.Banner); | ||
|  |             MobileAds.Initialize(initStatus => | ||
|  |             { | ||
|  |                 if (_bannerAdUnits.Count > 0) | ||
|  |                 { | ||
|  |                     _admobBannerAdManager = new AdmobBannerAdManager(); | ||
|  |                     _admobBannerAdManager.InitializeAdUnits(BannerAliignType.BannerCenterBottomAlign, | ||
|  |                         _bannerAdUnits, | ||
|  |                         OnBannerAdLoaded, | ||
|  |                         OnBannerAdLoadFailed, | ||
|  |                         OnBannerAdPaid, | ||
|  |                         OnBannerAdClicked | ||
|  |                     ); | ||
|  |                 } | ||
|  |                 if (_interstitialAdUnits.Count > 0) LoadInterstitial(); | ||
|  |                 if (_rewardedAdUnits.Count > 0) LoadRewarded(); | ||
|  | 
 | ||
|  |                 LoadSplash(); | ||
|  |                 _initialized = true; | ||
|  |                 LoggerUtils.Debug("[Admob] init success"); | ||
|  |             }); | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         #region 激励广告功能 | ||
|  |         public void LoadRewarded() | ||
|  |         { | ||
|  |             _admobRewardedAdManager = new AdmobRewardedAdManager(); | ||
|  |             _admobRewardedAdManager.Destroy(); | ||
|  |             _admobRewardedAdManager.InitializeAdUnits( | ||
|  |                 _rewardedAdUnits, | ||
|  |                 OnRewardedAdLoaded, | ||
|  |                 OnRewardedAdLoadFailed, | ||
|  |                 OnRewardedAdShowed, | ||
|  |                 OnRewardedAdDismissed, | ||
|  |                 OnRewardedAdError, | ||
|  |                 OnRewardAdPaid, | ||
|  |                 OnRewardedAdClicked | ||
|  |             ); | ||
|  |         } | ||
|  |         public void DisplayRewarded() | ||
|  |         { | ||
|  |             _admobRewardedAdManager.ShowHighestPayingAd(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public double GetRewardedRevenue() | ||
|  |         { | ||
|  |             return _admobRewardedAdManager.GetHighestPayingAdRevenue(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool IsRewardedAvailable() | ||
|  |         { | ||
|  |             if (!_initialized) return false; | ||
|  |             return _admobRewardedAdManager.GetAvailableAdUnits().Count > 0; | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdLoaded(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdShowed(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdDismissed(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdError(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardedAdClicked(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnRewardAdPaid(AdValue adValue) | ||
|  |         { | ||
|  | 
 | ||
|  | 
 | ||
|  |         } | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region 插页广告功能 | ||
|  |         public void LoadInterstitial() | ||
|  |         { | ||
|  |             _admobInterstitialAdManager = new AdmobInterstitialAdManager(); | ||
|  |             _admobInterstitialAdManager.Destroy(); | ||
|  |             _admobInterstitialAdManager.InitializeAdUnits( | ||
|  |                 _interstitialAdUnits, | ||
|  |                 OnInterstitialAdLoaded, | ||
|  |                 OnInterstitialAdLoadFailed, | ||
|  |                 OnInterstitialAdShowed, | ||
|  |                 OnInterstitialAdDismissed, | ||
|  |                 OnInterstitialAdError, | ||
|  |                 OnInterstitialAdPaid, | ||
|  |                 OnInterstitialAdClicked | ||
|  |             ); | ||
|  |         } | ||
|  |         public double GetInterstitialRevenue() | ||
|  |         { | ||
|  |             return _admobInterstitialAdManager.GetHighestPayingAdRevenue(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public void DisplayInterstitial() | ||
|  |         { | ||
|  |             _admobInterstitialAdManager.ShowHighestPayingAd(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool IsInterstitialAvailable() | ||
|  |         { | ||
|  |             if (!_initialized) return false; | ||
|  |             return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0; | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdLoaded(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  |         private void OnInterstitialAdClicked(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdPaid(AdValue adValue) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdShowed(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdDismissed(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnInterstitialAdError(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  |         #endregion | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         #region 开屏广告功能 | ||
|  |         public void LoadSplash() | ||
|  |         { | ||
|  |             _admobSplashAdManager = new AdmobSplashAdManager(); | ||
|  |             _admobSplashAdManager.Destroy(); | ||
|  |             _admobSplashAdManager.InitializeAdUnits( | ||
|  |                 _splashAdUnits, | ||
|  |                 OnSplashAdLoaded, | ||
|  |                 OnSplashAdLoadFailed, | ||
|  |                 OnSplashAdShowed, | ||
|  |                 OnSplashAdDismissed, | ||
|  |                 OnSplashAdError, | ||
|  |                 OnSplashAdPaid, | ||
|  |                 OnSplashAdClicked | ||
|  |             ); | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool IsSplashAvailable() | ||
|  |         { | ||
|  |             return _admobBannerAdManager.GetAvailableAdUnits().Count > 0; | ||
|  |         } | ||
|  |         public void DisplaySplash() | ||
|  |         { | ||
|  |             _admobSplashAdManager.ShowHighestPayingAd(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public double GetSplashRevenue() | ||
|  |         { | ||
|  |             return _admobSplashAdManager.GetHighestPayingAdRevenue(); | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdLoaded(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdShowed(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdDismissed(string adUnitId) | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdError(string adUnitId, int errorCode, string errorMsg) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdClicked(string adUnitId) | ||
|  |         { | ||
|  | 
 | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnSplashAdPaid(AdValue adValue) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region 原生广告功能 | ||
|  |         public void LoadNative() | ||
|  |         { | ||
|  |             throw new System.NotImplementedException(); | ||
|  |         } | ||
|  |         public double GetNativeRevenue() | ||
|  |         { | ||
|  |             return 0; | ||
|  |         } | ||
|  |         public void DisplayNative(NativeAdPosition position) | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool IsNativeAvailable() | ||
|  |         { | ||
|  |             return false; | ||
|  |         } | ||
|  | 
 | ||
|  |         public void RemoveNative() | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region 横幅广告功能 | ||
|  |         public void LoadBanner() | ||
|  |         { | ||
|  |             foreach (var adUnitId in _bannerAdUnits) | ||
|  |             { | ||
|  |                 _admobBannerAdManager.LoadAd(adUnitId); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         public bool IsBannerAvailable() | ||
|  |         { | ||
|  |             return _admobBannerAdManager.GetAvailableAdUnits().Count > 0; | ||
|  |         } | ||
|  |         public void HideBanner() | ||
|  |         { | ||
|  |             _admobBannerAdManager.HideBanner(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public double GetBannerRevenue() | ||
|  |         { | ||
|  |             return _admobBannerAdManager.GetHighestPayingAdRevenue(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public void DisplayBanner() | ||
|  |         { | ||
|  |             _admobBannerAdManager.ShowHighestPayingAd(); | ||
|  |         } | ||
|  |          | ||
|  |         private void OnBannerAdLoaded(string adUnitId) | ||
|  |         {  | ||
|  | 
 | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnBannerAdLoadFailed(string adUnitId, int errorCode, string errorMsg) | ||
|  |         {  | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnBannerAdClicked() | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         private void OnBannerAdPaid(AdValue adValue) | ||
|  |         {  | ||
|  | 
 | ||
|  |         } | ||
|  |         #endregion | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 |