1140 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			1140 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | // ReSharper disable RedundantArgumentDefaultValue | ||
|  | 
 | ||
|  | using System; | ||
|  | using System.Collections.Generic; | ||
|  | using System.Text.RegularExpressions; | ||
|  | using UnityEngine; | ||
|  | using AppLovinMax.ThirdParty.MiniJson; | ||
|  | using AppLovinMax.Internal; | ||
|  | 
 | ||
|  | /// <summary> | ||
|  | /// This is is a global Unity object that is used to forward callbacks from native iOS / Android Max code to the application. | ||
|  | /// </summary> | ||
|  | public static class MaxSdkCallbacks | ||
|  | { | ||
|  |     /// <summary> | ||
|  |     /// Fired when the SDK has finished initializing | ||
|  |     /// </summary> | ||
|  |     private static Action<MaxSdkBase.SdkConfiguration> onSdkInitializedEvent; | ||
|  |     public static event Action<MaxSdkBase.SdkConfiguration> OnSdkInitializedEvent | ||
|  |     { | ||
|  |         add | ||
|  |         { | ||
|  |             LogSubscribedToEvent("OnSdkInitializedEvent"); | ||
|  |             onSdkInitializedEvent += value; | ||
|  |         } | ||
|  |         remove | ||
|  |         { | ||
|  |             LogUnsubscribedToEvent("OnSdkInitializedEvent"); | ||
|  |             onSdkInitializedEvent -= value; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Fired when the application is paused or resumed. | ||
|  |     /// </summary> | ||
|  |     private static Action<bool> onApplicationStateChangedEvent; | ||
|  |     public static event Action<bool> OnApplicationStateChangedEvent | ||
|  |     { | ||
|  |         add | ||
|  |         { | ||
|  |             LogSubscribedToEvent("OnApplicationStateChangedEvent"); | ||
|  |             onApplicationStateChangedEvent += value; | ||
|  |         } | ||
|  |         remove | ||
|  |         { | ||
|  |             LogUnsubscribedToEvent("OnApplicationStateChangedEvent"); | ||
|  |             onApplicationStateChangedEvent -= value; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static class Interstitial | ||
|  |     { | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdLoadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdLoadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo> onAdLoadFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo> OnAdLoadFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an interstitial ad is displayed (may not be received by Unity until the interstitial ad closes). | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdDisplayedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdDisplayedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> onAdDisplayFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> OnAdDisplayFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdClickedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdClickedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdClickedEvent"); | ||
|  |                 onAdClickedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdClickedEvent"); | ||
|  |                 onAdClickedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an interstitial ad impression was validated and revenue will be paid. | ||
|  |         /// Executed on a background thread to avoid any delays in execution. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdRevenuePaidEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdRevenuePaidEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an expired interstitial ad is reloaded. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> onExpiredAdReloadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> OnExpiredAdReloadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnExpiredInterstitialAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnExpiredInterstitialAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an Ad Review Creative ID has been generated. | ||
|  |         /// The parameters returned are the adUnitIdentifier, adReviewCreativeId, and adInfo in that respective order. | ||
|  |         /// Executed on a background thread to avoid any delays in execution. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, string, MaxSdkBase.AdInfo> onAdReviewCreativeIdGeneratedEvent; | ||
|  |         public static event Action<string, string, MaxSdkBase.AdInfo> OnAdReviewCreativeIdGeneratedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdHiddenEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdHiddenEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnInterstitialAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnInterstitialAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static class AppOpen | ||
|  |     { | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdLoadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdLoadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo> onAdLoadFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo> OnAdLoadFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an app open ad is displayed (may not be received by Unity until the app open ad closes). | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdDisplayedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdDisplayedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> onAdDisplayFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> OnAdDisplayFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdClickedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdClickedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdClickedEvent"); | ||
|  |                 onAdClickedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdClickedEvent"); | ||
|  |                 onAdClickedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an app open ad impression was validated and revenue will be paid. | ||
|  |         /// Executed on a background thread to avoid any delays in execution. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdRevenuePaidEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdRevenuePaidEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an expired app open ad is reloaded. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> onExpiredAdReloadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> OnExpiredAdReloadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnExpiredAppOpenAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnExpiredAppOpenAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdHiddenEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdHiddenEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnAppOpenAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnAppOpenAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  |     public static class Rewarded | ||
|  |     { | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdLoadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdLoadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo> onAdLoadFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo> OnAdLoadFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         ///Fired when a rewarded ad is displayed (may not be received by Unity until the rewarded ad closes). | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdDisplayedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdDisplayedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdDisplayedEvent"); | ||
|  |                 onAdDisplayedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> onAdDisplayFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo, MaxSdkBase.AdInfo> OnAdDisplayFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdDisplayFailedEvent"); | ||
|  |                 onAdDisplayFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdClickedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdClickedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdClickedEvent"); | ||
|  |                 onAdClickedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdClickedEvent"); | ||
|  |                 onAdClickedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when a rewarded ad impression was validated and revenue will be paid. | ||
|  |         /// Executed on a background thread to avoid any delays in execution. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdRevenuePaidEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdRevenuePaidEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an expired rewarded ad is reloaded. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> onExpiredAdReloadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo, MaxSdkBase.AdInfo> OnExpiredAdReloadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnExpiredRewardedAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnExpiredRewardedAdReloadedEvent"); | ||
|  |                 onExpiredAdReloadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an Ad Review Creative ID has been generated. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, string, MaxSdkBase.AdInfo> onAdReviewCreativeIdGeneratedEvent; | ||
|  |         public static event Action<string, string, MaxSdkBase.AdInfo> OnAdReviewCreativeIdGeneratedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.Reward, MaxSdkBase.AdInfo> onAdReceivedRewardEvent; | ||
|  |         public static event Action<string, MaxSdkBase.Reward, MaxSdkBase.AdInfo> OnAdReceivedRewardEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdReceivedRewardEvent"); | ||
|  |                 onAdReceivedRewardEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdReceivedRewardEvent"); | ||
|  |                 onAdReceivedRewardEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdHiddenEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdHiddenEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnRewardedAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnRewardedAdHiddenEvent"); | ||
|  |                 onAdHiddenEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  |     public static class Banner | ||
|  |     { | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdLoadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdLoadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo> onAdLoadFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo> OnAdLoadFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdClickedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdClickedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdClickedEvent"); | ||
|  |                 onAdClickedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdClickedEvent"); | ||
|  |                 onAdClickedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdRevenuePaidEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdRevenuePaidEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, string, MaxSdkBase.AdInfo> onAdReviewCreativeIdGeneratedEvent; | ||
|  |         public static event Action<string, string, MaxSdkBase.AdInfo> OnAdReviewCreativeIdGeneratedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdExpandedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdExpandedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdExpandedEvent"); | ||
|  |                 onAdExpandedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdExpandedEvent"); | ||
|  |                 onAdExpandedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdCollapsedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdCollapsedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnBannerAdCollapsedEvent"); | ||
|  |                 onAdCollapsedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnBannerAdCollapsedEvent"); | ||
|  |                 onAdCollapsedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static class MRec | ||
|  |     { | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdLoadedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdLoadedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdLoadedEvent"); | ||
|  |                 onAdLoadedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.ErrorInfo> onAdLoadFailedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.ErrorInfo> OnAdLoadFailedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdLoadFailedEvent"); | ||
|  |                 onAdLoadFailedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdClickedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdClickedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdClickedEvent"); | ||
|  |                 onAdClickedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdClickedEvent"); | ||
|  |                 onAdClickedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdRevenuePaidEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdRevenuePaidEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdRevenuePaidEvent"); | ||
|  |                 onAdRevenuePaidEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Fired when an Ad Review Creative ID has been generated. | ||
|  |         /// </summary> | ||
|  |         internal static Action<string, string, MaxSdkBase.AdInfo> onAdReviewCreativeIdGeneratedEvent; | ||
|  |         public static event Action<string, string, MaxSdkBase.AdInfo> OnAdReviewCreativeIdGeneratedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdReviewCreativeIdGeneratedEvent"); | ||
|  |                 onAdReviewCreativeIdGeneratedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdExpandedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdExpandedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdExpandedEvent"); | ||
|  |                 onAdExpandedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdExpandedEvent"); | ||
|  |                 onAdExpandedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static Action<string, MaxSdkBase.AdInfo> onAdCollapsedEvent; | ||
|  |         public static event Action<string, MaxSdkBase.AdInfo> OnAdCollapsedEvent | ||
|  |         { | ||
|  |             add | ||
|  |             { | ||
|  |                 LogSubscribedToEvent("OnMRecAdCollapsedEvent"); | ||
|  |                 onAdCollapsedEvent += value; | ||
|  |             } | ||
|  |             remove | ||
|  |             { | ||
|  |                 LogUnsubscribedToEvent("OnMRecAdCollapsedEvent"); | ||
|  |                 onAdCollapsedEvent -= value; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public static void ForwardEvent(string eventPropsStr) | ||
|  |     { | ||
|  |         var eventProps = Json.Deserialize(eventPropsStr) as Dictionary<string, object>; | ||
|  |         if (eventProps == null) | ||
|  |         { | ||
|  |             MaxSdkLogger.E("Failed to forward event due to invalid event data"); | ||
|  |             return; | ||
|  |         } | ||
|  | 
 | ||
|  |         var keepInBackground = MaxSdkUtils.GetBoolFromDictionary(eventProps, "keepInBackground", false); | ||
|  |         var eventName = MaxSdkUtils.GetStringFromDictionary(eventProps, "name", ""); | ||
|  |         if (eventName == "OnInitialCallbackEvent") | ||
|  |         { | ||
|  |             MaxSdkLogger.D("Initial background callback."); | ||
|  |         } | ||
|  |         else if (eventName == "OnSdkInitializedEvent") | ||
|  |         { | ||
|  |             var sdkConfiguration = MaxSdkBase.SdkConfiguration.Create(eventProps); | ||
|  |             InvokeEvent(onSdkInitializedEvent, sdkConfiguration, eventName, keepInBackground); | ||
|  |         } | ||
|  |         else if (eventName == "OnCmpCompletedEvent") | ||
|  |         { | ||
|  |             var errorProps = MaxSdkUtils.GetDictionaryFromDictionary(eventProps, "error"); | ||
|  |             MaxCmpService.NotifyCompletedIfNeeded(errorProps); | ||
|  |         } | ||
|  |         else if (eventName == "OnApplicationStateChanged") | ||
|  |         { | ||
|  |             var isPaused = MaxSdkUtils.GetBoolFromDictionary(eventProps, "isPaused"); | ||
|  |             InvokeEvent(onApplicationStateChangedEvent, isPaused, eventName, keepInBackground); | ||
|  |         } | ||
|  |         // Ad Events | ||
|  |         else | ||
|  |         { | ||
|  |             var isExpiredAdReloadedEvent = Regex.IsMatch(eventName, @"^OnExpired\w+AdReloadedEvent$"); | ||
|  |             var adInfoEventProps = isExpiredAdReloadedEvent ? MaxSdkUtils.GetDictionaryFromDictionary(eventProps, "newAdInfo") : eventProps; | ||
|  |             var adInfo = new MaxSdkBase.AdInfo(adInfoEventProps); | ||
|  |             var adUnitIdentifier = MaxSdkUtils.GetStringFromDictionary(adInfoEventProps, "adUnitId", ""); | ||
|  | 
 | ||
|  |             // Expired ad reloaded callbacks pass down multiple adInfo objects | ||
|  |             if (isExpiredAdReloadedEvent) | ||
|  |             { | ||
|  |                 var expiredAdInfo = new MaxSdkBase.AdInfo(MaxSdkUtils.GetDictionaryFromDictionary(eventProps, "expiredAdInfo")); | ||
|  |                 if (eventName == "OnExpiredInterstitialAdReloadedEvent") | ||
|  |                 { | ||
|  |                     InvokeEvent(Interstitial.onExpiredAdReloadedEvent, adUnitIdentifier, expiredAdInfo, adInfo, eventName, keepInBackground); | ||
|  |                 } | ||
|  |                 else if (eventName == "OnExpiredAppOpenAdReloadedEvent") | ||
|  |                 { | ||
|  |                     InvokeEvent(AppOpen.onExpiredAdReloadedEvent, adUnitIdentifier, expiredAdInfo, adInfo, eventName, keepInBackground); | ||
|  |                 } | ||
|  |                 else if (eventName == "OnExpiredRewardedAdReloadedEvent") | ||
|  |                 { | ||
|  |                     InvokeEvent(Rewarded.onExpiredAdReloadedEvent, adUnitIdentifier, expiredAdInfo, adInfo, eventName, keepInBackground); | ||
|  |                 } | ||
|  |                 else | ||
|  |                 { | ||
|  |                     MaxSdkLogger.UserWarning("Unknown MAX Ads event fired: " + eventName); | ||
|  |                 } | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdLoadedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Banner.onAdLoadedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdLoadFailedEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(Banner.onAdLoadFailedEvent, adUnitIdentifier, errorInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdClickedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Banner.onAdClickedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdRevenuePaidEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Banner.onAdRevenuePaidEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdReviewCreativeIdGeneratedEvent") | ||
|  |             { | ||
|  |                 var adReviewCreativeId = MaxSdkUtils.GetStringFromDictionary(eventProps, "adReviewCreativeId", ""); | ||
|  |                 InvokeEvent(Banner.onAdReviewCreativeIdGeneratedEvent, adUnitIdentifier, adReviewCreativeId, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdExpandedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Banner.onAdExpandedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnBannerAdCollapsedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Banner.onAdCollapsedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdLoadedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(MRec.onAdLoadedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdLoadFailedEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(MRec.onAdLoadFailedEvent, adUnitIdentifier, errorInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdClickedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(MRec.onAdClickedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdRevenuePaidEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(MRec.onAdRevenuePaidEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdReviewCreativeIdGeneratedEvent") | ||
|  |             { | ||
|  |                 var adReviewCreativeId = MaxSdkUtils.GetStringFromDictionary(eventProps, "adReviewCreativeId", ""); | ||
|  |                 InvokeEvent(MRec.onAdReviewCreativeIdGeneratedEvent, adUnitIdentifier, adReviewCreativeId, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdExpandedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(MRec.onAdExpandedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnMRecAdCollapsedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(MRec.onAdCollapsedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialLoadedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Interstitial.onAdLoadedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialLoadFailedEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(Interstitial.onAdLoadFailedEvent, adUnitIdentifier, errorInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialHiddenEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Interstitial.onAdHiddenEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialDisplayedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Interstitial.onAdDisplayedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialAdFailedToDisplayEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(Interstitial.onAdDisplayFailedEvent, adUnitIdentifier, errorInfo, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialClickedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Interstitial.onAdClickedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialAdRevenuePaidEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Interstitial.onAdRevenuePaidEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnInterstitialAdReviewCreativeIdGeneratedEvent") | ||
|  |             { | ||
|  |                 var adReviewCreativeId = MaxSdkUtils.GetStringFromDictionary(eventProps, "adReviewCreativeId", ""); | ||
|  |                 InvokeEvent(Interstitial.onAdReviewCreativeIdGeneratedEvent, adUnitIdentifier, adReviewCreativeId, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdLoadedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(AppOpen.onAdLoadedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdLoadFailedEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(AppOpen.onAdLoadFailedEvent, adUnitIdentifier, errorInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdHiddenEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(AppOpen.onAdHiddenEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdDisplayedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(AppOpen.onAdDisplayedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdFailedToDisplayEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(AppOpen.onAdDisplayFailedEvent, adUnitIdentifier, errorInfo, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdClickedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(AppOpen.onAdClickedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnAppOpenAdRevenuePaidEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(AppOpen.onAdRevenuePaidEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdLoadedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Rewarded.onAdLoadedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdLoadFailedEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(Rewarded.onAdLoadFailedEvent, adUnitIdentifier, errorInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdDisplayedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Rewarded.onAdDisplayedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdHiddenEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Rewarded.onAdHiddenEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdClickedEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Rewarded.onAdClickedEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdRevenuePaidEvent") | ||
|  |             { | ||
|  |                 InvokeEvent(Rewarded.onAdRevenuePaidEvent, adUnitIdentifier, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdReviewCreativeIdGeneratedEvent") | ||
|  |             { | ||
|  |                 var adReviewCreativeId = MaxSdkUtils.GetStringFromDictionary(eventProps, "adReviewCreativeId", ""); | ||
|  |                 InvokeEvent(Rewarded.onAdReviewCreativeIdGeneratedEvent, adUnitIdentifier, adReviewCreativeId, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdFailedToDisplayEvent") | ||
|  |             { | ||
|  |                 var errorInfo = new MaxSdkBase.ErrorInfo(eventProps); | ||
|  |                 InvokeEvent(Rewarded.onAdDisplayFailedEvent, adUnitIdentifier, errorInfo, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else if (eventName == "OnRewardedAdReceivedRewardEvent") | ||
|  |             { | ||
|  |                 var reward = new MaxSdkBase.Reward | ||
|  |                 { | ||
|  |                     Label = MaxSdkUtils.GetStringFromDictionary(eventProps, "rewardLabel", ""), | ||
|  |                     Amount = MaxSdkUtils.GetIntFromDictionary(eventProps, "rewardAmount", 0) | ||
|  |                 }; | ||
|  | 
 | ||
|  |                 InvokeEvent(Rewarded.onAdReceivedRewardEvent, adUnitIdentifier, reward, adInfo, eventName, keepInBackground); | ||
|  |             } | ||
|  |             else | ||
|  |             { | ||
|  |                 MaxSdkLogger.UserWarning("Unknown MAX Ads event fired: " + eventName); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | #if UNITY_EDITOR | ||
|  |     public static void EmitSdkInitializedEvent() | ||
|  |     { | ||
|  |         if (onSdkInitializedEvent == null) return; | ||
|  | 
 | ||
|  |         onSdkInitializedEvent(MaxSdkBase.SdkConfiguration.CreateEmpty()); | ||
|  |     } | ||
|  | #endif | ||
|  | 
 | ||
|  |     private static void InvokeEvent(Action evt, string eventName, bool keepInBackground) | ||
|  |     { | ||
|  |         if (!CanInvokeEvent(evt)) return; | ||
|  | 
 | ||
|  |         MaxSdkLogger.UserDebug("Invoking event: " + eventName); | ||
|  |         if (ShouldInvokeInBackground(keepInBackground)) | ||
|  |         { | ||
|  |             try | ||
|  |             { | ||
|  |                 evt(); | ||
|  |             } | ||
|  |             catch (Exception exception) | ||
|  |             { | ||
|  |                 MaxSdkLogger.UserError("Caught exception in publisher event: " + eventName + ", exception: " + exception); | ||
|  |                 MaxSdkLogger.LogException(exception); | ||
|  |             } | ||
|  |         } | ||
|  |         else | ||
|  |         { | ||
|  |             MaxEventExecutor.ExecuteOnMainThread(evt, eventName); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     private static void InvokeEvent<T>(Action<T> evt, T param, string eventName, bool keepInBackground) | ||
|  |     { | ||
|  |         if (!CanInvokeEvent(evt)) return; | ||
|  | 
 | ||
|  |         MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Param: " + param); | ||
|  |         if (ShouldInvokeInBackground(keepInBackground)) | ||
|  |         { | ||
|  |             try | ||
|  |             { | ||
|  |                 evt(param); | ||
|  |             } | ||
|  |             catch (Exception exception) | ||
|  |             { | ||
|  |                 MaxSdkLogger.UserError("Caught exception in publisher event: " + eventName + ", exception: " + exception); | ||
|  |                 MaxSdkLogger.LogException(exception); | ||
|  |             } | ||
|  |         } | ||
|  |         else | ||
|  |         { | ||
|  |             MaxEventExecutor.ExecuteOnMainThread(() => evt(param), eventName); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     private static void InvokeEvent<T1, T2>(Action<T1, T2> evt, T1 param1, T2 param2, string eventName, bool keepInBackground) | ||
|  |     { | ||
|  |         if (!CanInvokeEvent(evt)) return; | ||
|  | 
 | ||
|  |         MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Params: " + param1 + ", " + param2); | ||
|  |         if (ShouldInvokeInBackground(keepInBackground)) | ||
|  |         { | ||
|  |             try | ||
|  |             { | ||
|  |                 evt(param1, param2); | ||
|  |             } | ||
|  |             catch (Exception exception) | ||
|  |             { | ||
|  |                 MaxSdkLogger.UserError("Caught exception in publisher event: " + eventName + ", exception: " + exception); | ||
|  |                 MaxSdkLogger.LogException(exception); | ||
|  |             } | ||
|  |         } | ||
|  |         else | ||
|  |         { | ||
|  |             MaxEventExecutor.ExecuteOnMainThread(() => evt(param1, param2), eventName); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     private static void InvokeEvent<T1, T2, T3>(Action<T1, T2, T3> evt, T1 param1, T2 param2, T3 param3, string eventName, bool keepInBackground) | ||
|  |     { | ||
|  |         if (!CanInvokeEvent(evt)) return; | ||
|  | 
 | ||
|  |         MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Params: " + param1 + ", " + param2 + ", " + param3); | ||
|  |         if (ShouldInvokeInBackground(keepInBackground)) | ||
|  |         { | ||
|  |             try | ||
|  |             { | ||
|  |                 evt(param1, param2, param3); | ||
|  |             } | ||
|  |             catch (Exception exception) | ||
|  |             { | ||
|  |                 MaxSdkLogger.UserError("Caught exception in publisher event: " + eventName + ", exception: " + exception); | ||
|  |                 MaxSdkLogger.LogException(exception); | ||
|  |             } | ||
|  |         } | ||
|  |         else | ||
|  |         { | ||
|  |             MaxEventExecutor.ExecuteOnMainThread(() => evt(param1, param2, param3), eventName); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     private static bool CanInvokeEvent(Delegate evt) | ||
|  |     { | ||
|  |         if (evt == null) return false; | ||
|  | 
 | ||
|  |         // Check that publisher is not over-subscribing | ||
|  |         if (evt.GetInvocationList().Length > 5) | ||
|  |         { | ||
|  |             MaxSdkLogger.UserWarning("Ads Event (" + evt + ") has over 5 subscribers. Please make sure you are properly un-subscribing to actions!!!"); | ||
|  |         } | ||
|  | 
 | ||
|  |         return true; | ||
|  |     } | ||
|  | 
 | ||
|  |     private static bool ShouldInvokeInBackground(bool keepInBackground) | ||
|  |     { | ||
|  |         return MaxSdkBase.InvokeEventsOnUnityMainThread == null ? keepInBackground : !MaxSdkBase.InvokeEventsOnUnityMainThread.Value; | ||
|  |     } | ||
|  | 
 | ||
|  |     private static void LogSubscribedToEvent(string eventName) | ||
|  |     { | ||
|  |         MaxSdkLogger.D("Listener has been added to callback: " + eventName); | ||
|  |     } | ||
|  | 
 | ||
|  |     private static void LogUnsubscribedToEvent(string eventName) | ||
|  |     { | ||
|  |         MaxSdkLogger.D("Listener has been removed from callback: " + eventName); | ||
|  |     } | ||
|  | 
 | ||
|  | #if UNITY_EDITOR && UNITY_2019_2_OR_NEWER | ||
|  |     /// <summary> | ||
|  |     /// Resets static event handlers so they still get reset even if Domain Reloading is disabled | ||
|  |     /// </summary> | ||
|  |     [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] | ||
|  |     private static void ResetOnDomainReload() | ||
|  |     { | ||
|  |         onSdkInitializedEvent = null; | ||
|  | 
 | ||
|  |         Interstitial.onAdLoadedEvent = null; | ||
|  |         Interstitial.onAdLoadFailedEvent = null; | ||
|  |         Interstitial.onAdDisplayedEvent = null; | ||
|  |         Interstitial.onAdDisplayFailedEvent = null; | ||
|  |         Interstitial.onAdClickedEvent = null; | ||
|  |         Interstitial.onAdRevenuePaidEvent = null; | ||
|  |         Interstitial.onAdReviewCreativeIdGeneratedEvent = null; | ||
|  |         Interstitial.onAdHiddenEvent = null; | ||
|  | 
 | ||
|  |         AppOpen.onAdLoadedEvent = null; | ||
|  |         AppOpen.onAdLoadFailedEvent = null; | ||
|  |         AppOpen.onAdDisplayedEvent = null; | ||
|  |         AppOpen.onAdDisplayFailedEvent = null; | ||
|  |         AppOpen.onAdClickedEvent = null; | ||
|  |         AppOpen.onAdRevenuePaidEvent = null; | ||
|  |         AppOpen.onAdHiddenEvent = null; | ||
|  | 
 | ||
|  |         Rewarded.onAdLoadedEvent = null; | ||
|  |         Rewarded.onAdLoadFailedEvent = null; | ||
|  |         Rewarded.onAdDisplayedEvent = null; | ||
|  |         Rewarded.onAdDisplayFailedEvent = null; | ||
|  |         Rewarded.onAdClickedEvent = null; | ||
|  |         Rewarded.onAdRevenuePaidEvent = null; | ||
|  |         Rewarded.onAdReviewCreativeIdGeneratedEvent = null; | ||
|  |         Rewarded.onAdReceivedRewardEvent = null; | ||
|  |         Rewarded.onAdHiddenEvent = null; | ||
|  | 
 | ||
|  |         Banner.onAdLoadedEvent = null; | ||
|  |         Banner.onAdLoadFailedEvent = null; | ||
|  |         Banner.onAdClickedEvent = null; | ||
|  |         Banner.onAdRevenuePaidEvent = null; | ||
|  |         Banner.onAdReviewCreativeIdGeneratedEvent = null; | ||
|  |         Banner.onAdExpandedEvent = null; | ||
|  |         Banner.onAdCollapsedEvent = null; | ||
|  | 
 | ||
|  |         MRec.onAdLoadedEvent = null; | ||
|  |         MRec.onAdLoadFailedEvent = null; | ||
|  |         MRec.onAdClickedEvent = null; | ||
|  |         MRec.onAdRevenuePaidEvent = null; | ||
|  |         MRec.onAdReviewCreativeIdGeneratedEvent = null; | ||
|  |         MRec.onAdExpandedEvent = null; | ||
|  |         MRec.onAdCollapsedEvent = null; | ||
|  | 
 | ||
|  |     } | ||
|  | #endif | ||
|  | } |