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