update: 更新 UnityPackage -> 4.38.0
							parent
							
								
									7fc563e567
								
							
						
					
					
						commit
						2425e6916b
					
				|  | @ -8,7 +8,7 @@ namespace com.adjust.sdk | |||
| #if UNITY_ANDROID | ||||
|     public class AdjustAndroid | ||||
|     { | ||||
|         private const string sdkPrefix = "unity4.36.0"; | ||||
|         private const string sdkPrefix = "unity4.38.0"; | ||||
|         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"); | ||||
|  | @ -19,6 +19,7 @@ namespace com.adjust.sdk | |||
|         private static SessionTrackingFailedListener onSessionTrackingFailedListener; | ||||
|         private static SessionTrackingSucceededListener onSessionTrackingSucceededListener; | ||||
|         private static VerificationInfoListener onVerificationInfoListener; | ||||
|         private static DeeplinkResolutionListener onDeeplinkResolvedListener; | ||||
| 
 | ||||
|         public static void Start(AdjustConfig adjustConfig) | ||||
|         { | ||||
|  | @ -684,6 +685,14 @@ namespace com.adjust.sdk | |||
|             ajcAdjust.CallStatic("verifyPurchase", ajoPurchase, onVerificationInfoListener); | ||||
|         } | ||||
| 
 | ||||
|         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); | ||||
|         } | ||||
| 
 | ||||
|         // Used for testing only. | ||||
|         public static void SetTestOptions(Dictionary<string, string> testOptions) | ||||
|         { | ||||
|  | @ -1024,6 +1033,24 @@ namespace com.adjust.sdk | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         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); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // Private & helper methods. | ||||
|         private static bool IsAppSecretSet(AdjustConfig adjustConfig) | ||||
|         { | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -11,9 +11,9 @@ public class AdjustSettings : ScriptableObject | |||
|     [SerializeField] | ||||
|     private bool _iOSFrameworkAdSupport = true; | ||||
|     [SerializeField] | ||||
|     private bool _iOSFrameworkAdServices = true; | ||||
|     private bool _iOSFrameworkAdServices = false; | ||||
|     [SerializeField] | ||||
|     private bool _iOSFrameworkAppTrackingTransparency = true; | ||||
|     private bool _iOSFrameworkAppTrackingTransparency = false; | ||||
|     [SerializeField] | ||||
|     private bool _iOSFrameworkStoreKit = false; | ||||
|     [SerializeField] | ||||
|  | @ -50,11 +50,7 @@ public class AdjustSettings : ScriptableObject | |||
|                 { | ||||
|                     return instance; | ||||
|                 } | ||||
| //                var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]).Replace("AdjustSettings.cs", "AdjustSettings.asset"); | ||||
| 				// ************ Auto fixed by Guru Adjust ************ | ||||
| 				if(!System.IO.Directory.Exists("Assets/Guru/Editor")) System.IO.Directory.CreateDirectory("Assets/Guru/Editor"); | ||||
| 				var assetPath = "Assets/Guru/Editor/AdjustSettings.asset"; | ||||
| 				// ************ Auto fixed by Guru Adjust ************ | ||||
|                 var assetPath = AssetDatabase.GUIDToAssetPath(guids[0]).Replace("AdjustSettings.cs", "AdjustSettings.asset"); | ||||
|                 AssetDatabase.CreateAsset(instance, assetPath); | ||||
|             } | ||||
| 
 | ||||
|  |  | |||
|  | @ -86,6 +86,7 @@ namespace com.adjust.sdk | |||
|         private static Action<string> skadUpdateConversionValueDelegate = null; | ||||
|         private static Action<string> skad4UpdateConversionValueDelegate = null; | ||||
|         private static Action<AdjustPurchaseVerificationInfo> verificationInfoDelegate = null; | ||||
|         private static Action<string> deeplinkResolutionDelegate = null; | ||||
| #endif | ||||
| 
 | ||||
|         void Awake() | ||||
|  | @ -959,6 +960,28 @@ namespace com.adjust.sdk | |||
| #endif | ||||
|         } | ||||
| 
 | ||||
|         public static void processDeeplink( | ||||
|             string url, | ||||
|             Action<string> resolvedLinkDelegate, | ||||
|             string sceneName = "Adjust") | ||||
|         { | ||||
|             if (IsEditor()) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
| #if UNITY_IOS | ||||
|             Adjust.deeplinkResolutionDelegate = resolvedLinkDelegate; | ||||
|             AdjustiOS.ProcessDeeplink(url, sceneName); | ||||
| #elif UNITY_ANDROID | ||||
|             AdjustAndroid.ProcessDeeplink(url, resolvedLinkDelegate); | ||||
| #elif (UNITY_WSA || UNITY_WP8) | ||||
|             Debug.Log("[Adjust]: Deep link processing is only supported for Android and iOS platform."); | ||||
| #else | ||||
|             Debug.Log(errorMsgPlatform); | ||||
| #endif | ||||
|         } | ||||
| 
 | ||||
| #if UNITY_IOS | ||||
|         public void GetNativeAttribution(string attributionData) | ||||
|         { | ||||
|  | @ -1178,6 +1201,22 @@ namespace com.adjust.sdk | |||
|             var verificationInfo = new AdjustPurchaseVerificationInfo(verificationInfoData); | ||||
|             Adjust.verificationInfoDelegate(verificationInfo); | ||||
|         } | ||||
| 
 | ||||
|         public void GetNativeResolvedLink(string resolvedLink) | ||||
|         { | ||||
|             if (IsEditor()) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (Adjust.deeplinkResolutionDelegate == null) | ||||
|             { | ||||
|                 Debug.Log("[Adjust]: Deep link reoslution delegate was not set."); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             Adjust.deeplinkResolutionDelegate(resolvedLink); | ||||
|         } | ||||
| #endif | ||||
| 
 | ||||
|         private static bool IsEditor() | ||||
|  |  | |||
|  | @ -23,6 +23,7 @@ namespace com.adjust.sdk | |||
|         public const string AdjustAdRevenueSourcePublisher = "publisher_sdk"; | ||||
|         public const string AdjustAdRevenueSourceTopOn = "topon_sdk"; | ||||
|         public const string AdjustAdRevenueSourceAdx = "adx_sdk"; | ||||
|         public const string AdjustAdRevenueTradPlus = "tradplus_sdk"; | ||||
| 
 | ||||
|         internal string appToken; | ||||
|         internal string sceneName; | ||||
|  | @ -43,6 +44,7 @@ namespace com.adjust.sdk | |||
|         internal bool? playStoreKidsAppEnabled; | ||||
|         internal bool? allowSuppressLogLevel; | ||||
|         internal bool? needsCost; | ||||
|         internal bool? readDeviceInfoOnceEnabled; | ||||
|         internal bool launchDeferredDeeplink; | ||||
|         internal AdjustLogLevel? logLevel; | ||||
|         internal AdjustEnvironment environment; | ||||
|  | @ -62,7 +64,6 @@ namespace com.adjust.sdk | |||
|         internal string preinstallFilePath; | ||||
|         internal bool? finalAndroidAttributionEnabled; | ||||
|         internal string fbAppId; | ||||
|         internal bool? readDeviceInfoOnceEnabled; | ||||
|         // iOS specific members | ||||
|         internal bool? allowAdServicesInfoReading; | ||||
|         internal bool? allowIdfaReading; | ||||
|  |  | |||
|  | @ -15,6 +15,7 @@ namespace com.adjust.sdk | |||
|         internal List<string> callbackList; | ||||
|         // iOS specific members | ||||
|         internal string receipt; | ||||
|         internal string receiptBase64; | ||||
|         internal bool isReceiptSet; | ||||
|         // Android specific members | ||||
|         internal string purchaseToken; | ||||
|  | @ -81,6 +82,11 @@ namespace com.adjust.sdk | |||
|             this.receipt = receipt; | ||||
|         } | ||||
| 
 | ||||
|         public void setReceiptBase64(string receiptBase64) | ||||
|         { | ||||
|             this.receiptBase64 = receiptBase64; | ||||
|         } | ||||
| 
 | ||||
|         // Android specific methods | ||||
|         public void setPurchaseToken(string purchaseToken) | ||||
|         { | ||||
|  |  | |||
|  | @ -36,6 +36,7 @@ namespace com.adjust.sdk | |||
|         public static string KeyTestOptionsGdprUrl = "gdprUrl"; | ||||
|         public static string KeyTestOptionsSubscriptionUrl = "subscriptionUrl"; | ||||
|         public static string KeyTestOptionsPurchaseVerificationUrl = "purchaseVerificationUrl"; | ||||
|         public static string KeyTestOptionsOverwriteUrl = "urlOverwrite"; | ||||
|         public static string KeyTestOptionsExtraPath = "extraPath"; | ||||
|         public static string KeyTestOptionsBasePath = "basePath"; | ||||
|         public static string KeyTestOptionsGdprPath = "gdprPath"; | ||||
|  | @ -48,6 +49,8 @@ namespace com.adjust.sdk | |||
|         public static string KeyTestOptionsTeardown = "teardown"; | ||||
|         public static string KeyTestOptionsNoBackoffWait = "noBackoffWait"; | ||||
|         public static string KeyTestOptionsAdServicesFrameworkEnabled = "adServicesFrameworkEnabled"; | ||||
|         public static string KeyTestOptionsAttStatus = "attStatus"; | ||||
|         public static string KeyTestOptionsIdfa = "idfa"; | ||||
| 
 | ||||
|         public static int ConvertLogLevel(AdjustLogLevel? logLevel) | ||||
|         { | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ namespace com.adjust.sdk | |||
| { | ||||
|     public class AdjustWindows | ||||
|     { | ||||
|         private const string sdkPrefix = "unity4.36.0"; | ||||
|         private const string sdkPrefix = "unity4.38.0"; | ||||
|         private static bool appLaunched = false; | ||||
| 
 | ||||
|         public static void Start(AdjustConfig adjustConfig) | ||||
|  |  | |||
|  | @ -291,4 +291,9 @@ | |||
|  */ | ||||
| @property (nonatomic, assign) BOOL coppaCompliantEnabled; | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief Enables caching of device ids to read it only once | ||||
|  */ | ||||
| @property (nonatomic, assign) BOOL readDeviceInfoOnceEnabled; | ||||
| 
 | ||||
| @end | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| //  Adjust.h
 | ||||
| //  Adjust SDK
 | ||||
| //
 | ||||
| //  V4.36.0
 | ||||
| //  V4.38.0
 | ||||
| //  Created by Christian Wellenbrock (@wellle) on 23rd July 2013.
 | ||||
| //  Copyright (c) 2012-2021 Adjust GmbH. All rights reserved.
 | ||||
| //
 | ||||
|  | @ -17,17 +17,18 @@ | |||
| #import "ADJPurchase.h" | ||||
| #import "ADJPurchaseVerificationResult.h" | ||||
| 
 | ||||
| typedef void(^AdjustResolvedDeeplinkBlock)(NSString * _Nonnull resolvedLink); | ||||
| 
 | ||||
| @interface AdjustTestOptions : NSObject | ||||
| 
 | ||||
| @property (nonatomic, copy, nullable) NSString *baseUrl; | ||||
| @property (nonatomic, copy, nullable) NSString *gdprUrl; | ||||
| @property (nonatomic, copy, nullable) NSString *subscriptionUrl; | ||||
| @property (nonatomic, copy, nullable) NSString *purchaseVerificationUrl; | ||||
| @property (nonatomic, copy, nullable) NSString *urlOverwrite; | ||||
| @property (nonatomic, copy, nullable) NSString *extraPath; | ||||
| @property (nonatomic, copy, nullable) NSNumber *timerIntervalInMilliseconds; | ||||
| @property (nonatomic, copy, nullable) NSNumber *timerStartInMilliseconds; | ||||
| @property (nonatomic, copy, nullable) NSNumber *sessionIntervalInMilliseconds; | ||||
| @property (nonatomic, copy, nullable) NSNumber *subsessionIntervalInMilliseconds; | ||||
| @property (nonatomic, copy, nullable) NSNumber *attStatusInt; | ||||
| @property (nonatomic, copy, nullable) NSString *idfa; | ||||
| @property (nonatomic, assign) BOOL teardown; | ||||
| @property (nonatomic, assign) BOOL deleteState; | ||||
| @property (nonatomic, assign) BOOL noBackoffWait; | ||||
|  | @ -56,6 +57,7 @@ extern NSString * __nonnull const ADJAdRevenueSourceHeliumChartboost; | |||
| extern NSString * __nonnull const ADJAdRevenueSourcePublisher; | ||||
| extern NSString * __nonnull const ADJAdRevenueSourceTopOn; | ||||
| extern NSString * __nonnull const ADJAdRevenueSourceADX; | ||||
| extern NSString * __nonnull const ADJAdRevenueSourceTradplus; | ||||
| 
 | ||||
| /**
 | ||||
|  * Constants for country app's URL strategies. | ||||
|  | @ -137,6 +139,15 @@ extern NSString * __nonnull const ADJDataResidencyUS; | |||
|  */ | ||||
| + (void)appWillOpenUrl:(nonnull NSURL *)url; | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief Process the deep link that has opened an app and potentially get a resolved link. | ||||
|  * | ||||
|  * @param deeplink URL object which contains info about adjust deep link. | ||||
|  * @param completionHandler Completion handler where either resolved or echoed deep link will be sent. | ||||
|  */ | ||||
| + (void)processDeeplink:(nonnull NSURL *)deeplink | ||||
|       completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler; | ||||
| 
 | ||||
| /**
 | ||||
|  * @brief Set the device token used by push notifications. | ||||
|  * | ||||
|  | @ -407,6 +418,9 @@ extern NSString * __nonnull const ADJDataResidencyUS; | |||
| 
 | ||||
| - (void)appWillOpenUrl:(nonnull NSURL *)url; | ||||
| 
 | ||||
| - (void)processDeeplink:(nonnull NSURL *)deeplink | ||||
|       completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler; | ||||
| 
 | ||||
| - (void)setOfflineMode:(BOOL)enabled; | ||||
| 
 | ||||
| - (void)setDeviceToken:(nonnull NSData *)deviceToken; | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -101,6 +101,7 @@ extern "C" | |||
|                           int linkMeEnabled, | ||||
|                           int needsCost, | ||||
|                           int coppaCompliant, | ||||
|                           int readDeviceInfoOnce, | ||||
|                           int64_t secretId, | ||||
|                           int64_t info1, | ||||
|                           int64_t info2, | ||||
|  | @ -222,6 +223,11 @@ extern "C" | |||
|             [adjustConfig setCoppaCompliantEnabled:(BOOL)coppaCompliant]; | ||||
|         } | ||||
| 
 | ||||
|         // Read device info just once. | ||||
|         if (readDeviceInfoOnce != -1) { | ||||
|             [adjustConfig setReadDeviceInfoOnceEnabled:(BOOL)readDeviceInfoOnce]; | ||||
|         } | ||||
| 
 | ||||
|         // User agent. | ||||
|         if (stringUserAgent != nil) { | ||||
|             [adjustConfig setUserAgent:stringUserAgent]; | ||||
|  | @ -270,6 +276,7 @@ extern "C" | |||
|                            double revenue, | ||||
|                            const char* currency, | ||||
|                            const char* receipt, | ||||
|                            const char* receiptBase64, | ||||
|                            const char* productId, | ||||
|                            const char* transactionId, | ||||
|                            const char* callbackId, | ||||
|  | @ -324,6 +331,14 @@ extern "C" | |||
|             [event setReceipt:[stringReceipt dataUsingEncoding:NSUTF8StringEncoding]]; | ||||
|         } | ||||
| 
 | ||||
|         // Base64 encoded receipt. | ||||
|         if (receiptBase64 != NULL) { | ||||
|             // If both (receipt and receiptBase64) set, receiptBase64 will be used. | ||||
|             NSString *stringReceiptBase64 = [NSString stringWithUTF8String:receiptBase64]; | ||||
|             NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:stringReceiptBase64 options:0]; | ||||
|             [event setReceipt:decodedData]; | ||||
|         } | ||||
| 
 | ||||
|         // Callback ID. | ||||
|         if (callbackId != NULL) { | ||||
|             NSString *stringCallbackId = [NSString stringWithUTF8String:callbackId]; | ||||
|  | @ -848,7 +863,8 @@ extern "C" | |||
| 
 | ||||
|         // Receipt. | ||||
|         if (receipt != NULL) { | ||||
|             dataReceipt = [[NSString stringWithUTF8String:receipt] dataUsingEncoding:NSUTF8StringEncoding]; | ||||
|             NSString *stringReceiptBase64 = [NSString stringWithUTF8String:receipt]; | ||||
|             dataReceipt = [[NSData alloc] initWithBase64EncodedString:stringReceiptBase64 options:0]; | ||||
|         } | ||||
| 
 | ||||
|         // Scene name. | ||||
|  | @ -881,10 +897,34 @@ extern "C" | |||
|         }]; | ||||
|     } | ||||
| 
 | ||||
|     void _AdjustSetTestOptions(const char* baseUrl, | ||||
|                                const char* gdprUrl, | ||||
|                                const char* subscriptionUrl, | ||||
|                                const char* purchaseVerificationUrl, | ||||
|     void _AdjustProcessDeeplink(const char* url, const char* sceneName) { | ||||
|         NSString *strSceneName = isStringValid(sceneName) == true ? [NSString stringWithUTF8String:sceneName] : nil; | ||||
|         if (url != NULL) { | ||||
|             NSString *stringUrl = [NSString stringWithUTF8String:url]; | ||||
|             NSURL *nsUrl; | ||||
|             if ([NSString instancesRespondToSelector:@selector(stringByAddingPercentEncodingWithAllowedCharacters:)]) { | ||||
|                 nsUrl = [NSURL URLWithString:[stringUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]]; | ||||
|             } else { | ||||
| #pragma clang diagnostic push | ||||
| #pragma clang diagnostic ignored "-Wdeprecated-declarations" | ||||
|                 nsUrl = [NSURL URLWithString:[stringUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; | ||||
|             } | ||||
| #pragma clang diagnostic pop | ||||
| 
 | ||||
|             [Adjust processDeeplink:nsUrl completionHandler:^(NSString * _Nonnull resolvedLink) { | ||||
|                 if (strSceneName == nil) { | ||||
|                     return; | ||||
|                 } | ||||
|                 if (resolvedLink == nil) { | ||||
|                     return; | ||||
|                 } | ||||
|                 const char* resolvedLinkCString = [resolvedLink UTF8String]; | ||||
|                 UnitySendMessage([strSceneName UTF8String], "GetNativeResolvedLink", resolvedLinkCString); | ||||
|             }]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     void _AdjustSetTestOptions(const char* overwriteUrl, | ||||
|                                const char* extraPath, | ||||
|                                long timerIntervalInMilliseconds, | ||||
|                                long timerStartInMilliseconds, | ||||
|  | @ -893,38 +933,29 @@ extern "C" | |||
|                                int teardown, | ||||
|                                int deleteState, | ||||
|                                int noBackoffWait, | ||||
|                                int adServicesFrameworkEnabled) { | ||||
|                                int adServicesFrameworkEnabled, | ||||
|                                int attStatus, | ||||
|                                const char *idfa) { | ||||
|         AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init]; | ||||
| 
 | ||||
|         NSString *stringBaseUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:baseUrl] : nil; | ||||
|         if (stringBaseUrl != nil) { | ||||
|             [testOptions setBaseUrl:stringBaseUrl]; | ||||
|         NSString *stringOverwriteUrl = isStringValid(overwriteUrl) == true ? [NSString stringWithUTF8String:overwriteUrl] : nil; | ||||
|         if (stringOverwriteUrl != nil) { | ||||
|             [testOptions setUrlOverwrite:stringOverwriteUrl]; | ||||
|         } | ||||
| 
 | ||||
|         NSString *stringGdprUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:gdprUrl] : nil; | ||||
|         if (stringGdprUrl != nil) { | ||||
|             [testOptions setGdprUrl:stringGdprUrl]; | ||||
|         } | ||||
| 
 | ||||
|         NSString *stringSubscriptionUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:subscriptionUrl] : nil; | ||||
|         if (stringSubscriptionUrl != nil) { | ||||
|             [testOptions setSubscriptionUrl:stringSubscriptionUrl]; | ||||
|         } | ||||
| 
 | ||||
|         NSString *stringPurchaseVerificationUrl = isStringValid(baseUrl) == true ? [NSString stringWithUTF8String:purchaseVerificationUrl] : nil; | ||||
|         if (stringPurchaseVerificationUrl != nil) { | ||||
|             [testOptions setPurchaseVerificationUrl:stringPurchaseVerificationUrl]; | ||||
|         } | ||||
| 
 | ||||
|         NSString *stringExtraPath = isStringValid(extraPath) == true ? [NSString stringWithUTF8String:extraPath] : nil; | ||||
|         if (stringExtraPath != nil && [stringExtraPath length] > 0) { | ||||
|             [testOptions setExtraPath:stringExtraPath]; | ||||
|         } | ||||
|         NSString *stringIdfa = isStringValid(idfa) == true ? [NSString stringWithUTF8String:idfa] : nil; | ||||
|         if (stringIdfa != nil && [stringIdfa length] > 0) { | ||||
|             [testOptions setIdfa:stringIdfa]; | ||||
|         } | ||||
| 
 | ||||
|         testOptions.timerIntervalInMilliseconds = [NSNumber numberWithLong:timerIntervalInMilliseconds]; | ||||
|         testOptions.timerStartInMilliseconds = [NSNumber numberWithLong:timerStartInMilliseconds]; | ||||
|         testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithLong:sessionIntervalInMilliseconds]; | ||||
|         testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithLong:subsessionIntervalInMilliseconds]; | ||||
|         testOptions.attStatusInt = [NSNumber numberWithInt:attStatus]; | ||||
| 
 | ||||
|         if (teardown != -1) { | ||||
|             [AdjustUnityDelegate teardown]; | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ namespace com.adjust.sdk | |||
| #if UNITY_IOS | ||||
|     public class AdjustiOS | ||||
|     { | ||||
|         private const string sdkPrefix = "unity4.36.0"; | ||||
|         private const string sdkPrefix = "unity4.38.0"; | ||||
| 
 | ||||
|         [DllImport("__Internal")] | ||||
|         private static extern void _AdjustLaunchApp( | ||||
|  | @ -31,6 +31,7 @@ namespace com.adjust.sdk | |||
|             int linkMeEnabled, | ||||
|             int needsCost, | ||||
|             int coppaCompliant, | ||||
|             int readDeviceInfoOnce, | ||||
|             long secretId, | ||||
|             long info1, | ||||
|             long info2, | ||||
|  | @ -54,6 +55,7 @@ namespace com.adjust.sdk | |||
|             double revenue, | ||||
|             string currency, | ||||
|             string receipt, | ||||
|             string receiptBase64, | ||||
|             string productId, | ||||
|             string transactionId, | ||||
|             string callbackId, | ||||
|  | @ -153,10 +155,7 @@ namespace com.adjust.sdk | |||
| 
 | ||||
|         [DllImport("__Internal")] | ||||
|         private static extern void _AdjustSetTestOptions( | ||||
|             string baseUrl, | ||||
|             string gdprUrl, | ||||
|             string subscriptionUrl, | ||||
|             string purchaseVerificationUrl, | ||||
|             string overwriteUrl, | ||||
|             string extraPath, | ||||
|             long timerIntervalInMilliseconds, | ||||
|             long timerStartInMilliseconds, | ||||
|  | @ -165,7 +164,9 @@ namespace com.adjust.sdk | |||
|             int teardown, | ||||
|             int deleteState, | ||||
|             int noBackoffWait, | ||||
|             int adServicesFrameworkEnabled); | ||||
|             int adServicesFrameworkEnabled, | ||||
|             int attStatus, | ||||
|             string idfa); | ||||
| 
 | ||||
|         [DllImport("__Internal")] | ||||
|         private static extern void _AdjustRequestTrackingAuthorizationWithCompletionHandler(string sceneName); | ||||
|  | @ -201,6 +202,9 @@ namespace com.adjust.sdk | |||
|             string receipt, | ||||
|             string sceneName); | ||||
| 
 | ||||
|         [DllImport("__Internal")] | ||||
|         private static extern void _AdjustProcessDeeplink(string url, string sceneName); | ||||
| 
 | ||||
|         public AdjustiOS() {} | ||||
| 
 | ||||
|         public static void Start(AdjustConfig adjustConfig) | ||||
|  | @ -231,6 +235,7 @@ namespace com.adjust.sdk | |||
|             int linkMeEnabled = AdjustUtils.ConvertBool(adjustConfig.linkMeEnabled); | ||||
|             int needsCost = AdjustUtils.ConvertBool(adjustConfig.needsCost); | ||||
|             int coppaCompliant = AdjustUtils.ConvertBool(adjustConfig.coppaCompliantEnabled); | ||||
|             int readDeviceInfoOnce = AdjustUtils.ConvertBool(adjustConfig.readDeviceInfoOnceEnabled); | ||||
|             int isAttributionCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getAttributionChangedDelegate() != null); | ||||
|             int isEventSuccessCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventSuccessDelegate() != null); | ||||
|             int isEventFailureCallbackImplemented = AdjustUtils.ConvertBool(adjustConfig.getEventFailureDelegate() != null); | ||||
|  | @ -260,6 +265,7 @@ namespace com.adjust.sdk | |||
|                 linkMeEnabled, | ||||
|                 needsCost, | ||||
|                 coppaCompliant, | ||||
|                 readDeviceInfoOnce, | ||||
|                 secretId, | ||||
|                 info1, | ||||
|                 info2, | ||||
|  | @ -285,13 +291,25 @@ namespace com.adjust.sdk | |||
|             string eventToken = adjustEvent.eventToken; | ||||
|             string currency = adjustEvent.currency; | ||||
|             string receipt = adjustEvent.receipt; | ||||
|             string receiptBase64 = adjustEvent.receiptBase64; | ||||
|             string productId = adjustEvent.productId; | ||||
|             string transactionId = adjustEvent.transactionId; | ||||
|             string callbackId = adjustEvent.callbackId; | ||||
|             string stringJsonCallbackParameters = AdjustUtils.ConvertListToJson(adjustEvent.callbackList); | ||||
|             string stringJsonPartnerParameters = AdjustUtils.ConvertListToJson(adjustEvent.partnerList); | ||||
| 
 | ||||
|             _AdjustTrackEvent(eventToken, revenue, currency, receipt, productId, transactionId, callbackId, isReceiptSet, stringJsonCallbackParameters, stringJsonPartnerParameters); | ||||
|             _AdjustTrackEvent( | ||||
|                 eventToken, | ||||
|                 revenue, | ||||
|                 currency, | ||||
|                 receipt, | ||||
|                 receiptBase64, | ||||
|                 productId, | ||||
|                 transactionId, | ||||
|                 callbackId, | ||||
|                 isReceiptSet, | ||||
|                 stringJsonCallbackParameters, | ||||
|                 stringJsonPartnerParameters); | ||||
|         }         | ||||
| 
 | ||||
|         public static void SetEnabled(bool enabled) | ||||
|  | @ -526,14 +544,17 @@ namespace com.adjust.sdk | |||
|                 cSceneName); | ||||
|         } | ||||
| 
 | ||||
|         public static void ProcessDeeplink(string url, string sceneName) | ||||
|         { | ||||
|             _AdjustProcessDeeplink(url, sceneName); | ||||
|         } | ||||
| 
 | ||||
|         // Used for testing only. | ||||
|         public static void SetTestOptions(Dictionary<string, string> testOptions) | ||||
|         { | ||||
|             string baseUrl = testOptions[AdjustUtils.KeyTestOptionsBaseUrl]; | ||||
|             string gdprUrl = testOptions[AdjustUtils.KeyTestOptionsGdprUrl]; | ||||
|             string subscriptionUrl = testOptions[AdjustUtils.KeyTestOptionsSubscriptionUrl]; | ||||
|             string purchaseVerificationUrl = testOptions[AdjustUtils.KeyTestOptionsPurchaseVerificationUrl]; | ||||
|             string overwriteUrl = testOptions[AdjustUtils.KeyTestOptionsOverwriteUrl]; | ||||
|             string extraPath = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsExtraPath) ? testOptions[AdjustUtils.KeyTestOptionsExtraPath] : null; | ||||
|             string idfa = testOptions.ContainsKey(AdjustUtils.KeyTestOptionsIdfa) ? testOptions[AdjustUtils.KeyTestOptionsIdfa] : null; | ||||
|             long timerIntervalMilis = -1; | ||||
|             long timerStartMilis = -1; | ||||
|             long sessionIntMilis = -1; | ||||
|  | @ -542,6 +563,7 @@ namespace com.adjust.sdk | |||
|             bool deleteState = false; | ||||
|             bool noBackoffWait = false; | ||||
|             bool adServicesFrameworkEnabled = false; | ||||
|             int attStatus = -1; | ||||
| 
 | ||||
|             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsTimerIntervalInMilliseconds))  | ||||
|             { | ||||
|  | @ -575,12 +597,13 @@ namespace com.adjust.sdk | |||
|             { | ||||
|                 adServicesFrameworkEnabled = testOptions[AdjustUtils.KeyTestOptionsAdServicesFrameworkEnabled].ToLower() == "true"; | ||||
|             } | ||||
|             if (testOptions.ContainsKey(AdjustUtils.KeyTestOptionsAttStatus))  | ||||
|             { | ||||
|                 attStatus = int.Parse(testOptions[AdjustUtils.KeyTestOptionsAttStatus]); | ||||
|             } | ||||
| 
 | ||||
|             _AdjustSetTestOptions( | ||||
|                 baseUrl, | ||||
|                 gdprUrl, | ||||
|                 subscriptionUrl, | ||||
|                 purchaseVerificationUrl, | ||||
|                 overwriteUrl, | ||||
|                 extraPath, | ||||
|                 timerIntervalMilis, | ||||
|                 timerStartMilis, | ||||
|  | @ -589,7 +612,9 @@ namespace com.adjust.sdk | |||
|                 AdjustUtils.ConvertBool(teardown), | ||||
|                 AdjustUtils.ConvertBool(deleteState), | ||||
|                 AdjustUtils.ConvertBool(noBackoffWait), | ||||
|                 AdjustUtils.ConvertBool(adServicesFrameworkEnabled)); | ||||
|                 AdjustUtils.ConvertBool(adServicesFrameworkEnabled), | ||||
|                 attStatus, | ||||
|                 idfa); | ||||
|         } | ||||
| 
 | ||||
|         public static void TrackSubsessionStart(string testingArgument = null) | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 1caf9524837164956bbd913fc07df697 | ||||
| folderAsset: yes | ||||
| DefaultImporter: | ||||
|   externalObjects: {} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
|  | @ -0,0 +1,80 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|     <dict> | ||||
|         <key>NSPrivacyTracking</key> | ||||
|         <true/> | ||||
|         <key>NSPrivacyTrackingDomains</key> | ||||
|         <array> | ||||
|             <string>https://consent.adjust.com</string> | ||||
|             <string>https://consent.adjust.net.in</string> | ||||
|             <string>https://consent.adjust.world</string> | ||||
|             <string>https://consent.adjust.cn</string> | ||||
|             <string>https://consent.eu.adjust.com</string> | ||||
|             <string>https://consent.tr.adjust.com</string> | ||||
|             <string>https://consent.us.adjust.com</string> | ||||
|         </array> | ||||
|         <key>NSPrivacyAccessedAPITypes</key> | ||||
|         <array> | ||||
|             <dict> | ||||
|                 <key>NSPrivacyAccessedAPIType</key> | ||||
|                 <string>NSPrivacyAccessedAPICategoryUserDefaults</string> | ||||
|                 <key>NSPrivacyAccessedAPITypeReasons</key> | ||||
|                 <array> | ||||
|                     <string>CA92.1</string> | ||||
|                 </array> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>NSPrivacyAccessedAPIType</key> | ||||
|                 <string>NSPrivacyAccessedAPICategoryFileTimestamp</string> | ||||
|                 <key>NSPrivacyAccessedAPITypeReasons</key> | ||||
|                 <array> | ||||
|                     <string>C617.1</string> | ||||
|                 </array> | ||||
|             </dict> | ||||
|         </array> | ||||
|         <key>NSPrivacyCollectedDataTypes</key> | ||||
|         <array> | ||||
|             <dict> | ||||
|                 <key>NSPrivacyCollectedDataType</key> | ||||
|                 <string>NSPrivacyCollectedDataTypeDeviceID</string> | ||||
|                 <key>NSPrivacyCollectedDataTypeLinked</key> | ||||
|                 <true/> | ||||
|                 <key>NSPrivacyCollectedDataTypeTracking</key> | ||||
|                 <false/> | ||||
|                 <key>NSPrivacyCollectedDataTypePurposes</key> | ||||
|                 <array> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeAnalytics</string> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string> | ||||
|                 </array> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>NSPrivacyCollectedDataType</key> | ||||
|                 <string>NSPrivacyCollectedDataTypeAdvertisingData</string> | ||||
|                 <key>NSPrivacyCollectedDataTypeLinked</key> | ||||
|                 <true/> | ||||
|                 <key>NSPrivacyCollectedDataTypeTracking</key> | ||||
|                 <true/> | ||||
|                 <key>NSPrivacyCollectedDataTypePurposes</key> | ||||
|                 <array> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising</string> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string> | ||||
|                 </array> | ||||
|             </dict> | ||||
|             <dict> | ||||
|                 <key>NSPrivacyCollectedDataType</key> | ||||
|                 <string>NSPrivacyCollectedDataTypeProductInteraction</string> | ||||
|                 <key>NSPrivacyCollectedDataTypeLinked</key> | ||||
|                 <true/> | ||||
|                 <key>NSPrivacyCollectedDataTypeTracking</key> | ||||
|                 <false/> | ||||
|                 <key>NSPrivacyCollectedDataTypePurposes</key> | ||||
|                 <array> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeAnalytics</string> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string> | ||||
|                     <string>NSPrivacyCollectedDataTypePurposeProductPersonalization</string> | ||||
|                 </array> | ||||
|             </dict> | ||||
|         </array> | ||||
|     </dict> | ||||
| </plist> | ||||
|  | @ -0,0 +1,3 @@ | |||
| fileFormatVersion: 2 | ||||
| guid: 50d6b4f70c684250a7c697555a855ad0 | ||||
| timeCreated: 1713243654 | ||||
		Loading…
	
		Reference in New Issue