Compare commits
	
		
			5 Commits 
		
	
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						ed966a1395 | |
| 
							
							
								
									
								
								 | 
						e90ad0d217 | |
| 
							
							
								
									
								
								 | 
						9a9c30a2e3 | |
| 
							
							
								
									
								
								 | 
						8df5245303 | |
| 
							
							
								
									
								
								 | 
						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.
										
									
								
							| 
						 | 
				
			
			@ -315,6 +315,9 @@ public class AdjustEditor : AssetPostprocessor
 | 
			
		|||
    private static void AddUniversalLinkDomains(PBXProject project, string xCodeProjectPath, string xCodeTarget)
 | 
			
		||||
    {
 | 
			
		||||
        string entitlementsFileName = "Unity-iPhone.entitlements";
 | 
			
		||||
#if UNITY_2021_3
 | 
			
		||||
        entitlementsFileName = "Unity-iPhone/Unity-iPhone.entitlements";
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        Debug.Log("[Adjust]: Adding associated domains to entitlements file.");
 | 
			
		||||
#if UNITY_2019_3_OR_NEWER
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ namespace Guru.Editor.Adjust
 | 
			
		|||
    {
 | 
			
		||||
        // ------------ VERSION INFO ------------
 | 
			
		||||
        public const string Version = "0.1.0";
 | 
			
		||||
        public const string SdkVersion = "4.36.0";
 | 
			
		||||
        public const string SdkVersion = "4.38.0";
 | 
			
		||||
        // ------------ VERSION INFO ------------
 | 
			
		||||
 | 
			
		||||
        public const string PackageName = "com.guru.unity.adjust";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,12 @@
 | 
			
		|||
{
 | 
			
		||||
  "name": "com.guru.unity.adjust",
 | 
			
		||||
  "displayName": "Guru Adjust",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "description": "Guru 整合 Adjust 插件",
 | 
			
		||||
  "version": "1.1.1",
 | 
			
		||||
  "description": "Guru 整合 Adjust 插件 (4.38.0)",
 | 
			
		||||
  "unity": "2020.3",
 | 
			
		||||
  "author":{
 | 
			
		||||
    "name": "Guru Game"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "category": "Game tool",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue