| 
									
										
										
										
											2023-12-26 03:52:53 +00:00
										 |  |  | using System; | 
					
						
							|  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  | using System.Runtime.InteropServices; | 
					
						
							|  |  |  | using UnityEngine; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace com.adjust.sdk | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #if UNITY_ANDROID | 
					
						
							|  |  |  |     public class AdjustAndroid | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-04-16 05:30:31 +00:00
										 |  |  |         private const string sdkPrefix = "unity4.38.0"; | 
					
						
							| 
									
										
										
										
											2023-12-26 03:52:53 +00:00
										 |  |  |         private static bool launchDeferredDeeplink = true; | 
					
						
							|  |  |  |         private static AndroidJavaClass ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |         private static AndroidJavaObject ajoCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); | 
					
						
							|  |  |  |         private static DeferredDeeplinkListener onDeferredDeeplinkListener; | 
					
						
							|  |  |  |         private static AttributionChangeListener onAttributionChangedListener; | 
					
						
							|  |  |  |         private static EventTrackingFailedListener onEventTrackingFailedListener; | 
					
						
							|  |  |  |         private static EventTrackingSucceededListener onEventTrackingSucceededListener; | 
					
						
							|  |  |  |         private static SessionTrackingFailedListener onSessionTrackingFailedListener; | 
					
						
							|  |  |  |         private static SessionTrackingSucceededListener onSessionTrackingSucceededListener; | 
					
						
							|  |  |  |         private static VerificationInfoListener onVerificationInfoListener; | 
					
						
							| 
									
										
										
										
											2024-04-16 05:30:31 +00:00
										 |  |  |         private static DeeplinkResolutionListener onDeeplinkResolvedListener; | 
					
						
							| 
									
										
										
										
											2023-12-26 03:52:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         public static void Start(AdjustConfig adjustConfig) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             // Thank you, Unity 2019.2.0, for breaking this. | 
					
						
							|  |  |  |             // AndroidJavaObject ajoEnvironment = adjustConfig.environment == AdjustEnvironment.Sandbox ?  | 
					
						
							|  |  |  |             //     new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("ENVIRONMENT_SANDBOX") : | 
					
						
							|  |  |  |             //         new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("ENVIRONMENT_PRODUCTION"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Get environment variable. | 
					
						
							|  |  |  |             string ajoEnvironment = adjustConfig.environment == AdjustEnvironment.Production ? "production" : "sandbox"; | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  |             // Create adjust config object. | 
					
						
							|  |  |  |             AndroidJavaObject ajoAdjustConfig; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if suppress log leve is supported. | 
					
						
							|  |  |  |             if (adjustConfig.allowSuppressLogLevel != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig = new AndroidJavaObject("com.adjust.sdk.AdjustConfig", ajoCurrentActivity, adjustConfig.appToken, ajoEnvironment, adjustConfig.allowSuppressLogLevel); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig = new AndroidJavaObject("com.adjust.sdk.AdjustConfig", ajoCurrentActivity, adjustConfig.appToken, ajoEnvironment); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if deferred deeplink should be launched by SDK. | 
					
						
							|  |  |  |             launchDeferredDeeplink = adjustConfig.launchDeferredDeeplink; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check log level. | 
					
						
							|  |  |  |             if (adjustConfig.logLevel != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AndroidJavaObject ajoLogLevel; | 
					
						
							|  |  |  |                 if (adjustConfig.logLevel.Value.ToUppercaseString().Equals("SUPPRESS")) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     ajoLogLevel = new AndroidJavaClass("com.adjust.sdk.LogLevel").GetStatic<AndroidJavaObject>("SUPRESS"); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     ajoLogLevel = new AndroidJavaClass("com.adjust.sdk.LogLevel").GetStatic<AndroidJavaObject>(adjustConfig.logLevel.Value.ToUppercaseString()); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 if (ajoLogLevel != null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setLogLevel", ajoLogLevel); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Set unity SDK prefix. | 
					
						
							|  |  |  |             ajoAdjustConfig.Call("setSdkPrefix", sdkPrefix); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has configured the delayed start option. | 
					
						
							|  |  |  |             if (adjustConfig.delayStart != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setDelayStart", adjustConfig.delayStart); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check event buffering setting. | 
					
						
							|  |  |  |             if (adjustConfig.eventBufferingEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AndroidJavaObject ajoIsEnabled = new AndroidJavaObject("java.lang.Boolean", adjustConfig.eventBufferingEnabled.Value); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setEventBufferingEnabled", ajoIsEnabled); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check COPPA setting. | 
					
						
							|  |  |  |             if (adjustConfig.coppaCompliantEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setCoppaCompliantEnabled", adjustConfig.coppaCompliantEnabled.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check final Android attribution setting. | 
					
						
							|  |  |  |             if (adjustConfig.finalAndroidAttributionEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setFinalAttributionEnabled", adjustConfig.finalAndroidAttributionEnabled.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check read Android IDs only once. | 
					
						
							|  |  |  |             if (adjustConfig.readDeviceInfoOnceEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setReadDeviceInfoOnceEnabled", adjustConfig.readDeviceInfoOnceEnabled.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check Play Store Kids Apps setting. | 
					
						
							|  |  |  |             if (adjustConfig.playStoreKidsAppEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setPlayStoreKidsAppEnabled", adjustConfig.playStoreKidsAppEnabled.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user enabled tracking in the background. | 
					
						
							|  |  |  |             if (adjustConfig.sendInBackground != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setSendInBackground", adjustConfig.sendInBackground.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user wants to get cost data in attribution callback. | 
					
						
							|  |  |  |             if (adjustConfig.needsCost != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setNeedsCost", adjustConfig.needsCost.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user wants to run preinstall campaigns. | 
					
						
							|  |  |  |             if (adjustConfig.preinstallTrackingEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setPreinstallTrackingEnabled", adjustConfig.preinstallTrackingEnabled.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set custom preinstall file path. | 
					
						
							|  |  |  |             if (adjustConfig.preinstallFilePath != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setPreinstallFilePath", adjustConfig.preinstallFilePath); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if FB app ID has been set. | 
					
						
							|  |  |  |             if (adjustConfig.fbAppId != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setFbAppId", adjustConfig.fbAppId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set user agent value. | 
					
						
							|  |  |  |             if (adjustConfig.userAgent != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setUserAgent", adjustConfig.userAgent); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set default process name. | 
					
						
							|  |  |  |             if (!String.IsNullOrEmpty(adjustConfig.processName)) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setProcessName", adjustConfig.processName); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set default tracker token. | 
					
						
							|  |  |  |             if (adjustConfig.defaultTracker != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setDefaultTracker", adjustConfig.defaultTracker); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set external device identifier. | 
					
						
							|  |  |  |             if (adjustConfig.externalDeviceId != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setExternalDeviceId", adjustConfig.externalDeviceId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set custom URL strategy. | 
					
						
							|  |  |  |             if (adjustConfig.urlStrategy != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (adjustConfig.urlStrategy == AdjustConfig.AdjustUrlStrategyChina) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoUrlStrategyChina = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("URL_STRATEGY_CHINA"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoUrlStrategyChina); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustUrlStrategyIndia) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoUrlStrategyIndia = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("URL_STRATEGY_INDIA"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoUrlStrategyIndia); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustUrlStrategyCn) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoUrlStrategyCn = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("URL_STRATEGY_CN"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoUrlStrategyCn); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustUrlStrategyCnOnly) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoUrlStrategyCnOnly = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("URL_STRATEGY_CN_ONLY"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoUrlStrategyCnOnly); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustDataResidencyEU) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoDataResidencyEU = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("DATA_RESIDENCY_EU"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoDataResidencyEU); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustDataResidencyTR) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoDataResidencyTR = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("DATA_RESIDENCY_TR"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoDataResidencyTR); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else if (adjustConfig.urlStrategy == AdjustConfig.AdjustDataResidencyUS) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoDataResidencyUS = new AndroidJavaClass("com.adjust.sdk.AdjustConfig").GetStatic<AndroidJavaObject>("DATA_RESIDENCY_US"); | 
					
						
							|  |  |  |                     ajoAdjustConfig.Call("setUrlStrategy", ajoDataResidencyUS); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set app secret. | 
					
						
							|  |  |  |             if (IsAppSecretSet(adjustConfig)) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setAppSecret", | 
					
						
							|  |  |  |                     adjustConfig.secretId.Value, | 
					
						
							|  |  |  |                     adjustConfig.info1.Value, | 
					
						
							|  |  |  |                     adjustConfig.info2.Value, | 
					
						
							|  |  |  |                     adjustConfig.info3.Value, | 
					
						
							|  |  |  |                     adjustConfig.info4.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set device as known. | 
					
						
							|  |  |  |             if (adjustConfig.isDeviceKnown.HasValue) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setDeviceKnown", adjustConfig.isDeviceKnown.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has enabled reading of IMEI and MEID.   | 
					
						
							|  |  |  |             // Obsolete method.  | 
					
						
							|  |  |  |             if (adjustConfig.readImei.HasValue)  | 
					
						
							|  |  |  |             {    | 
					
						
							|  |  |  |                 // ajoAdjustConfig.Call("setReadMobileEquipmentIdentity", adjustConfig.readImei.Value);  | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check attribution changed delagate setting. | 
					
						
							|  |  |  |             if (adjustConfig.attributionChangedDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onAttributionChangedListener = new AttributionChangeListener(adjustConfig.attributionChangedDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnAttributionChangedListener", onAttributionChangedListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check event success delegate setting. | 
					
						
							|  |  |  |             if (adjustConfig.eventSuccessDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onEventTrackingSucceededListener = new EventTrackingSucceededListener(adjustConfig.eventSuccessDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnEventTrackingSucceededListener", onEventTrackingSucceededListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check event failure delagate setting. | 
					
						
							|  |  |  |             if (adjustConfig.eventFailureDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onEventTrackingFailedListener = new EventTrackingFailedListener(adjustConfig.eventFailureDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnEventTrackingFailedListener", onEventTrackingFailedListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check session success delegate setting. | 
					
						
							|  |  |  |             if (adjustConfig.sessionSuccessDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onSessionTrackingSucceededListener = new SessionTrackingSucceededListener(adjustConfig.sessionSuccessDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnSessionTrackingSucceededListener", onSessionTrackingSucceededListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check session failure delegate setting. | 
					
						
							|  |  |  |             if (adjustConfig.sessionFailureDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onSessionTrackingFailedListener = new SessionTrackingFailedListener(adjustConfig.sessionFailureDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnSessionTrackingFailedListener", onSessionTrackingFailedListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check deferred deeplink delegate setting. | 
					
						
							|  |  |  |             if (adjustConfig.deferredDeeplinkDelegate != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 onDeferredDeeplinkListener = new DeferredDeeplinkListener(adjustConfig.deferredDeeplinkDelegate); | 
					
						
							|  |  |  |                 ajoAdjustConfig.Call("setOnDeeplinkResponseListener", onDeferredDeeplinkListener); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Initialise and start the SDK. | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("onCreate", ajoAdjustConfig); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("onResume"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackEvent(AdjustEvent adjustEvent) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoAdjustEvent = new AndroidJavaObject("com.adjust.sdk.AdjustEvent", adjustEvent.eventToken); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set revenue for the event. | 
					
						
							|  |  |  |             if (adjustEvent.revenue != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustEvent.Call("setRevenue", (double)adjustEvent.revenue, adjustEvent.currency); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any callback parameters to the event. | 
					
						
							|  |  |  |             if (adjustEvent.callbackList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < adjustEvent.callbackList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = adjustEvent.callbackList[i]; | 
					
						
							|  |  |  |                     string value = adjustEvent.callbackList[i + 1]; | 
					
						
							|  |  |  |                     ajoAdjustEvent.Call("addCallbackParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any partner parameters to the event. | 
					
						
							|  |  |  |             if (adjustEvent.partnerList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < adjustEvent.partnerList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = adjustEvent.partnerList[i]; | 
					
						
							|  |  |  |                     string value = adjustEvent.partnerList[i + 1]; | 
					
						
							|  |  |  |                     ajoAdjustEvent.Call("addPartnerParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added transaction ID to the event. | 
					
						
							|  |  |  |             if (adjustEvent.transactionId != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustEvent.Call("setOrderId", adjustEvent.transactionId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added callback ID to the event. | 
					
						
							|  |  |  |             if (adjustEvent.callbackId != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustEvent.Call("setCallbackId", adjustEvent.callbackId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added product ID to the event. | 
					
						
							|  |  |  |             if (adjustEvent.productId != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustEvent.Call("setProductId", adjustEvent.productId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added purchase token to the event. | 
					
						
							|  |  |  |             if (adjustEvent.purchaseToken != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustEvent.Call("setPurchaseToken", adjustEvent.purchaseToken); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Track the event. | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackEvent", ajoAdjustEvent); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static bool IsEnabled() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return ajcAdjust.CallStatic<bool>("isEnabled"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void SetEnabled(bool enabled) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("setEnabled", enabled); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void SetOfflineMode(bool enabled) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("setOfflineMode", enabled); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void SendFirstPackages() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("sendFirstPackages"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void SetDeviceToken(string deviceToken) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("setPushToken", deviceToken, ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static string GetAdid() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return ajcAdjust.CallStatic<string>("getAdid"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void GdprForgetMe() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("gdprForgetMe", ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void DisableThirdPartySharing() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("disableThirdPartySharing", ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static AdjustAttribution GetAttribution() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             try | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AndroidJavaObject ajoAttribution = ajcAdjust.CallStatic<AndroidJavaObject>("getAttribution"); | 
					
						
							|  |  |  |                 if (null == ajoAttribution) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return null; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustAttribution adjustAttribution = new AdjustAttribution(); | 
					
						
							|  |  |  |                 adjustAttribution.trackerName = ajoAttribution.Get<string>(AdjustUtils.KeyTrackerName) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyTrackerName); | 
					
						
							|  |  |  |                 adjustAttribution.trackerToken = ajoAttribution.Get<string>(AdjustUtils.KeyTrackerToken) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyTrackerToken); | 
					
						
							|  |  |  |                 adjustAttribution.network = ajoAttribution.Get<string>(AdjustUtils.KeyNetwork) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyNetwork); | 
					
						
							|  |  |  |                 adjustAttribution.campaign = ajoAttribution.Get<string>(AdjustUtils.KeyCampaign) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyCampaign); | 
					
						
							|  |  |  |                 adjustAttribution.adgroup = ajoAttribution.Get<string>(AdjustUtils.KeyAdgroup) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyAdgroup); | 
					
						
							|  |  |  |                 adjustAttribution.creative = ajoAttribution.Get<string>(AdjustUtils.KeyCreative) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyCreative); | 
					
						
							|  |  |  |                 adjustAttribution.clickLabel = ajoAttribution.Get<string>(AdjustUtils.KeyClickLabel) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyClickLabel); | 
					
						
							|  |  |  |                 adjustAttribution.adid = ajoAttribution.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustAttribution.costType = ajoAttribution.Get<string>(AdjustUtils.KeyCostType) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyCostType); | 
					
						
							|  |  |  |                 AndroidJavaObject ajoCostAmount = ajoAttribution.Get<AndroidJavaObject>(AdjustUtils.KeyCostAmount) == null ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<AndroidJavaObject>(AdjustUtils.KeyCostAmount); | 
					
						
							|  |  |  |                 if (ajoCostAmount == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     adjustAttribution.costAmount = null; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     double costAmount = ajoCostAmount.Call<double>("doubleValue"); | 
					
						
							|  |  |  |                     adjustAttribution.costAmount = costAmount; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 adjustAttribution.costCurrency = ajoAttribution.Get<string>(AdjustUtils.KeyCostCurrency) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyCostCurrency); | 
					
						
							|  |  |  |                 adjustAttribution.fbInstallReferrer = ajoAttribution.Get<string>(AdjustUtils.KeyFbInstallReferrer) == "" ? | 
					
						
							|  |  |  |                     null : ajoAttribution.Get<string>(AdjustUtils.KeyFbInstallReferrer); | 
					
						
							|  |  |  |                 return adjustAttribution; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             catch (Exception) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void AddSessionPartnerParameter(string key, string value) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("addSessionPartnerParameter", key, value); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void AddSessionCallbackParameter(string key, string value) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("addSessionCallbackParameter", key, value); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void RemoveSessionPartnerParameter(string key) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("removeSessionPartnerParameter", key); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void RemoveSessionCallbackParameter(string key) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("removeSessionCallbackParameter", key); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void ResetSessionPartnerParameters() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("resetSessionPartnerParameters"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void ResetSessionCallbackParameters() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("resetSessionCallbackParameters"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void AppWillOpenUrl(string url)  | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaClass ajcUri = new AndroidJavaClass("android.net.Uri"); | 
					
						
							|  |  |  |             AndroidJavaObject ajoUri = ajcUri.CallStatic<AndroidJavaObject>("parse", url); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("appWillOpenUrl", ajoUri, ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackAdRevenue(string source, string payload) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (ajcAdjust == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajcAdjust = new AndroidJavaClass("com.adjust.sdk.Adjust"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             AndroidJavaObject jsonPayload = new AndroidJavaObject("org.json.JSONObject", payload); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackAdRevenue", source, jsonPayload); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackAdRevenue(AdjustAdRevenue adRevenue) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoAdjustAdRevenue = new AndroidJavaObject("com.adjust.sdk.AdjustAdRevenue", adRevenue.source); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set revenue. | 
					
						
							|  |  |  |             if (adRevenue.revenue != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AndroidJavaObject ajoRevenue = new AndroidJavaObject("java.lang.Double", adRevenue.revenue); | 
					
						
							|  |  |  |                 ajoAdjustAdRevenue.Call("setRevenue", ajoRevenue, adRevenue.currency); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set ad impressions count. | 
					
						
							|  |  |  |             if (adRevenue.adImpressionsCount != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AndroidJavaObject ajoAdImpressionsCount = new AndroidJavaObject("java.lang.Integer", adRevenue.adImpressionsCount); | 
					
						
							|  |  |  |                 ajoAdjustAdRevenue.Call("setAdImpressionsCount", ajoAdImpressionsCount); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set ad revenue network. | 
					
						
							|  |  |  |             if (adRevenue.adRevenueNetwork != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustAdRevenue.Call("setAdRevenueNetwork", adRevenue.adRevenueNetwork); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set ad revenue unit. | 
					
						
							|  |  |  |             if (adRevenue.adRevenueUnit != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustAdRevenue.Call("setAdRevenueUnit", adRevenue.adRevenueUnit); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set ad revenue placement. | 
					
						
							|  |  |  |             if (adRevenue.adRevenuePlacement != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoAdjustAdRevenue.Call("setAdRevenuePlacement", adRevenue.adRevenuePlacement); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any callback parameters. | 
					
						
							|  |  |  |             if (adRevenue.callbackList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < adRevenue.callbackList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = adRevenue.callbackList[i]; | 
					
						
							|  |  |  |                     string value = adRevenue.callbackList[i + 1]; | 
					
						
							|  |  |  |                     ajoAdjustAdRevenue.Call("addCallbackParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any partner parameters. | 
					
						
							|  |  |  |             if (adRevenue.partnerList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < adRevenue.partnerList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = adRevenue.partnerList[i]; | 
					
						
							|  |  |  |                     string value = adRevenue.partnerList[i + 1]; | 
					
						
							|  |  |  |                     ajoAdjustAdRevenue.Call("addPartnerParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Track ad revenue. | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackAdRevenue", ajoAdjustAdRevenue); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackPlayStoreSubscription(AdjustPlayStoreSubscription subscription) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoSubscription = new AndroidJavaObject("com.adjust.sdk.AdjustPlayStoreSubscription", | 
					
						
							|  |  |  |                 Convert.ToInt64(subscription.price), | 
					
						
							|  |  |  |                 subscription.currency, | 
					
						
							|  |  |  |                 subscription.sku, | 
					
						
							|  |  |  |                 subscription.orderId, | 
					
						
							|  |  |  |                 subscription.signature, | 
					
						
							|  |  |  |                 subscription.purchaseToken); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has set purchase time for subscription. | 
					
						
							|  |  |  |             if (subscription.purchaseTime != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoSubscription.Call("setPurchaseTime", Convert.ToInt64(subscription.purchaseTime)); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any callback parameters to the subscription. | 
					
						
							|  |  |  |             if (subscription.callbackList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < subscription.callbackList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = subscription.callbackList[i]; | 
					
						
							|  |  |  |                     string value = subscription.callbackList[i + 1]; | 
					
						
							|  |  |  |                     ajoSubscription.Call("addCallbackParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Check if user has added any partner parameters to the subscription. | 
					
						
							|  |  |  |             if (subscription.partnerList != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 for (int i = 0; i < subscription.partnerList.Count; i += 2) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string key = subscription.partnerList[i]; | 
					
						
							|  |  |  |                     string value = subscription.partnerList[i + 1]; | 
					
						
							|  |  |  |                     ajoSubscription.Call("addPartnerParameter", key, value); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Track the subscription. | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackPlayStoreSubscription", ajoSubscription); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackThirdPartySharing(AdjustThirdPartySharing thirdPartySharing) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoIsEnabled; | 
					
						
							|  |  |  |             AndroidJavaObject ajoAdjustThirdPartySharing; | 
					
						
							|  |  |  |             if (thirdPartySharing.isEnabled != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ajoIsEnabled = new AndroidJavaObject("java.lang.Boolean", thirdPartySharing.isEnabled.Value); | 
					
						
							|  |  |  |                 ajoAdjustThirdPartySharing = new AndroidJavaObject("com.adjust.sdk.AdjustThirdPartySharing", ajoIsEnabled); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 string[] parameters = null; | 
					
						
							|  |  |  |                 ajoAdjustThirdPartySharing = new AndroidJavaObject("com.adjust.sdk.AdjustThirdPartySharing", parameters); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (thirdPartySharing.granularOptions != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 foreach (KeyValuePair<string, List<string>> entry in thirdPartySharing.granularOptions) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     for (int i = 0; i < entry.Value.Count;) | 
					
						
							|  |  |  |                     { | 
					
						
							|  |  |  |                         ajoAdjustThirdPartySharing.Call("addGranularOption", entry.Key, entry.Value[i++], entry.Value[i++]); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (thirdPartySharing.partnerSharingSettings != null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 foreach (KeyValuePair<string, List<string>> entry in thirdPartySharing.partnerSharingSettings) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     for (int i = 0; i < entry.Value.Count;) | 
					
						
							|  |  |  |                     { | 
					
						
							|  |  |  |                         ajoAdjustThirdPartySharing.Call("addPartnerSharingSetting", entry.Key, entry.Value[i++], bool.Parse(entry.Value[i++])); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackThirdPartySharing", ajoAdjustThirdPartySharing); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void TrackMeasurementConsent(bool measurementConsent) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("trackMeasurementConsent", measurementConsent); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Android specific methods. | 
					
						
							|  |  |  |         public static void OnPause() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("onPause"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         public static void OnResume() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("onResume"); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void SetReferrer(string referrer) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("setReferrer", referrer, ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void GetGoogleAdId(Action<string> onDeviceIdsRead)  | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             DeviceIdsReadListener onDeviceIdsReadProxy = new DeviceIdsReadListener(onDeviceIdsRead); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("getGoogleAdId", ajoCurrentActivity, onDeviceIdsReadProxy); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static string GetAmazonAdId() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return ajcAdjust.CallStatic<string>("getAmazonAdId", ajoCurrentActivity); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static string GetSdkVersion() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             string nativeSdkVersion = ajcAdjust.CallStatic<string>("getSdkVersion"); | 
					
						
							|  |  |  |             return sdkPrefix + "@" + nativeSdkVersion; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static void VerifyPlayStorePurchase(AdjustPlayStorePurchase purchase, Action<AdjustPurchaseVerificationInfo> verificationInfoCallback) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoPurchase = new AndroidJavaObject("com.adjust.sdk.AdjustPurchase", | 
					
						
							|  |  |  |                 purchase.productId, | 
					
						
							|  |  |  |                 purchase.purchaseToken); | 
					
						
							|  |  |  |             onVerificationInfoListener = new VerificationInfoListener(verificationInfoCallback); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("verifyPurchase", ajoPurchase, onVerificationInfoListener); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-16 05:30:31 +00:00
										 |  |  |         public static void ProcessDeeplink(string url, Action<string> resolvedLinkCallback) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             onDeeplinkResolvedListener = new DeeplinkResolutionListener(resolvedLinkCallback); | 
					
						
							|  |  |  |             AndroidJavaClass ajcUri = new AndroidJavaClass("android.net.Uri"); | 
					
						
							|  |  |  |             AndroidJavaObject ajoUri = ajcUri.CallStatic<AndroidJavaObject>("parse", url); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("processDeeplink", ajoUri, ajoCurrentActivity, onDeeplinkResolvedListener); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-26 03:52:53 +00:00
										 |  |  |         // Used for testing only. | 
					
						
							|  |  |  |         public static void SetTestOptions(Dictionary<string, string> testOptions) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AndroidJavaObject ajoTestOptions = AdjustUtils.TestOptionsMap2AndroidJavaObject(testOptions, ajoCurrentActivity); | 
					
						
							|  |  |  |             ajcAdjust.CallStatic("setTestOptions", ajoTestOptions); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Private & helper classes. | 
					
						
							|  |  |  |         private class AttributionChangeListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustAttribution> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public AttributionChangeListener(Action<AdjustAttribution> pCallback) : base("com.adjust.sdk.OnAttributionChangedListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onAttributionChanged(AndroidJavaObject attribution) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustAttribution adjustAttribution = new AdjustAttribution(); | 
					
						
							|  |  |  |                 adjustAttribution.trackerName = attribution.Get<string>(AdjustUtils.KeyTrackerName) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyTrackerName); | 
					
						
							|  |  |  |                 adjustAttribution.trackerToken = attribution.Get<string>(AdjustUtils.KeyTrackerToken) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyTrackerToken); | 
					
						
							|  |  |  |                 adjustAttribution.network = attribution.Get<string>(AdjustUtils.KeyNetwork) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyNetwork); | 
					
						
							|  |  |  |                 adjustAttribution.campaign = attribution.Get<string>(AdjustUtils.KeyCampaign) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyCampaign); | 
					
						
							|  |  |  |                 adjustAttribution.adgroup = attribution.Get<string>(AdjustUtils.KeyAdgroup) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyAdgroup); | 
					
						
							|  |  |  |                 adjustAttribution.creative = attribution.Get<string>(AdjustUtils.KeyCreative) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyCreative); | 
					
						
							|  |  |  |                 adjustAttribution.clickLabel = attribution.Get<string>(AdjustUtils.KeyClickLabel) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyClickLabel); | 
					
						
							|  |  |  |                 adjustAttribution.adid = attribution.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustAttribution.costType = attribution.Get<string>(AdjustUtils.KeyCostType) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyCostType); | 
					
						
							|  |  |  |                 AndroidJavaObject ajoCostAmount = attribution.Get<AndroidJavaObject>(AdjustUtils.KeyCostAmount) == null ? | 
					
						
							|  |  |  |                     null : attribution.Get<AndroidJavaObject>(AdjustUtils.KeyCostAmount); | 
					
						
							|  |  |  |                 if (ajoCostAmount == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     adjustAttribution.costAmount = null; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 else | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     double costAmount = ajoCostAmount.Call<double>("doubleValue"); | 
					
						
							|  |  |  |                     adjustAttribution.costAmount = costAmount; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 adjustAttribution.costCurrency = attribution.Get<string>(AdjustUtils.KeyCostCurrency) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyCostCurrency); | 
					
						
							|  |  |  |                 adjustAttribution.fbInstallReferrer = attribution.Get<string>(AdjustUtils.KeyFbInstallReferrer) == "" ? | 
					
						
							|  |  |  |                     null : attribution.Get<string>(AdjustUtils.KeyFbInstallReferrer); | 
					
						
							|  |  |  |                 callback(adjustAttribution); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class DeferredDeeplinkListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<string> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public DeferredDeeplinkListener(Action<string> pCallback) : base("com.adjust.sdk.OnDeeplinkResponseListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public bool launchReceivedDeeplink(AndroidJavaObject deeplink) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return launchDeferredDeeplink; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 string deeplinkURL = deeplink.Call<string>("toString"); | 
					
						
							|  |  |  |                 callback(deeplinkURL); | 
					
						
							|  |  |  |                 return launchDeferredDeeplink; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class EventTrackingSucceededListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustEventSuccess> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public EventTrackingSucceededListener(Action<AdjustEventSuccess> pCallback) : base("com.adjust.sdk.OnEventTrackingSucceededListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onFinishedEventTrackingSucceeded(AndroidJavaObject eventSuccessData) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if (eventSuccessData == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustEventSuccess adjustEventSuccess = new AdjustEventSuccess(); | 
					
						
							|  |  |  |                 adjustEventSuccess.Adid = eventSuccessData.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : eventSuccessData.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustEventSuccess.Message = eventSuccessData.Get<string>(AdjustUtils.KeyMessage) == "" ? | 
					
						
							|  |  |  |                     null : eventSuccessData.Get<string>(AdjustUtils.KeyMessage); | 
					
						
							|  |  |  |                 adjustEventSuccess.Timestamp = eventSuccessData.Get<string>(AdjustUtils.KeyTimestamp) == "" ? | 
					
						
							|  |  |  |                     null : eventSuccessData.Get<string>(AdjustUtils.KeyTimestamp); | 
					
						
							|  |  |  |                 adjustEventSuccess.EventToken = eventSuccessData.Get<string>(AdjustUtils.KeyEventToken) == "" ? | 
					
						
							|  |  |  |                     null : eventSuccessData.Get<string>(AdjustUtils.KeyEventToken); | 
					
						
							|  |  |  |                 adjustEventSuccess.CallbackId = eventSuccessData.Get<string>(AdjustUtils.KeyCallbackId) == "" ? | 
					
						
							|  |  |  |                     null : eventSuccessData.Get<string>(AdjustUtils.KeyCallbackId); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 try | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoJsonResponse = eventSuccessData.Get<AndroidJavaObject>(AdjustUtils.KeyJsonResponse); | 
					
						
							|  |  |  |                     string jsonResponseString = ajoJsonResponse.Call<string>("toString"); | 
					
						
							|  |  |  |                     adjustEventSuccess.BuildJsonResponseFromString(jsonResponseString); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 catch (Exception) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     // JSON response reading failed. | 
					
						
							|  |  |  |                     // Native Android SDK should send empty JSON object if none available as of v4.12.5. | 
					
						
							|  |  |  |                     // Native Android SDK added special logic to send Unity friendly values as of v4.15.0. | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 callback(adjustEventSuccess); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class EventTrackingFailedListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustEventFailure> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public EventTrackingFailedListener(Action<AdjustEventFailure> pCallback) : base("com.adjust.sdk.OnEventTrackingFailedListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onFinishedEventTrackingFailed(AndroidJavaObject eventFailureData) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if (eventFailureData == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustEventFailure adjustEventFailure = new AdjustEventFailure(); | 
					
						
							|  |  |  |                 adjustEventFailure.Adid = eventFailureData.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : eventFailureData.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustEventFailure.Message = eventFailureData.Get<string>(AdjustUtils.KeyMessage) == "" ? | 
					
						
							|  |  |  |                     null : eventFailureData.Get<string>(AdjustUtils.KeyMessage); | 
					
						
							|  |  |  |                 adjustEventFailure.WillRetry = eventFailureData.Get<bool>(AdjustUtils.KeyWillRetry); | 
					
						
							|  |  |  |                 adjustEventFailure.Timestamp = eventFailureData.Get<string>(AdjustUtils.KeyTimestamp) == "" ? | 
					
						
							|  |  |  |                     null : eventFailureData.Get<string>(AdjustUtils.KeyTimestamp); | 
					
						
							|  |  |  |                 adjustEventFailure.EventToken = eventFailureData.Get<string>(AdjustUtils.KeyEventToken) == "" ? | 
					
						
							|  |  |  |                     null : eventFailureData.Get<string>(AdjustUtils.KeyEventToken); | 
					
						
							|  |  |  |                 adjustEventFailure.CallbackId = eventFailureData.Get<string>(AdjustUtils.KeyCallbackId) == "" ? | 
					
						
							|  |  |  |                     null : eventFailureData.Get<string>(AdjustUtils.KeyCallbackId); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 try | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoJsonResponse = eventFailureData.Get<AndroidJavaObject>(AdjustUtils.KeyJsonResponse); | 
					
						
							|  |  |  |                     string jsonResponseString = ajoJsonResponse.Call<string>("toString"); | 
					
						
							|  |  |  |                     adjustEventFailure.BuildJsonResponseFromString(jsonResponseString); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 catch (Exception) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     // JSON response reading failed. | 
					
						
							|  |  |  |                     // Native Android SDK should send empty JSON object if none available as of v4.12.5. | 
					
						
							|  |  |  |                     // Native Android SDK added special logic to send Unity friendly values as of v4.15.0. | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                  | 
					
						
							|  |  |  |                 callback(adjustEventFailure); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class SessionTrackingSucceededListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustSessionSuccess> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public SessionTrackingSucceededListener(Action<AdjustSessionSuccess> pCallback) : base("com.adjust.sdk.OnSessionTrackingSucceededListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onFinishedSessionTrackingSucceeded(AndroidJavaObject sessionSuccessData) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if (sessionSuccessData == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustSessionSuccess adjustSessionSuccess = new AdjustSessionSuccess(); | 
					
						
							|  |  |  |                 adjustSessionSuccess.Adid = sessionSuccessData.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : sessionSuccessData.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustSessionSuccess.Message = sessionSuccessData.Get<string>(AdjustUtils.KeyMessage) == "" ? | 
					
						
							|  |  |  |                     null : sessionSuccessData.Get<string>(AdjustUtils.KeyMessage); | 
					
						
							|  |  |  |                 adjustSessionSuccess.Timestamp = sessionSuccessData.Get<string>(AdjustUtils.KeyTimestamp) == "" ? | 
					
						
							|  |  |  |                     null : sessionSuccessData.Get<string>(AdjustUtils.KeyTimestamp); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 try | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoJsonResponse = sessionSuccessData.Get<AndroidJavaObject>(AdjustUtils.KeyJsonResponse); | 
					
						
							|  |  |  |                     string jsonResponseString = ajoJsonResponse.Call<string>("toString"); | 
					
						
							|  |  |  |                     adjustSessionSuccess.BuildJsonResponseFromString(jsonResponseString); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 catch (Exception) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     // JSON response reading failed. | 
					
						
							|  |  |  |                     // Native Android SDK should send empty JSON object if none available as of v4.12.5. | 
					
						
							|  |  |  |                     // Native Android SDK added special logic to send Unity friendly values as of v4.15.0. | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 callback(adjustSessionSuccess); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class SessionTrackingFailedListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustSessionFailure> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public SessionTrackingFailedListener(Action<AdjustSessionFailure> pCallback) : base("com.adjust.sdk.OnSessionTrackingFailedListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onFinishedSessionTrackingFailed(AndroidJavaObject sessionFailureData) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if (sessionFailureData == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 AdjustSessionFailure adjustSessionFailure = new AdjustSessionFailure(); | 
					
						
							|  |  |  |                 adjustSessionFailure.Adid = sessionFailureData.Get<string>(AdjustUtils.KeyAdid) == "" ? | 
					
						
							|  |  |  |                     null : sessionFailureData.Get<string>(AdjustUtils.KeyAdid); | 
					
						
							|  |  |  |                 adjustSessionFailure.Message = sessionFailureData.Get<string>(AdjustUtils.KeyMessage) == "" ? | 
					
						
							|  |  |  |                     null : sessionFailureData.Get<string>(AdjustUtils.KeyMessage); | 
					
						
							|  |  |  |                 adjustSessionFailure.WillRetry = sessionFailureData.Get<bool>(AdjustUtils.KeyWillRetry); | 
					
						
							|  |  |  |                 adjustSessionFailure.Timestamp = sessionFailureData.Get<string>(AdjustUtils.KeyTimestamp) == "" ? | 
					
						
							|  |  |  |                     null : sessionFailureData.Get<string>(AdjustUtils.KeyTimestamp); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 try | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     AndroidJavaObject ajoJsonResponse = sessionFailureData.Get<AndroidJavaObject>(AdjustUtils.KeyJsonResponse); | 
					
						
							|  |  |  |                     string jsonResponseString = ajoJsonResponse.Call<string>("toString"); | 
					
						
							|  |  |  |                     adjustSessionFailure.BuildJsonResponseFromString(jsonResponseString); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 catch (Exception) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     // JSON response reading failed. | 
					
						
							|  |  |  |                     // Native Android SDK should send empty JSON object if none available as of v4.12.5. | 
					
						
							|  |  |  |                     // Native Android SDK added special logic to send Unity friendly values as of v4.15.0. | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 callback(adjustSessionFailure); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class DeviceIdsReadListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<string> onPlayAdIdReadCallback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public DeviceIdsReadListener(Action<string> pCallback) : base("com.adjust.sdk.OnDeviceIdsRead") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.onPlayAdIdReadCallback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Method must be lowercase to match Android method signature. | 
					
						
							|  |  |  |             public void onGoogleAdIdRead(string playAdId) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (onPlayAdIdReadCallback == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 this.onPlayAdIdReadCallback(playAdId); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Handling of null object. | 
					
						
							|  |  |  |             public void onGoogleAdIdRead(AndroidJavaObject ajoAdId) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (ajoAdId == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     string adId = null; | 
					
						
							|  |  |  |                     this.onGoogleAdIdRead(adId); | 
					
						
							|  |  |  |                     return; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 this.onGoogleAdIdRead(ajoAdId.Call<string>("toString")); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private class VerificationInfoListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<AdjustPurchaseVerificationInfo> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public VerificationInfoListener(Action<AdjustPurchaseVerificationInfo> pCallback) : base("com.adjust.sdk.OnPurchaseVerificationFinishedListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public void onVerificationFinished(AndroidJavaObject verificationInfo) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 AdjustPurchaseVerificationInfo purchaseVerificationInfo = new AdjustPurchaseVerificationInfo(); | 
					
						
							|  |  |  |                 // verification status | 
					
						
							|  |  |  |                 purchaseVerificationInfo.verificationStatus = verificationInfo.Get<string>(AdjustUtils.KeyVerificationStatus); | 
					
						
							|  |  |  |                 // status code | 
					
						
							|  |  |  |                 purchaseVerificationInfo.code = verificationInfo.Get<int>(AdjustUtils.KeyCode); | 
					
						
							|  |  |  |                 // message | 
					
						
							|  |  |  |                 purchaseVerificationInfo.message = verificationInfo.Get<string>(AdjustUtils.KeyMessage); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 if (callback != null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     callback(purchaseVerificationInfo); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-16 05:30:31 +00:00
										 |  |  |         private class DeeplinkResolutionListener : AndroidJavaProxy | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             private Action<string> callback; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public DeeplinkResolutionListener(Action<string> pCallback) : base("com.adjust.sdk.OnDeeplinkResolvedListener") | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 this.callback = pCallback; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             public void onDeeplinkResolved(string resolvedLink) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (callback != null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     callback(resolvedLink); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-26 03:52:53 +00:00
										 |  |  |         // Private & helper methods. | 
					
						
							|  |  |  |         private static bool IsAppSecretSet(AdjustConfig adjustConfig) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return adjustConfig.secretId.HasValue  | 
					
						
							|  |  |  |                 && adjustConfig.info1.HasValue | 
					
						
							|  |  |  |                 && adjustConfig.info2.HasValue | 
					
						
							|  |  |  |                 && adjustConfig.info3.HasValue | 
					
						
							|  |  |  |                 && adjustConfig.info4.HasValue; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | } |