341 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			341 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
|  | #if UNITY_WSA | ||
|  | using System; | ||
|  | using System.Collections; | ||
|  | using System.Collections.Generic; | ||
|  | using System.Reflection; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | #if UNITY_WSA_10_0 | ||
|  | using Win10Interface; | ||
|  | #elif UNITY_WP_8_1 | ||
|  | using Win81Interface; | ||
|  | #elif UNITY_WSA | ||
|  | using WinWsInterface; | ||
|  | #endif | ||
|  | 
 | ||
|  | namespace com.adjust.sdk | ||
|  | { | ||
|  |     public class AdjustWindows | ||
|  |     { | ||
|  |         private const string sdkPrefix = "unity4.36.0"; | ||
|  |         private static bool appLaunched = false; | ||
|  | 
 | ||
|  |         public static void Start(AdjustConfig adjustConfig) | ||
|  |         { | ||
|  |             string logLevelString = null; | ||
|  |             string environment = adjustConfig.environment.ToLowercaseString(); | ||
|  | 
 | ||
|  |             Action<Dictionary<string, string>> attributionChangedAction = null; | ||
|  |             Action<Dictionary<string, string>> sessionSuccessChangedAction = null; | ||
|  |             Action<Dictionary<string, string>> sessionFailureChangedAction = null; | ||
|  |             Action<Dictionary<string, string>> eventSuccessChangedAction = null; | ||
|  |             Action<Dictionary<string, string>> eventFailureChangedAction = null; | ||
|  |             Func<string, bool> deeplinkResponseFunc = null; | ||
|  | 
 | ||
|  |             if (adjustConfig.logLevel.HasValue) | ||
|  |             { | ||
|  |                 logLevelString = adjustConfig.logLevel.Value.ToLowercaseString(); | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.attributionChangedDelegate != null) | ||
|  |             { | ||
|  |                 attributionChangedAction = (attributionMap) => | ||
|  |                 { | ||
|  |                     var attribution = new AdjustAttribution(attributionMap); | ||
|  |                     adjustConfig.attributionChangedDelegate(attribution); | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.sessionSuccessDelegate != null) | ||
|  |             { | ||
|  |                 sessionSuccessChangedAction = (sessionMap) => | ||
|  |                 { | ||
|  |                     var sessionData = new AdjustSessionSuccess(sessionMap); | ||
|  |                     adjustConfig.sessionSuccessDelegate(sessionData); | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.sessionFailureDelegate != null) | ||
|  |             { | ||
|  |                 sessionFailureChangedAction = (sessionMap) => | ||
|  |                 { | ||
|  |                     var sessionData = new AdjustSessionFailure(sessionMap); | ||
|  |                     adjustConfig.sessionFailureDelegate(sessionData); | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.eventSuccessDelegate != null) | ||
|  |             { | ||
|  |                 eventSuccessChangedAction = (eventMap) => | ||
|  |                 { | ||
|  |                     var eventData = new AdjustEventSuccess(eventMap); | ||
|  |                     adjustConfig.eventSuccessDelegate(eventData); | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.eventFailureDelegate != null) | ||
|  |             { | ||
|  |                 eventFailureChangedAction = (eventMap) => | ||
|  |                 { | ||
|  |                     var eventData = new AdjustEventFailure(eventMap); | ||
|  |                     adjustConfig.eventFailureDelegate(eventData); | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (adjustConfig.deferredDeeplinkDelegate != null) | ||
|  |             { | ||
|  |                 deeplinkResponseFunc = uri => | ||
|  |                 { | ||
|  |                     if (adjustConfig.launchDeferredDeeplink) | ||
|  |                     { | ||
|  |                         adjustConfig.deferredDeeplinkDelegate(uri); | ||
|  |                     } | ||
|  |                      | ||
|  |                     return adjustConfig.launchDeferredDeeplink; | ||
|  |                 }; | ||
|  |             } | ||
|  | 
 | ||
|  |             bool sendInBackground = false; | ||
|  |             if (adjustConfig.sendInBackground.HasValue) | ||
|  |             { | ||
|  |                 sendInBackground = adjustConfig.sendInBackground.Value; | ||
|  |             } | ||
|  | 
 | ||
|  |             double delayStartSeconds = 0; | ||
|  |             if (adjustConfig.delayStart.HasValue) | ||
|  |             { | ||
|  |                 delayStartSeconds = adjustConfig.delayStart.Value; | ||
|  |             } | ||
|  | 
 | ||
|  |             AdjustConfigDto adjustConfigDto = new AdjustConfigDto { | ||
|  |                 AppToken = adjustConfig.appToken, | ||
|  |                 Environment = environment, | ||
|  |                 SdkPrefix = sdkPrefix, | ||
|  |                 SendInBackground = sendInBackground, | ||
|  |                 DelayStart = delayStartSeconds, | ||
|  |                 UserAgent = adjustConfig.userAgent, | ||
|  |                 DefaultTracker = adjustConfig.defaultTracker, | ||
|  |                 EventBufferingEnabled = adjustConfig.eventBufferingEnabled, | ||
|  |                 LaunchDeferredDeeplink = adjustConfig.launchDeferredDeeplink, | ||
|  |                 LogLevelString = logLevelString, | ||
|  |                 LogDelegate = adjustConfig.logDelegate, | ||
|  |                 ActionAttributionChangedData = attributionChangedAction, | ||
|  |                 ActionSessionSuccessData = sessionSuccessChangedAction, | ||
|  |                 ActionSessionFailureData = sessionFailureChangedAction, | ||
|  |                 ActionEventSuccessData = eventSuccessChangedAction, | ||
|  |                 ActionEventFailureData = eventFailureChangedAction, | ||
|  |                 FuncDeeplinkResponseData = deeplinkResponseFunc, | ||
|  |                 IsDeviceKnown = adjustConfig.isDeviceKnown, | ||
|  |                 SecretId = adjustConfig.secretId, | ||
|  |                 Info1 = adjustConfig.info1, | ||
|  |                 Info2 = adjustConfig.info2, | ||
|  |                 Info3 = adjustConfig.info3, | ||
|  |                 Info4 = adjustConfig.info4 | ||
|  |             }; | ||
|  | 
 | ||
|  |             AdjustWinInterface.ApplicationLaunching(adjustConfigDto); | ||
|  |             AdjustWinInterface.ApplicationActivated(); | ||
|  |             appLaunched = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void TrackEvent(AdjustEvent adjustEvent) | ||
|  |         { | ||
|  |             AdjustWinInterface.TrackEvent( | ||
|  |                 eventToken: adjustEvent.eventToken, | ||
|  |                 revenue: adjustEvent.revenue, | ||
|  |                 currency: adjustEvent.currency, | ||
|  |                 purchaseId: adjustEvent.transactionId, | ||
|  |                 callbackId: adjustEvent.callbackId,            | ||
|  |                 callbackList: adjustEvent.callbackList, | ||
|  |                 partnerList: adjustEvent.partnerList | ||
|  |             ); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static bool IsEnabled() | ||
|  |         { | ||
|  |             return AdjustWinInterface.IsEnabled(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void OnResume() | ||
|  |         { | ||
|  |             if (!appLaunched) | ||
|  |             { | ||
|  |                 return; | ||
|  |             } | ||
|  | 
 | ||
|  |             AdjustWinInterface.ApplicationActivated(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void OnPause() | ||
|  |         { | ||
|  |             AdjustWinInterface.ApplicationDeactivated(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void SetEnabled(bool enabled) | ||
|  |         { | ||
|  |             AdjustWinInterface.SetEnabled(enabled); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void SetOfflineMode(bool offlineMode) | ||
|  |         { | ||
|  |             AdjustWinInterface.SetOfflineMode(offlineMode); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void SendFirstPackages() | ||
|  |         { | ||
|  |             AdjustWinInterface.SendFirstPackages(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void SetDeviceToken(string deviceToken) | ||
|  |         { | ||
|  |             AdjustWinInterface.SetDeviceToken(deviceToken); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void AppWillOpenUrl(string url) | ||
|  |         { | ||
|  |             AdjustWinInterface.AppWillOpenUrl(url); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void AddSessionPartnerParameter(string key, string value) | ||
|  |         { | ||
|  |             AdjustWinInterface.AddSessionPartnerParameter(key, value); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void AddSessionCallbackParameter(string key, string value) | ||
|  |         { | ||
|  |             AdjustWinInterface.AddSessionCallbackParameter(key, value); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void RemoveSessionPartnerParameter(string key) | ||
|  |         { | ||
|  |             AdjustWinInterface.RemoveSessionPartnerParameter(key); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void RemoveSessionCallbackParameter(string key) | ||
|  |         { | ||
|  |             AdjustWinInterface.RemoveSessionCallbackParameter(key); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void ResetSessionPartnerParameters() | ||
|  |         { | ||
|  |             AdjustWinInterface.ResetSessionPartnerParameters(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void ResetSessionCallbackParameters() | ||
|  |         { | ||
|  |             AdjustWinInterface.ResetSessionCallbackParameters(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static string GetAdid() | ||
|  |         { | ||
|  |             return AdjustWinInterface.GetAdid(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static string GetSdkVersion() | ||
|  |         { | ||
|  |             return sdkPrefix + "@" + AdjustWinInterface.GetSdkVersion(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static AdjustAttribution GetAttribution() | ||
|  |         { | ||
|  |             var attributionMap = AdjustWinInterface.GetAttribution(); | ||
|  |             if (attributionMap == null) | ||
|  |             { | ||
|  |                 return new AdjustAttribution(); | ||
|  |             } | ||
|  | 
 | ||
|  |             return new AdjustAttribution(attributionMap); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void GdprForgetMe() | ||
|  |         { | ||
|  |             AdjustWinInterface.GdprForgetMe(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static string GetWinAdId() | ||
|  |         { | ||
|  |             return AdjustWinInterface.GetWindowsAdId(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static void SetTestOptions(Dictionary<string, string> testOptions) | ||
|  |         { | ||
|  |             string basePath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsBasePath) ?  | ||
|  |                 testOptions[AdjustUtils.KeyTestOptionsBasePath] : null; | ||
|  |             string gdprPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsGdprPath) ? | ||
|  |                 testOptions[AdjustUtils.KeyTestOptionsGdprPath] : null; | ||
|  |             long timerIntervalMls = -1; | ||
|  |             long timerStartMls = -1; | ||
|  |             long sessionIntMls = -1; | ||
|  |             long subsessionIntMls = -1; | ||
|  |             bool teardown = false; | ||
|  |             bool deleteState = false; | ||
|  |             bool noBackoffWait = false; | ||
|  | 
 | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds)) | ||
|  |             { | ||
|  |                 timerIntervalMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds]); | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerStartInMilliseconds)) | ||
|  |             { | ||
|  |                 timerStartMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsTimerStartInMilliseconds]); | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsSessionIntervalInMilliseconds)) | ||
|  |             { | ||
|  |                 sessionIntMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsSessionIntervalInMilliseconds]); | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsSubsessionIntervalInMilliseconds)) | ||
|  |             { | ||
|  |                 subsessionIntMls = long.Parse(testOptions[AdjustUtils.KeyTestOptionsSubsessionIntervalInMilliseconds]); | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTeardown)) | ||
|  |             { | ||
|  |                 teardown = testOptions[AdjustUtils.KeyTestOptionsTeardown].ToLower() == "true"; | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsDeleteState)) | ||
|  |             { | ||
|  |                 deleteState = testOptions[AdjustUtils.KeyTestOptionsDeleteState].ToLower() == "true"; | ||
|  |             } | ||
|  |             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsNoBackoffWait)) | ||
|  |             { | ||
|  |                 noBackoffWait = testOptions[AdjustUtils.KeyTestOptionsNoBackoffWait].ToLower() == "true"; | ||
|  |             } | ||
|  | 
 | ||
|  |             Type testLibInterfaceType = Type.GetType("TestLibraryInterface.TestLibraryInterface, TestLibraryInterface"); | ||
|  |             Type adjustTestOptionsDtoType = Type.GetType("TestLibraryInterface.AdjustTestOptionsDto, TestLibraryInterface"); | ||
|  |             if (testLibInterfaceType == null || adjustTestOptionsDtoType == null) | ||
|  |             { | ||
|  |                 return; | ||
|  |             } | ||
|  | 
 | ||
|  |             PropertyInfo baseUrlInfo = adjustTestOptionsDtoType.GetProperty("BaseUrl"); | ||
|  |             PropertyInfo gdprUrlInfo = adjustTestOptionsDtoType.GetProperty("GdprUrl"); | ||
|  |             PropertyInfo basePathInfo = adjustTestOptionsDtoType.GetProperty("BasePath"); | ||
|  |             PropertyInfo gdprPathInfo = adjustTestOptionsDtoType.GetProperty("GdprPath"); | ||
|  |             PropertyInfo sessionIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("SessionIntervalInMilliseconds"); | ||
|  |             PropertyInfo subsessionIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("SubsessionIntervalInMilliseconds"); | ||
|  |             PropertyInfo timerIntervalInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("TimerIntervalInMilliseconds"); | ||
|  |             PropertyInfo timerStartInMillisecondsInfo = adjustTestOptionsDtoType.GetProperty("TimerStartInMilliseconds"); | ||
|  |             PropertyInfo deleteStateInfo = adjustTestOptionsDtoType.GetProperty("DeleteState"); | ||
|  |             PropertyInfo teardownInfo = adjustTestOptionsDtoType.GetProperty("Teardown"); | ||
|  |             PropertyInfo noBackoffWaitInfo = adjustTestOptionsDtoType.GetProperty("NoBackoffWait"); | ||
|  | 
 | ||
|  |             object adjustTestOptionsDtoInstance = Activator.CreateInstance(adjustTestOptionsDtoType); | ||
|  |             baseUrlInfo.SetValue(adjustTestOptionsDtoInstance, testOptions[AdjustUtils.KeyTestOptionsBaseUrl], null); | ||
|  |             gdprUrlInfo.SetValue(adjustTestOptionsDtoInstance, testOptions[AdjustUtils.KeyTestOptionsGdprUrl], null); | ||
|  |             basePathInfo.SetValue(adjustTestOptionsDtoInstance, basePath, null); | ||
|  |             gdprPathInfo.SetValue(adjustTestOptionsDtoInstance, gdprPath, null); | ||
|  |             sessionIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, sessionIntMls, null); | ||
|  |             subsessionIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, subsessionIntMls, null); | ||
|  |             timerIntervalInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, timerIntervalMls, null); | ||
|  |             timerStartInMillisecondsInfo.SetValue(adjustTestOptionsDtoInstance, timerStartMls, null); | ||
|  |             deleteStateInfo.SetValue(adjustTestOptionsDtoInstance, deleteState, null); | ||
|  |             teardownInfo.SetValue(adjustTestOptionsDtoInstance, teardown, null); | ||
|  |             noBackoffWaitInfo.SetValue(adjustTestOptionsDtoInstance, noBackoffWait, null); | ||
|  | 
 | ||
|  |             MethodInfo setTestOptionsMethodInfo = testLibInterfaceType.GetMethod("SetTestOptions"); | ||
|  |             setTestOptionsMethodInfo.Invoke(null, new object[] { adjustTestOptionsDtoInstance }); | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | #endif |