| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | using System; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | using System.Collections; | 
					
						
							|  |  |  | using System.Collections.Generic; | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  | using System.Linq; | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  | using System.Net.Security; | 
					
						
							|  |  |  | using Firebase.Analytics; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | using Script.Common; | 
					
						
							| 
									
										
										
										
											2025-08-31 13:19:46 +00:00
										 |  |  | using Script.SDKManager.AdsSDKManager.Constant; | 
					
						
							| 
									
										
										
										
											2025-08-31 14:18:31 +00:00
										 |  |  | using Script.SDKManager.AdsSDKManager.Events.AdsEvents; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | using Script.SDKManager.AdsSDKManager.Utils; | 
					
						
							|  |  |  | using Script.Utils; | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | using UnityEngine; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | namespace Script.SDKManager.AdsSDKManager.MaxAdsManager | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |     public class MaxAdsManager : NormalSingleton<MaxAdsManager>, IAdService | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         public string ClientName => "AppLovin"; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         private string max_app_key; | 
					
						
							|  |  |  |         private string max_interstitial_units; | 
					
						
							|  |  |  |         private string max_rewarded_units; | 
					
						
							|  |  |  |         private MaxSdkBase.AdInfo _interAdInfo; | 
					
						
							|  |  |  |         private MaxSdkBase.AdInfo _rewardAdInfo; | 
					
						
							|  |  |  |         private int _rewardRetryAttempt; | 
					
						
							|  |  |  |         private int _interRetryAttempt; | 
					
						
							|  |  |  |         private float _rvStartLoadTime = 0; | 
					
						
							|  |  |  |         private float _ivStartLoadTime = 0; | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |         private string _rvPos; | 
					
						
							|  |  |  |         private string _ivPos; | 
					
						
							|  |  |  |         private Action<bool> _rvCloseCallback = null; | 
					
						
							|  |  |  |         private Action _ivCloseCallback = null; | 
					
						
							|  |  |  |         private Action _rvShowFailedCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         public void Initialize() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             max_app_key = AdConfigParser.GetMaxAppKey(); | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  |             max_interstitial_units = AdConfigParser.GetMaxAdUnits(AdsType.Interstitial).FirstOrDefault(); | 
					
						
							|  |  |  |             max_rewarded_units = AdConfigParser.GetMaxAdUnits(AdsType.Rewarded).FirstOrDefault(); | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             if (string.IsNullOrEmpty(max_app_key)) return; | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] init max"); | 
					
						
							|  |  |  |             // 关闭反转debug面板 | 
					
						
							|  |  |  |             MaxSdk.SetCreativeDebuggerEnabled(false); | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             InitRewardedCallback(); | 
					
						
							|  |  |  |             InitInterstitialCallback(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             MaxSdkCallbacks.OnSdkInitializedEvent += (MaxSdkBase.SdkConfiguration obj) => | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 LoggerUtils.Debug("[Max] init max success"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |             MaxSdk.SetVerboseLogging(false); | 
					
						
							|  |  |  |             MaxSdk.SetSdkKey(max_app_key); | 
					
						
							|  |  |  |             MaxSdk.InitializeSdk(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 激励广告功能 | 
					
						
							|  |  |  |         private void InitRewardedCallback() | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             if (string.IsNullOrEmpty(max_rewarded_units)) return; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdLoadFailedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdFailedToDisplayEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdDisplayedEvent += OnRewardedAdDisplayedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedRevenue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public void LoadRewarded() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  |             if (string.IsNullOrEmpty(max_rewarded_units)) return; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             MaxSdk.LoadRewardedAd(max_rewarded_units); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |         public void DisplayRewarded(string adPos, Action<bool> rewardCallback = null, Action showFailedCallback = null) | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvPos = adPos; | 
					
						
							|  |  |  |             _rvCloseCallback = rewardCallback; | 
					
						
							|  |  |  |             _rvShowFailedCallback = showFailedCallback; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             MaxSdk.ShowRewardedAd(max_rewarded_units); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public double GetRewardedRevenue() | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             if (IsRewardedAvailable() && _rewardAdInfo != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 return _rewardAdInfo.Revenue; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 return -1; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         public bool IsRewardedAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |             return string.IsNullOrEmpty(max_rewarded_units) ? false : MaxSdk.IsRewardedAdReady(max_rewarded_units); ; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedRevenue(string adunit, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedRevenue network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |             TrackAdImpression(adInfo, AdsType.Rewarded); | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdLoadedEvent(string adunit, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdLoadedEvent network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); | 
					
						
							| 
									
										
										
										
											2025-08-31 14:18:31 +00:00
										 |  |  |             AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Rewarded); | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             _rewardAdInfo = adInfo; | 
					
						
							|  |  |  |             _rewardRetryAttempt = 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdLoadFailedEvent(string adunit, MaxSdkBase.ErrorInfo errorInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdLoadFailedEvent errorInfo" + errorInfo.Message); | 
					
						
							|  |  |  |             _rewardRetryAttempt++; | 
					
						
							|  |  |  |             double retryDelay = Math.Pow(2, Math.Min(6, _rewardRetryAttempt)); | 
					
						
							|  |  |  |             TimerUtils.DelayExecute((float)retryDelay, LoadRewarded); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo info) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdDisplayedEvent network: " + info.NetworkName + " revenue: " + info.Revenue + " NetworkPlacement: " + info.NetworkPlacement + " AdUnitIdentifier: " + info.AdUnitIdentifier + " Placement: " + info.Placement); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdClickedEvent"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdFailedToDisplayEvent :" + errorInfo.Message + " " + errorInfo.Code + " " + errorInfo.MediatedNetworkErrorMessage + " " + errorInfo.MediatedNetworkErrorCode); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvShowFailedCallback?.Invoke(); | 
					
						
							|  |  |  |             _rvShowFailedCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             LoadRewarded(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _rvCloseCallback?.Invoke(true); | 
					
						
							|  |  |  |             _rvCloseCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             LoadRewarded(); | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnRewardedAdHiddenEvent"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 插页广告功能 | 
					
						
							|  |  |  |         private void InitInterstitialCallback() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (string.IsNullOrEmpty(max_interstitial_units)) return; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdLoadedEvent += OnInterstitialLoadedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdLoadFailedEvent += OnInterstitialLoadFailedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdDisplayFailedEvent += OnInterstitialAdFailedToDisplayEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdHiddenEvent += OnInterstitialHiddenEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdDisplayedEvent += OnInterstitialDisplayedEvent; | 
					
						
							|  |  |  |             MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnInterstitialRevenue; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public void LoadInterstitial() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-09-01 03:39:21 +00:00
										 |  |  |             if (string.IsNullOrEmpty(max_rewarded_units)) return; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             MaxSdk.LoadInterstitial(max_interstitial_units); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public double GetInterstitialRevenue() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (IsInterstitialAvailable() && _interAdInfo != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 return _interAdInfo.Revenue; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 return -1; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |         public void DisplayInterstitial(string ivPos, IvType _IvType = IvType.IV1, Action closeCallback = null) | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivPos = ivPos; | 
					
						
							|  |  |  |             _ivCloseCallback = closeCallback; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             MaxSdk.ShowInterstitial(max_interstitial_units); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public bool IsInterstitialAvailable() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return string.IsNullOrEmpty(max_interstitial_units) ? false : MaxSdk.IsInterstitialReady(max_interstitial_units); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialLoadedEvent(string adunit, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnInterstitialLoadedEvent network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); | 
					
						
							| 
									
										
										
										
											2025-08-31 14:18:31 +00:00
										 |  |  |             AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial); | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             _interAdInfo = adInfo; | 
					
						
							|  |  |  |             _interRetryAttempt = 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnInterstitialLoadFailedEvent :" + errorInfo); | 
					
						
							|  |  |  |             _interRetryAttempt++; | 
					
						
							|  |  |  |             double retryDelay = Math.Pow(2, Math.Min(6, _interRetryAttempt)); | 
					
						
							|  |  |  |             TimerUtils.DelayExecute((float)retryDelay, LoadInterstitial); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         private void OnInterstitialAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo arg3) | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnInterstitialAdFailedToDisplayEvent :" + errorInfo.Message + " " + errorInfo.Code + " " + errorInfo.MediatedNetworkErrorMessage + " " + errorInfo.MediatedNetworkErrorCode); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivCloseCallback?.Invoke(); | 
					
						
							|  |  |  |             _ivCloseCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             LoadInterstitial(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo info) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug($"[Max] OnInterstitialDisplayedEvent network: {info.NetworkName}, revenue: {info.Revenue},NetworkPlacement: {info.NetworkPlacement}, AdUnitIdentifier: {info.AdUnitIdentifier},Placement: {info.Placement}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialHiddenEvent(string adUnitId, MaxSdkBase.AdInfo info) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug($"[Max] OnInterstitialHiddenEvent"); | 
					
						
							| 
									
										
										
										
											2025-08-31 05:15:14 +00:00
										 |  |  |             _ivCloseCallback?.Invoke(); | 
					
						
							|  |  |  |             _ivCloseCallback = null; | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |             LoadInterstitial(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void OnInterstitialRevenue(string adunit, MaxSdkBase.AdInfo adInfo) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             LoggerUtils.Debug("[Max] OnInterstitialRevenue network: " + adInfo.NetworkName + " revenue: " + adInfo.Revenue + " NetworkPlacement: " + adInfo.NetworkPlacement + " AdUnitIdentifier: " + adInfo.AdUnitIdentifier + " Placement: " + adInfo.Placement); | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |             TrackAdImpression(adInfo, AdsType.Interstitial); | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 开屏广告功能 | 
					
						
							|  |  |  |         public void LoadSplash() { } | 
					
						
							|  |  |  |         public bool IsSplashAvailable() { return false; } | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         public void DisplaySplash() { } | 
					
						
							|  |  |  |         public double GetSplashRevenue() { return 0; } | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 原生广告功能 | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         public void LoadNative() { } | 
					
						
							|  |  |  |         public double GetNativeRevenue() { return 0; } | 
					
						
							|  |  |  |         public void DisplayNative(NativeAdPosition position) { } | 
					
						
							|  |  |  |         public bool IsNativeAvailable() { return false; } | 
					
						
							|  |  |  |         public void RemoveNative() { } | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 横幅广告功能 | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |         public void LoadBanner() { } | 
					
						
							|  |  |  |         public bool IsBannerAvailable() { return false; } | 
					
						
							|  |  |  |         public void HideBanner() { } | 
					
						
							|  |  |  |         public double GetBannerRevenue() { return 0; } | 
					
						
							|  |  |  |         public void DisplayBanner() { } | 
					
						
							|  |  |  |         #endregion | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #region 广告收益上报 | 
					
						
							|  |  |  |         public void TrackAdImpression(MaxSdkBase.AdInfo adInfo, AdsType type) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AdjustTrackEvent.Instance.TrackAdEvent(adInfo.Revenue, | 
					
						
							|  |  |  |                 adInfo.NetworkName, | 
					
						
							|  |  |  |                 adInfo.AdUnitIdentifier, | 
					
						
							|  |  |  |                 adInfo.Placement); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             FireBaseAnalyticsManager.Instance.OnAdRevenueEvent(ClientName, | 
					
						
							|  |  |  |                 adInfo.NetworkName, | 
					
						
							|  |  |  |                 adInfo.AdUnitIdentifier, | 
					
						
							| 
									
										
										
										
											2025-08-31 14:18:31 +00:00
										 |  |  |                 type, | 
					
						
							| 
									
										
										
										
											2025-08-31 12:48:14 +00:00
										 |  |  |                 adInfo.Revenue, | 
					
						
							|  |  |  |                 type == AdsType.Rewarded ? _rvPos : "", | 
					
						
							|  |  |  |                 AdPlayCountManager.GetAdPlayCount(type)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             ShuShuEvent.Instance.OnAdRevenueEvent(ClientName, | 
					
						
							|  |  |  |                 adInfo.NetworkName, | 
					
						
							|  |  |  |                 adInfo.AdUnitIdentifier, | 
					
						
							|  |  |  |                 type.ToString(), | 
					
						
							|  |  |  |                 adInfo.Revenue, | 
					
						
							|  |  |  |                 type == AdsType.Rewarded ? _rvPos : "", | 
					
						
							|  |  |  |                 AdPlayCountManager.GetAdPlayCount(type)); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-08-31 02:12:10 +00:00
										 |  |  |         #endregion | 
					
						
							| 
									
										
										
										
											2025-08-30 13:48:51 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } |