diff --git a/Adjust/Android/AdjustAndroid.cs b/Adjust/Android/AdjustAndroid.cs index fdaa33b..92b7ecb 100644 --- a/Adjust/Android/AdjustAndroid.cs +++ b/Adjust/Android/AdjustAndroid.cs @@ -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("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 resolvedLinkCallback) + { + onDeeplinkResolvedListener = new DeeplinkResolutionListener(resolvedLinkCallback); + AndroidJavaClass ajcUri = new AndroidJavaClass("android.net.Uri"); + AndroidJavaObject ajoUri = ajcUri.CallStatic("parse", url); + ajcAdjust.CallStatic("processDeeplink", ajoUri, ajoCurrentActivity, onDeeplinkResolvedListener); + } + // Used for testing only. public static void SetTestOptions(Dictionary testOptions) { @@ -1024,6 +1033,24 @@ namespace com.adjust.sdk } } + private class DeeplinkResolutionListener : AndroidJavaProxy + { + private Action callback; + + public DeeplinkResolutionListener(Action 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) { diff --git a/Adjust/Android/adjust-android.jar b/Adjust/Android/adjust-android.jar index c07b4bf..29803a0 100644 Binary files a/Adjust/Android/adjust-android.jar and b/Adjust/Android/adjust-android.jar differ diff --git a/Adjust/Editor/AdjustSettings.cs b/Adjust/Editor/AdjustSettings.cs index eb23e12..4d07644 100644 --- a/Adjust/Editor/AdjustSettings.cs +++ b/Adjust/Editor/AdjustSettings.cs @@ -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); } diff --git a/Adjust/Unity/Adjust.cs b/Adjust/Unity/Adjust.cs index fc7ef1d..269adf7 100644 --- a/Adjust/Unity/Adjust.cs +++ b/Adjust/Unity/Adjust.cs @@ -86,6 +86,7 @@ namespace com.adjust.sdk private static Action skadUpdateConversionValueDelegate = null; private static Action skad4UpdateConversionValueDelegate = null; private static Action verificationInfoDelegate = null; + private static Action deeplinkResolutionDelegate = null; #endif void Awake() @@ -959,6 +960,28 @@ namespace com.adjust.sdk #endif } + public static void processDeeplink( + string url, + Action 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() diff --git a/Adjust/Unity/AdjustConfig.cs b/Adjust/Unity/AdjustConfig.cs index e3629d8..481472e 100644 --- a/Adjust/Unity/AdjustConfig.cs +++ b/Adjust/Unity/AdjustConfig.cs @@ -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; diff --git a/Adjust/Unity/AdjustEvent.cs b/Adjust/Unity/AdjustEvent.cs index 7382beb..f4e87ce 100644 --- a/Adjust/Unity/AdjustEvent.cs +++ b/Adjust/Unity/AdjustEvent.cs @@ -15,6 +15,7 @@ namespace com.adjust.sdk internal List 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) { diff --git a/Adjust/Unity/AdjustUtils.cs b/Adjust/Unity/AdjustUtils.cs index 77b1b59..d897116 100644 --- a/Adjust/Unity/AdjustUtils.cs +++ b/Adjust/Unity/AdjustUtils.cs @@ -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) { diff --git a/Adjust/Windows/AdjustWindows.cs b/Adjust/Windows/AdjustWindows.cs index 4a79826..a1762a8 100644 --- a/Adjust/Windows/AdjustWindows.cs +++ b/Adjust/Windows/AdjustWindows.cs @@ -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) diff --git a/Adjust/iOS/ADJConfig.h b/Adjust/iOS/ADJConfig.h index d07993a..e9b916e 100644 --- a/Adjust/iOS/ADJConfig.h +++ b/Adjust/iOS/ADJConfig.h @@ -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 diff --git a/Adjust/iOS/Adjust.h b/Adjust/iOS/Adjust.h index 361cd83..47517ab 100644 --- a/Adjust/iOS/Adjust.h +++ b/Adjust/iOS/Adjust.h @@ -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; diff --git a/Adjust/iOS/AdjustSdk.a b/Adjust/iOS/AdjustSdk.a index fca3d71..807ed05 100644 Binary files a/Adjust/iOS/AdjustSdk.a and b/Adjust/iOS/AdjustSdk.a differ diff --git a/Adjust/iOS/AdjustUnity.mm b/Adjust/iOS/AdjustUnity.mm index 033c748..93adcab 100644 --- a/Adjust/iOS/AdjustUnity.mm +++ b/Adjust/iOS/AdjustUnity.mm @@ -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]; diff --git a/Adjust/iOS/AdjustiOS.cs b/Adjust/iOS/AdjustiOS.cs index 17fe644..40fb33f 100644 --- a/Adjust/iOS/AdjustiOS.cs +++ b/Adjust/iOS/AdjustiOS.cs @@ -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 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,21 +597,24 @@ 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, sessionIntMilis, - subsessionIntMilis, + subsessionIntMilis, AdjustUtils.ConvertBool(teardown), AdjustUtils.ConvertBool(deleteState), AdjustUtils.ConvertBool(noBackoffWait), - AdjustUtils.ConvertBool(adServicesFrameworkEnabled)); + AdjustUtils.ConvertBool(adServicesFrameworkEnabled), + attStatus, + idfa); } public static void TrackSubsessionStart(string testingArgument = null) diff --git a/Editor/PrivacyManifest.meta b/Editor/PrivacyManifest.meta new file mode 100644 index 0000000..652bcf5 --- /dev/null +++ b/Editor/PrivacyManifest.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1caf9524837164956bbd913fc07df697 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/PrivacyManifest/PrivacyInfo.xml b/Editor/PrivacyManifest/PrivacyInfo.xml new file mode 100644 index 0000000..7b04f1f --- /dev/null +++ b/Editor/PrivacyManifest/PrivacyInfo.xml @@ -0,0 +1,80 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + https://consent.adjust.com + https://consent.adjust.net.in + https://consent.adjust.world + https://consent.adjust.cn + https://consent.eu.adjust.com + https://consent.tr.adjust.com + https://consent.us.adjust.com + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeDeviceID + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeAdvertisingData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising + NSPrivacyCollectedDataTypePurposeDeveloperAdvertising + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + NSPrivacyCollectedDataTypePurposeAppFunctionality + NSPrivacyCollectedDataTypePurposeProductPersonalization + + + + + \ No newline at end of file diff --git a/Editor/PrivacyManifest/PrivacyInfo.xml.meta b/Editor/PrivacyManifest/PrivacyInfo.xml.meta new file mode 100644 index 0000000..b17f58f --- /dev/null +++ b/Editor/PrivacyManifest/PrivacyInfo.xml.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 50d6b4f70c684250a7c697555a855ad0 +timeCreated: 1713243654 \ No newline at end of file