diff --git a/Adjust.podspec b/Adjust.podspec index ae51132a3..7dfc2d8ff 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = "Adjust" - s.version = "4.13.0" + s.version = "4.14.0" s.summary = "This is the iOS SDK of adjust. You can read more about it at http://adjust.com." s.homepage = "https://github.com/adjust/ios_sdk" s.license = { :type => 'MIT', :file => 'MIT-LICENSE' } s.author = { "Christian Wellenbrock" => "welle@adjust.com" } - s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.13.0" } + s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.14.0" } s.ios.deployment_target = '6.0' s.tvos.deployment_target = '9.0' s.framework = 'SystemConfiguration' diff --git a/Adjust.xcodeproj/project.pbxproj b/Adjust.xcodeproj/project.pbxproj index e3d70ef4d..2e653c740 100644 --- a/Adjust.xcodeproj/project.pbxproj +++ b/Adjust.xcodeproj/project.pbxproj @@ -1476,7 +1476,7 @@ 9679920518BBAE2800394606 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = "adjust GmbH"; TargetAttributes = { 9615158E1CD2CB2C0022D336 = { @@ -1993,12 +1993,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -2044,12 +2046,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdk.xcscheme b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdk.xcscheme index 34092201a..5fce60714 100644 --- a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdk.xcscheme +++ b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdk.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Release" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme index 11211fec7..9a9b04e13 100644 --- a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme +++ b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Adjust/ADJActivityHandler.h b/Adjust/ADJActivityHandler.h index 2070ffdc8..a16bb7a13 100644 --- a/Adjust/ADJActivityHandler.h +++ b/Adjust/ADJActivityHandler.h @@ -70,7 +70,7 @@ - (BOOL)isEnabled; - (BOOL)isGdprForgotten; -- (void)appWillOpenUrl:(NSURL*)url; +- (void)appWillOpenUrl:(NSURL*)url withClickTime:(NSDate *)clickTime; - (void)setDeviceToken:(NSData *)deviceToken; - (void)setGdprForgetMe; - (void)setTrackingStateOptedOut; diff --git a/Adjust/ADJActivityHandler.m b/Adjust/ADJActivityHandler.m index 54ddd6ba5..5a7d8a059 100644 --- a/Adjust/ADJActivityHandler.m +++ b/Adjust/ADJActivityHandler.m @@ -346,11 +346,11 @@ - (NSString *)adid { return self.activityState.adid; } -- (void)appWillOpenUrl:(NSURL*)url { +- (void)appWillOpenUrl:(NSURL *)url withClickTime:(NSDate *)clickTime { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI appWillOpenUrlI:selfI url:url]; + [selfI appWillOpenUrlI:selfI url:url clickTime:clickTime]; }]; } @@ -758,6 +758,8 @@ - (void)startI:(ADJActivityHandler *)selfI { [selfI processSessionI:selfI]; [selfI checkAttributionStateI:selfI]; + + [selfI processCachedDeeplinkI:selfI]; } - (void)processSessionI:(ADJActivityHandler *)selfI { @@ -865,6 +867,22 @@ - (void)checkAttributionStateI:(ADJActivityHandler *)selfI { [selfI.attributionHandler getAttribution]; } +- (void)processCachedDeeplinkI:(ADJActivityHandler *)selfI { + if (![selfI checkActivityStateI:selfI]) return; + + NSURL *cachedDeeplinkUrl = [ADJUserDefaults getDeeplinkUrl]; + if (cachedDeeplinkUrl == nil) { + return; + } + NSDate *cachedDeeplinkClickTime = [ADJUserDefaults getDeeplinkClickTime]; + if (cachedDeeplinkClickTime == nil) { + return; + } + + [selfI appWillOpenUrlI:selfI url:cachedDeeplinkUrl clickTime:cachedDeeplinkClickTime]; + [ADJUserDefaults removeDeeplink]; +} + - (void)endI:(ADJActivityHandler *)selfI { // pause sending if it's not allowed to send if (![selfI toSendI:selfI]) { @@ -1214,7 +1232,8 @@ - (void)checkStatusI:(ADJActivityHandler *)selfI } - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI - url:(NSURL *)url { + url:(NSURL *)url + clickTime:(NSDate *)clickTime { if ([ADJUtil isNull:url]) { return; } @@ -1251,7 +1270,7 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI createdAt:now]; clickBuilder.deeplinkParameters = adjustDeepLinks; clickBuilder.attribution = deeplinkAttribution; - clickBuilder.clickTime = [NSDate date]; + clickBuilder.clickTime = clickTime; clickBuilder.deeplink = [url absoluteString]; ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"deeplink"]; diff --git a/Adjust/ADJUserDefaults.h b/Adjust/ADJUserDefaults.h index cb20f548f..8fc1389db 100644 --- a/Adjust/ADJUserDefaults.h +++ b/Adjust/ADJUserDefaults.h @@ -14,8 +14,6 @@ + (NSData *)getPushToken; -+ (void)clearAdjustStuff; - + (void)removePushToken; + (void)setInstallTracked; @@ -28,4 +26,15 @@ + (void)removeGdprForgetMe; ++ (void)saveDeeplinkUrl:(NSURL *)deeplink + andClickTime:(NSDate *)clickTime; + ++ (NSURL *)getDeeplinkUrl; + ++ (NSDate *)getDeeplinkClickTime; + ++ (void)removeDeeplink; + ++ (void)clearAdjustStuff; + @end diff --git a/Adjust/ADJUserDefaults.m b/Adjust/ADJUserDefaults.m index 09d92b853..ddbaa4df8 100644 --- a/Adjust/ADJUserDefaults.m +++ b/Adjust/ADJUserDefaults.m @@ -11,6 +11,8 @@ static NSString * const PREFS_KEY_PUSH_TOKEN = @"adj_push_token"; static NSString * const PREFS_KEY_GDPR_FORGET_ME = @"adj_gdpr_forget_me"; static NSString * const PREFS_KEY_INSTALL_TRACKED = @"adj_install_tracked"; +static NSString * const PREFS_KEY_DEEPLINK_URL = @"adj_deeplink_url"; +static NSString * const PREFS_KEY_DEEPLINK_CLICK_TIME = @"adj_deeplink_click_time"; @implementation ADJUserDefaults @@ -53,10 +55,32 @@ + (void)removeGdprForgetMe { [[NSUserDefaults standardUserDefaults] synchronize]; } ++ (void)saveDeeplinkUrl:(NSURL *)deeplink andClickTime:(NSDate *)clickTime { + [[NSUserDefaults standardUserDefaults] setURL:deeplink forKey:PREFS_KEY_DEEPLINK_URL]; + [[NSUserDefaults standardUserDefaults] setObject:clickTime forKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + ++ (NSURL *)getDeeplinkUrl { + return [[NSUserDefaults standardUserDefaults] URLForKey:PREFS_KEY_DEEPLINK_URL]; +} + ++ (NSDate *)getDeeplinkClickTime { + return [[NSUserDefaults standardUserDefaults] objectForKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; +} + ++ (void)removeDeeplink { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_URL]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + + (void)clearAdjustStuff { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_INSTALL_TRACKED]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_GDPR_FORGET_ME]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_URL]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; [[NSUserDefaults standardUserDefaults] synchronize]; } diff --git a/Adjust/ADJUtil.m b/Adjust/ADJUtil.m index 7ab079c32..2c2201f5e 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/ADJUtil.m @@ -41,7 +41,7 @@ static NSString *userAgent = nil; -static NSString * const kClientSdk = @"ios4.13.0"; +static NSString * const kClientSdk = @"ios4.14.0"; static NSString * const kDeeplinkParam = @"deep_link="; static NSString * const kSchemeDelimiter = @"://"; static NSString * const kDefaultScheme = @"AdjustUniversalScheme"; diff --git a/Adjust/Adjust.h b/Adjust/Adjust.h index d2fca9a10..4024c7b9f 100644 --- a/Adjust/Adjust.h +++ b/Adjust/Adjust.h @@ -2,7 +2,7 @@ // Adjust.h // Adjust // -// V4.13.0 +// V4.14.0 // Created by Christian Wellenbrock (wellle) on 23rd July 2013. // Copyright © 2012-2017 Adjust GmbH. All rights reserved. // @@ -23,6 +23,7 @@ @property (nonatomic, copy, nullable) NSNumber *subsessionIntervalInMilliseconds; @property (nonatomic, assign) BOOL teardown; @property (nonatomic, assign) BOOL deleteState; +@property (nonatomic, assign) BOOL noBackoffWait; @end diff --git a/Adjust/Adjust.m b/Adjust/Adjust.m index 6f18c4092..1637120be 100644 --- a/Adjust/Adjust.m +++ b/Adjust/Adjust.m @@ -223,11 +223,13 @@ - (BOOL)isEnabled { } - (void)appWillOpenUrl:(NSURL *)url { + NSDate *clickTime = [NSDate date]; if (![self checkActivityHandler]) { + [ADJUserDefaults saveDeeplinkUrl:url andClickTime:clickTime]; return; } - [self.activityHandler appWillOpenUrl:url]; + [self.activityHandler appWillOpenUrl:url withClickTime:clickTime]; } - (void)setDeviceToken:(NSData *)deviceToken { @@ -421,6 +423,10 @@ - (void)setTestOptions:(AdjustTestOptions *)testOptions { NSTimeInterval subsessionIntervalInSeconds = [testOptions.subsessionIntervalInMilliseconds intValue] / 1000.0; [ADJAdjustFactory setSubsessionInterval:subsessionIntervalInSeconds]; } + if (testOptions.noBackoffWait) { + [ADJAdjustFactory setSdkClickHandlerBackoffStrategy:[ADJBackoffStrategy backoffStrategyWithType:ADJNoWait]]; + [ADJAdjustFactory setPackageHandlerBackoffStrategy:[ADJBackoffStrategy backoffStrategyWithType:ADJNoWait]]; + } } #pragma mark - Private & helper methods diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj index 377e1b18c..51fd68434 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj @@ -366,7 +366,7 @@ 6F08421F2007769F00568A31 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = adjust; TargetAttributes = { 6F0842262007769F00568A31 = { @@ -500,6 +500,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -507,6 +508,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -555,6 +557,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -562,6 +565,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m b/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m index 879b9fab7..99456fb25 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m @@ -116,6 +116,13 @@ - (void)testOptions:(NSDictionary *)parameters { NSString *subsessionIntervalMilliS = [parameters objectForKey:@"subsessionInterval"][0]; testOptions.subsessionIntervalInMilliseconds = [ATAAdjustCommandExecutor convertMilliStringToNumber:subsessionIntervalMilliS]; } + if ([parameters objectForKey:@"noBackoffWait"]) { + NSString *noBackoffWaitStr = [parameters objectForKey:@"noBackoffWait"][0]; + testOptions.noBackoffWait = NO; + if ([noBackoffWaitStr isEqualToString:@"true"]) { + testOptions.noBackoffWait = YES; + } + } if ([parameters objectForKey:@"teardown"]) { NSArray *teardownOptions = [parameters objectForKey:@"teardown"]; for (int i = 0; i < teardownOptions.count; i = i + 1) { diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m index bfc1ce488..611b46fb8 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m @@ -36,7 +36,7 @@ - (void)viewDidLoad { } - (void)startTestSession { - [self.testLibrary startTestSession:@"ios4.13.0"]; + [self.testLibrary startTestSession:@"ios4.14.0"]; } - (void)didReceiveMemoryWarning { diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj index 75f7eef3e..9baba938f 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj @@ -168,7 +168,7 @@ 6F0842042007766700568A31 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = adjust; TargetAttributes = { 20E71745203B162B0073AC91 = { @@ -291,6 +291,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -298,6 +299,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -346,6 +348,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -353,6 +356,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLBlockingQueue.m b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLBlockingQueue.m index 4d23f8489..2e0e24bcc 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLBlockingQueue.m +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLBlockingQueue.m @@ -44,22 +44,22 @@ - (id)dequeue { __block id object; [ATLUtil addOperationAfterLast:self.operationQueue blockWithOperation:^(NSBlockOperation * operation) { - [_lock lock]; - while (_queue.count == 0) + [self.lock lock]; + while (self.queue.count == 0) { if (operation.cancelled) { - [_lock unlock]; + [self.lock unlock]; return; } - [_lock wait]; + [self.lock wait]; } if (operation.cancelled) { - [_lock unlock]; + [self.lock unlock]; return; } - object = [_queue objectAtIndex:0]; - [_queue removeObjectAtIndex:0]; - [_lock unlock]; + object = [self.queue objectAtIndex:0]; + [self.queue removeObjectAtIndex:0]; + [self.lock unlock]; }]; [self.operationQueue waitUntilAllOperationsAreFinished]; diff --git a/AdjustTests/AdjustUnitTests/ADJPackageFields.m b/AdjustTests/AdjustUnitTests/ADJPackageFields.m index 351007fb6..04e379b3f 100644 --- a/AdjustTests/AdjustUnitTests/ADJPackageFields.m +++ b/AdjustTests/AdjustUnitTests/ADJPackageFields.m @@ -16,7 +16,7 @@ - (id) init { // default values self.appToken = @"qwerty123456"; - self.clientSdk = @"ios4.13.0"; + self.clientSdk = @"ios4.14.0"; self.suffix = @""; self.environment = @"sandbox"; diff --git a/CHANGELOG.md b/CHANGELOG.md index 7449cc35f..1f4fcbd9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +### Version 4.14.0 (8th June 2018) +#### Added +- Added deep link caching in case `appWillOpenUrl` method is called before SDK is initialised. + +--- + ### Version 4.13.0 (27th April 2018) #### Added - Added `gdprForgetMe` method to `Adjust` interface to enable possibility for user to be forgotten in accordance with GDPR law. diff --git a/README.md b/README.md index 5735605c9..b262d3287 100644 --- a/README.md +++ b/README.md @@ -68,13 +68,13 @@ We will describe the steps to integrate the adjust SDK into your iOS project. We If you're using [CocoaPods][cocoapods], you can add the following line to your `Podfile` and continue from [this step](#sdk-integrate): ```ruby -pod 'Adjust', '~> 4.13.0' +pod 'Adjust', '~> 4.14.0' ``` or: ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.13.0' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.14.0' ``` --- diff --git a/VERSION b/VERSION index 813b83b65..c412a4e2e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.13.0 +4.14.0 diff --git a/doc/english/migrate.md b/doc/english/migrate.md index 10de70383..7140d67ec 100644 --- a/doc/english/migrate.md +++ b/doc/english/migrate.md @@ -1,4 +1,4 @@ -## Migrate your adjust SDK for iOS to v4.13.0 from v3.4.0 +## Migrate your adjust SDK for iOS to v4.14.0 from v3.4.0 ### Initial setup diff --git a/doc/japanese/migrate_ja.md b/doc/japanese/migrate_ja.md index 07d26a30b..53d0bc0e9 100644 --- a/doc/japanese/migrate_ja.md +++ b/doc/japanese/migrate_ja.md @@ -1,4 +1,4 @@ -## iOS用adjust SDKのv3.4.0からv4.13.0への移行 +## iOS用adjust SDKのv3.4.0からv4.14.0への移行 ### 初期設定 diff --git a/doc/migrate.md b/doc/migrate.md index 10de70383..7140d67ec 100644 --- a/doc/migrate.md +++ b/doc/migrate.md @@ -1,4 +1,4 @@ -## Migrate your adjust SDK for iOS to v4.13.0 from v3.4.0 +## Migrate your adjust SDK for iOS to v4.14.0 from v3.4.0 ### Initial setup diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj index dd3b170be..7e5df0295 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj @@ -294,7 +294,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = "adjust GmbH"; TargetAttributes = { 9DF7A9C11CB4ECA600D3591F = { @@ -414,12 +414,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -467,12 +469,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj index de9b48353..55b36d0c0 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj @@ -383,7 +383,7 @@ 9D10829C1CFDAF8E0050568B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = "adjust GmbH"; TargetAttributes = { 9D1082A31CFDAF8E0050568B = { @@ -494,12 +494,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -547,12 +549,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj b/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj index b9202f81e..b4344af66 100644 --- a/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj @@ -312,7 +312,7 @@ 963909341BCBFCF300A2E8A4 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = adjust; TargetAttributes = { 9639093B1BCBFCF300A2E8A4 = { @@ -437,12 +437,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -489,12 +491,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/examples/AdjustExample-iOS/AdjustExample-iOS/Info.plist b/examples/AdjustExample-iOS/AdjustExample-iOS/Info.plist index 00117477d..c90a93cf6 100644 --- a/examples/AdjustExample-iOS/AdjustExample-iOS/Info.plist +++ b/examples/AdjustExample-iOS/AdjustExample-iOS/Info.plist @@ -25,7 +25,7 @@ com.adjust.examples CFBundleURLSchemes - adjustExample + adjust-example diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj b/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj index 5cf41c690..4e6df9c20 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj @@ -460,7 +460,7 @@ 9DF7AC0C1CB4FEDB00D3591F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = "adjust GmbH"; TargetAttributes = { 9DF7AC131CB4FEDB00D3591F = { @@ -641,12 +641,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -694,12 +696,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj index 1409e8221..293224d35 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj @@ -318,7 +318,7 @@ 963909AA1BCC0D8300A2E8A4 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0940; ORGANIZATIONNAME = adjust; TargetAttributes = { 963909B11BCC0D8300A2E8A4 = { @@ -435,12 +435,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -487,12 +489,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;