diff --git a/Adjust.podspec b/Adjust.podspec index 4e58e53fc..7f749faca 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Adjust" s.module_name = "AdjustSdk" - s.version = "5.4.3" + s.version = "5.4.4" s.summary = "This is the iOS SDK of Adjust. You can read more about it at https://adjust.com." s.homepage = "https://github.com/adjust/ios_sdk" s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/Adjust/Adjust.h b/Adjust/Adjust.h index d5ceac5b6..16e08841c 100644 --- a/Adjust/Adjust.h +++ b/Adjust/Adjust.h @@ -2,7 +2,7 @@ // Adjust.h // Adjust SDK // -// V5.4.3 +// V5.4.4 // Created by Christian Wellenbrock (@wellle) on 23rd July 2013. // Copyright (c) 2012-Present Adjust GmbH. All rights reserved. // diff --git a/Adjust/Internal/ADJActivityHandler.m b/Adjust/Internal/ADJActivityHandler.m index 3abb8442b..00e4f06cb 100644 --- a/Adjust/Internal/ADJActivityHandler.m +++ b/Adjust/Internal/ADJActivityHandler.m @@ -129,7 +129,7 @@ @interface ADJActivityHandler() @property (nonatomic, strong) ADJOdmManager *odmManager; - (void)prepareDeeplinkI:(ADJActivityHandler *_Nullable)selfI - responseData:(ADJAttributionResponseData *_Nullable)attributionResponseData NS_EXTENSION_UNAVAILABLE_IOS(""); + deeplink:(NSURL *_Nullable)deeplink NS_EXTENSION_UNAVAILABLE_IOS(""); @end @@ -1546,6 +1546,10 @@ - (void)launchSessionResponseTasksI:(ADJActivityHandler *)selfI [selfI.attributionHandler getAttribution]; } + if (sessionResponseData) { + [selfI prepareDeeplinkI:selfI deeplink:sessionResponseData.deeplink]; + } + selfI.internalState.sessionResponseProcessed = YES; } @@ -1593,7 +1597,10 @@ - (void)launchAttributionResponseTasksI:(ADJActivityHandler *)selfI withObject:attributionResponseData.attribution]; } - [selfI prepareDeeplinkI:selfI responseData:attributionResponseData]; + if (attributionResponseData) { + [selfI prepareDeeplinkI:selfI deeplink:attributionResponseData.deeplink]; + } + } - (void)launchPurchaseVerificationResponseTasksI:(ADJActivityHandler *)selfI @@ -1616,27 +1623,24 @@ - (void)launchPurchaseVerificationResponseTasksI:(ADJActivityHandler *)selfI } - (void)prepareDeeplinkI:(ADJActivityHandler *)selfI - responseData:(ADJAttributionResponseData *)attributionResponseData { - if (attributionResponseData == nil) { - return; - } + deeplink:(NSURL *)deeplink { - if (attributionResponseData.deeplink == nil) { + if (deeplink == nil) { return; } - [selfI.logger info:@"Open deep link (%@)", attributionResponseData.deeplink.absoluteString]; + [selfI.logger info:@"Open deep link (%@)", deeplink.absoluteString]; [ADJUtil launchInMainThread:^{ BOOL toLaunchDeeplink = YES; if ([selfI.adjustDelegate respondsToSelector:@selector(adjustDeferredDeeplinkReceived:)]) { toLaunchDeeplink = [selfI.adjustDelegate - adjustDeferredDeeplinkReceived:attributionResponseData.deeplink]; + adjustDeferredDeeplinkReceived:deeplink]; } if (toLaunchDeeplink) { - [ADJUtil launchDeepLinkMain:attributionResponseData.deeplink]; + [ADJUtil launchDeepLinkMain:deeplink]; } }]; } diff --git a/Adjust/Internal/ADJAttributionHandler.m b/Adjust/Internal/ADJAttributionHandler.m index bd4428e49..a66e974e2 100644 --- a/Adjust/Internal/ADJAttributionHandler.m +++ b/Adjust/Internal/ADJAttributionHandler.m @@ -118,7 +118,9 @@ - (void)resumeSending { - (void)checkSessionResponseI:(ADJAttributionHandler*)selfI sessionResponseData:(ADJSessionResponseData *)sessionResponseData { [selfI checkAttributionI:selfI responseData:sessionResponseData]; - + + [selfI checkDeeplinkInSessionResponseI:selfI sessionResponseData:sessionResponseData]; + [selfI.activityHandler launchSessionResponseTasks:sessionResponseData]; } @@ -133,7 +135,7 @@ - (void)checkAttributionResponseI:(ADJAttributionHandler*)selfI attributionResponseData:(ADJAttributionResponseData *)attributionResponseData { [selfI checkAttributionI:selfI responseData:attributionResponseData]; - [selfI checkDeeplinkI:selfI attributionResponseData:attributionResponseData]; + [selfI checkDeeplinkInAttributionResponseI:selfI attributionResponseData:attributionResponseData]; [selfI.activityHandler launchAttributionResponseTasks:attributionResponseData]; } @@ -162,23 +164,37 @@ - (void)checkAttributionI:(ADJAttributionHandler*)selfI responseData.attribution = [[ADJAttribution alloc] initWithJsonDict:jsonAttribution]; } -- (void)checkDeeplinkI:(ADJAttributionHandler*)selfI -attributionResponseData:(ADJAttributionResponseData *)attributionResponseData { +- (void)checkDeeplinkInAttributionResponseI:(ADJAttributionHandler*)selfI + attributionResponseData:(ADJAttributionResponseData *)attributionResponseData { if (attributionResponseData.jsonResponse == nil) { return; } - NSDictionary * jsonAttribution = [attributionResponseData.jsonResponse objectForKey:@"attribution"]; + NSDictionary *jsonAttribution = [attributionResponseData.jsonResponse objectForKey:@"attribution"]; if (jsonAttribution == nil) { return; } - NSString *deepLink = [jsonAttribution objectForKey:@"deeplink"]; - if (deepLink == nil) { + NSString *deeplink = [jsonAttribution objectForKey:@"deeplink"]; + if (deeplink == nil) { + return; + } + + attributionResponseData.deeplink = [NSURL URLWithString:deeplink]; +} + +- (void)checkDeeplinkInSessionResponseI:(ADJAttributionHandler*)selfI + sessionResponseData:(ADJSessionResponseData *)sessionResponseData { + if (sessionResponseData.jsonResponse == nil) { + return; + } + + NSString *deeplink = [sessionResponseData.jsonResponse objectForKey:@"deeplink"]; + if (deeplink == nil) { return; } - attributionResponseData.deeplink = [NSURL URLWithString:deepLink]; + sessionResponseData.deeplink = [NSURL URLWithString:deeplink]; } - (void)requestAttributionI:(ADJAttributionHandler*)selfI { diff --git a/Adjust/Internal/ADJResponseData.h b/Adjust/Internal/ADJResponseData.h index 923b8915e..881a42565 100644 --- a/Adjust/Internal/ADJResponseData.h +++ b/Adjust/Internal/ADJResponseData.h @@ -65,6 +65,8 @@ typedef NS_ENUM(int, ADJTrackingState) { - (ADJSessionFailure *)failureResponseData; +@property (nonatomic, strong) NSURL *deeplink; + @end @interface ADJSdkClickResponseData : ADJResponseData diff --git a/Adjust/Internal/ADJUtil.m b/Adjust/Internal/ADJUtil.m index 994e21cbe..aabc3a3e5 100644 --- a/Adjust/Internal/ADJUtil.m +++ b/Adjust/Internal/ADJUtil.m @@ -31,7 +31,7 @@ static NSRegularExpression *goLinkUniversalLinkRegex = nil; static NSRegularExpression *excludedDeeplinkRegex = nil; -static NSString * const kClientSdk = @"ios5.4.3"; +static NSString * const kClientSdk = @"ios5.4.4"; static NSString * const kDeeplinkParam = @"deep_link="; static NSString * const kSchemeDelimiter = @"://"; static NSString * const kDefaultScheme = @"AdjustUniversalScheme"; diff --git a/AdjustBridge/AdjustBridgeRegister.m b/AdjustBridge/AdjustBridgeRegister.m index 878bda030..0f5737eea 100644 --- a/AdjustBridge/AdjustBridgeRegister.m +++ b/AdjustBridge/AdjustBridgeRegister.m @@ -176,7 +176,7 @@ function canSend(okCheck, errReason) { if (this.sdkPrefix) { return this.sdkPrefix; } else { - return 'web-bridge5.4.3'; + return 'web-bridge5.4.4'; } }, diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj index e32c06f70..865f15958 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj @@ -509,7 +509,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustTestApp; + PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -526,7 +526,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustTestApp; + PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Info.plist b/AdjustTests/AdjustTestApp/AdjustTestApp/Info.plist index 9d6cd0051..64cf662aa 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Info.plist +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Info.plist @@ -16,6 +16,17 @@ APPL CFBundleShortVersionString 1.0 + CFBundleURLTypes + + + CFBundleURLName + com.adjust.AdjustTestApp + CFBundleURLSchemes + + adjust-test + + + CFBundleVersion 1 LSRequiresIPhoneOS @@ -41,16 +52,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - CFBundleURLTypes - - - CFBundleURLName - com.adjust.AdjustTestApp - CFBundleURLSchemes - - adjust-test - - - diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h index 9d4430be6..f323620e6 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h @@ -12,8 +12,8 @@ //static NSString * urlOverwrite = @"http://127.0.0.1:8080"; //static NSString * controlUrl = @"ws://127.0.0.1:1987"; // device -static NSString * urlOverwrite = @"http://192.168.1.121:8080"; -static NSString * controlUrl = @"ws://192.168.1.121:1987"; +static NSString * urlOverwrite = @"http://192.168.21.180:8080"; +static NSString * controlUrl = @"ws://192.168.21.180:1987"; @interface ViewController : UIViewController diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m index de5ec7b9d..14857da05 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m @@ -29,7 +29,7 @@ - (void)viewDidLoad { andCommandDelegate:self.adjustCommandExecutor]; [self.adjustCommandExecutor setTestLibrary:self.testLibrary]; - // [self.testLibrary addTestDirectory:@"deeplink"]; + // [self.testLibrary addTestDirectory:@"deeplink-deferred"]; // [self.testLibrary doNotExitAfterEnd]; [self startTestSession]; } diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj index 39b20df05..1d1159f01 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj @@ -479,7 +479,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustWebBridgeTestApp; + PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -497,7 +497,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustWebBridgeTestApp; + PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 279d53067..83d12ad3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +### Version 5.4.4 (25th August 2025) +#### Added +- Added support for processing deferred deep links in session responses. + +--- + ### Version 5.4.3 (11th August 2025) #### Fixed - Fixed first session delay pre-init actions array lazy initialization. @@ -42,7 +48,7 @@ ### Version 5.1.1 (25th February 2025) #### Changed -- Syncrhonized resuming and pausing in all the handlers (internal changes). +- Synchronized resuming and pausing in all the handlers (internal changes). --- diff --git a/Carthage/AdjustSdk-Dynamic.json b/Carthage/AdjustSdk-Dynamic.json index dabef5c51..78f75c7c4 100644 --- a/Carthage/AdjustSdk-Dynamic.json +++ b/Carthage/AdjustSdk-Dynamic.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-iOS-tvOS-Dynamic-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-iOS-tvOS-Dynamic-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-iOS-tvOS-Dynamic-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-iOS-tvOS-Dynamic-5.4.1.xcframework.zip", diff --git a/Carthage/AdjustSdk-Static.json b/Carthage/AdjustSdk-Static.json index 19feb5cd0..a96edd956 100644 --- a/Carthage/AdjustSdk-Static.json +++ b/Carthage/AdjustSdk-Static.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-iOS-tvOS-Static-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-iOS-tvOS-Static-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-iOS-tvOS-Static-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-iOS-tvOS-Static-5.4.1.xcframework.zip", diff --git a/Carthage/AdjustSdkIm-Dynamic.json b/Carthage/AdjustSdkIm-Dynamic.json index 41ce2319e..a9fd0e0d7 100644 --- a/Carthage/AdjustSdkIm-Dynamic.json +++ b/Carthage/AdjustSdkIm-Dynamic.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-iMessage-Dynamic-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-iMessage-Dynamic-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-iMessage-Dynamic-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-iMessage-Dynamic-5.4.1.xcframework.zip", diff --git a/Carthage/AdjustSdkIm-Static.json b/Carthage/AdjustSdkIm-Static.json index 857770813..621c06e22 100644 --- a/Carthage/AdjustSdkIm-Static.json +++ b/Carthage/AdjustSdkIm-Static.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-iMessage-Static-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-iMessage-Static-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-iMessage-Static-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-iMessage-Static-5.4.1.xcframework.zip", diff --git a/Carthage/AdjustSdkWebBridge-Dynamic.json b/Carthage/AdjustSdkWebBridge-Dynamic.json index b4b51b601..04c217b8c 100644 --- a/Carthage/AdjustSdkWebBridge-Dynamic.json +++ b/Carthage/AdjustSdkWebBridge-Dynamic.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-WebBridge-Dynamic-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-WebBridge-Dynamic-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-WebBridge-Dynamic-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-WebBridge-Dynamic-5.4.1.xcframework.zip", diff --git a/Carthage/AdjustSdkWebBridge-Static.json b/Carthage/AdjustSdkWebBridge-Static.json index 5f2210a7e..5b2661979 100644 --- a/Carthage/AdjustSdkWebBridge-Static.json +++ b/Carthage/AdjustSdkWebBridge-Static.json @@ -1,4 +1,5 @@ { + "5.4.4": "https://github.com/adjust/ios_sdk/releases/download/v5.4.4/AdjustSdk-WebBridge-Static-5.4.4.xcframework.zip", "5.4.3": "https://github.com/adjust/ios_sdk/releases/download/v5.4.3/AdjustSdk-WebBridge-Static-5.4.3.xcframework.zip", "5.4.2": "https://github.com/adjust/ios_sdk/releases/download/v5.4.2/AdjustSdk-WebBridge-Static-5.4.2.xcframework.zip", "5.4.1": "https://github.com/adjust/ios_sdk/releases/download/v5.4.1/AdjustSdk-WebBridge-Static-5.4.1.xcframework.zip", diff --git a/VERSION b/VERSION index 6ffbe8ba8..426c1c179 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.4.3 +5.4.4