From e9554dbbfd15c2dda604e454d5e17089c7dfdfe1 Mon Sep 17 00:00:00 2001 From: uerceg Date: Thu, 21 Sep 2017 11:24:51 +0200 Subject: [PATCH 1/9] UUID persistence update --- Adjust/ADJActivityState.m | 92 ++++++++++++--------------------------- Adjust/ADJKeychain.h | 6 +-- Adjust/ADJKeychain.m | 74 +++++++++++++++---------------- 3 files changed, 64 insertions(+), 108 deletions(-) diff --git a/Adjust/ADJActivityState.m b/Adjust/ADJActivityState.m index 150f3fc92..3dbd054b1 100644 --- a/Adjust/ADJActivityState.m +++ b/Adjust/ADJActivityState.m @@ -82,35 +82,40 @@ - (BOOL)findTransactionId:(NSString *)transactionId { #pragma mark - Private & helper methods - (void)assignUuid:(NSString *)uuid { - // First check if there's any UUID written in keychain. - // If yes, use keychain value and flag it. - // If not, use given UUID and store it to keychain. - // If successfully written, flag it. - // If writing failed, don't flat it. - // Small addition as of iOS 10.3: - // Keychain needs to be written in different way in order to persist value between (un)installs. - - // Check if device supports new writing method. - // kSecAttrAccessGroupToken available since iOS 10.0. - if (NULL == &kSecAttrAccessGroupToken) { - // This device's iOS version doesn't support new writing method. - [self assignUuidOldMethod:uuid]; - return; - } else { - // This device's iOS version supports new writing method. - [self assignUuidNewMethod:uuid]; - return; + // 1. Check if UUID is written to keychain in v2 way. + // 1.1 If yes, take stored UUID and send it to v1 check. + // 1.2 If not, take given UUID and send it to v1 check. + // v1 check: + // 2.1 If given UUID is found in v1 way, use it. + // 2.2 If given UUID is not found in v1 way, write it in v1 way and use it. + + // First check if we have the key written with app's unique key name. + NSString *uniqueKey = [self generateUniqueKey]; + NSString *persistedUuidUnique = [ADJKeychain valueForKeychainKeyV2:uniqueKey service:@"deviceInfo"]; + + if (persistedUuidUnique != nil) { + // Check if value has UUID format. + if ((bool)[[NSUUID alloc] initWithUUIDString:persistedUuidUnique]) { + [[ADJAdjustFactory logger] verbose:@"Value found and read from the keychain v2 way"]; + + // If we read the key with v2 way, write it back in v1 way since in iOS 11, that's the only one that it works. + [self assignUuidOldMethod:persistedUuidUnique]; + } } + + // At this point, UUID was not persisted in v2 way or if persisted, didn't have proper UUID format. + // Try the v1 way with given UUID. + [self assignUuidOldMethod:uuid]; } - (void)assignUuidOldMethod:(NSString *)uuid { - NSString *persistedUuid = [ADJKeychain valueForKeychainKeyOld:@"adjust_persisted_uuid" service:@"deviceInfo"]; + NSString *persistedUuid = [ADJKeychain valueForKeychainKeyV1:@"adjust_persisted_uuid" service:@"deviceInfo"]; // Check if value exists in keychain. if (persistedUuid != nil) { // Check if value has UUID format. if ((bool)[[NSUUID alloc] initWithUUIDString:persistedUuid]) { - [[ADJAdjustFactory logger] verbose:@"Value found and read from the keychain old way"]; + [[ADJAdjustFactory logger] verbose:@"Value found and read from the keychain v1 way"]; // Value written in keychain seems to have UUID format. self.uuid = persistedUuid; @@ -120,10 +125,10 @@ - (void)assignUuidOldMethod:(NSString *)uuid { } } - // At this point, UUID was not persisted or if persisted, didn't have proper UUID format. + // At this point, UUID was not persisted in v1 way or if persisted, didn't have proper UUID format. // Since we don't have anything in the keychain, we'll use the passed UUID value. - // Try to save that value to the keychain and flag if successfully written. + // Try to save that value to the keychain in v1 way and flag if successfully written. self.uuid = uuid; self.isPersisted = [ADJKeychain setValue:self.uuid forKeychainKey:@"adjust_persisted_uuid" inService:@"deviceInfo"]; } @@ -144,49 +149,6 @@ - (NSString *)generateUniqueKey { return [joinedKey adjSha1]; } -- (void)assignUuidNewMethod:(NSString *)uuid { - // First check if we have the key written with app's unique key name. - NSString *uniqueKey = [self generateUniqueKey]; - NSString *persistedUuidUnique = [ADJKeychain valueForKeychainKeyNew:uniqueKey service:@"deviceInfo"]; - - if (persistedUuidUnique != nil) { - // Check if value has UUID format. - if ((bool)[[NSUUID alloc] initWithUUIDString:persistedUuidUnique]) { - [[ADJAdjustFactory logger] verbose:@"Value found and read from the keychain new way"]; - - // Value written in keychain seems to have UUID format. - self.uuid = persistedUuidUnique; - self.isPersisted = YES; - - return; - } - } - - // At this point, UUID was not persisted with unique key or if persisted, didn't have proper UUID format. - - // Check if it's still saved in the keychain with old writing method. - NSString *persistedUuidOld = [ADJKeychain valueForKeychainKeyOld:@"adjust_persisted_uuid" service:@"deviceInfo"]; - - if (persistedUuidOld != nil) { - // Check if value has UUID format. - if ((bool)[[NSUUID alloc] initWithUUIDString:persistedUuidOld]) { - [[ADJAdjustFactory logger] verbose:@"Value found and read from the keychain old way"]; - - // Since we have the value in the keychain written with old method, we'll use it to save it with new one. - self.uuid = persistedUuidOld; - } else { - // Since found value in the keychain doesn't have propper UUID format, we'll use passed UUID value. - self.uuid = uuid; - } - } else { - // Since we didn't find anything in the keychain with old method as well, we'll use the passed UUID value. - self.uuid = uuid; - } - - // Try to save that value to the keychain and flag if successfully written. - self.isPersisted = [ADJKeychain setValue:self.uuid forKeychainKey:uniqueKey inService:@"deviceInfo"]; -} - - (NSString *)description { return [NSString stringWithFormat:@"ec:%d sc:%d ssc:%d ask:%d sl:%.1f ts:%.1f la:%.1f dt:%@", self.eventCount, self.sessionCount, self.subsessionCount, self.askingAttribution, self.sessionLength, diff --git a/Adjust/ADJKeychain.h b/Adjust/ADJKeychain.h index 5510e435a..16413dd43 100644 --- a/Adjust/ADJKeychain.h +++ b/Adjust/ADJKeychain.h @@ -10,8 +10,8 @@ @interface ADJKeychain : NSObject -+ (NSString *)valueForKeychainKeyOld:(NSString *)key service:(NSString *)service; -+ (NSString *)valueForKeychainKeyNew:(NSString *)key service:(NSString *)service; ++ (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service; ++ (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service; + (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service; - ++ (BOOL)isSecAttrAccessGroupTokenAccessible; @end diff --git a/Adjust/ADJKeychain.m b/Adjust/ADJKeychain.m index 988317725..ae85481da 100644 --- a/Adjust/ADJKeychain.m +++ b/Adjust/ADJKeychain.m @@ -9,6 +9,7 @@ #import "ADJLogger.h" #import "ADJKeychain.h" #import "ADJAdjustFactory.h" +#include @implementation ADJKeychain @@ -41,21 +42,37 @@ + (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSS if (key == nil) { return NO; } + return [[ADJKeychain getInstance] setValue:value forKeychainKey:key inService:service]; } -+ (NSString *)valueForKeychainKeyOld:(NSString *)key service:(NSString *)service { ++ (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service { if (key == nil) { return nil; } - return [[ADJKeychain getInstance] valueForKeychainKeyOld:key service:service]; + + return [[ADJKeychain getInstance] valueForKeychainKeyV1:key service:service]; } -+ (NSString *)valueForKeychainKeyNew:(NSString *)key service:(NSString *)service { ++ (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service { if (key == nil) { return nil; } - return [[ADJKeychain getInstance] valueForKeychainKeyNew:key service:service]; + + return [[ADJKeychain getInstance] valueForKeychainKeyV2:key service:service]; +} + ++ (BOOL)isSecAttrAccessGroupTokenAccessible { + if ([ADJKeychain getSecAttrAccessGroupToken]) { + return YES; + } else { + return NO; + } +} + ++ (CFStringRef *)getSecAttrAccessGroupToken { + CFStringRef* stringRef = dlsym(RTLD_SELF, "kSecAttrAccessGroupToken"); + return stringRef; } #pragma mark - Private & helper methods @@ -64,11 +81,7 @@ - (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSS OSStatus status = [self setValueWithStatus:value forKeychainKey:key inService:service]; if (status != noErr) { - if (NULL == &kSecAttrAccessGroupToken) { - [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written to the keychain old way"]; - } else { - [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written to the keychain new way"]; - } + [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written to the keychain v1 way"]; return NO; } else { @@ -76,33 +89,23 @@ - (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSS BOOL wasSuccessful = [self wasWritingSuccessful:value forKeychainKey:key inService:service]; if (wasSuccessful) { - if (NULL == &kSecAttrAccessGroupToken) { - [[ADJAdjustFactory logger] verbose:@"Value successfully written to the keychain old way"]; - } else { - [[ADJAdjustFactory logger] verbose:@"Value successfully written to the keychain new way"]; - } - } else { - if (NULL == &kSecAttrAccessGroupToken) { - [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written to the keychain after the check old way"]; - } else { - [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written to the keychain after the check new way"]; - } + [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written in v1 way to the keychain after the check"]; } return wasSuccessful; } } -- (NSString *)valueForKeychainKeyNew:(NSString *)key service:(NSString *)service { - NSMutableDictionary *newKeychainItem = [self keychainItemForKeyNew:key service:service]; +- (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service { + NSMutableDictionary *v2KeychainItem = [self keychainItemForKeyV2:key service:service]; - return [self valueForKeychainItem:newKeychainItem key:key service:service]; + return [self valueForKeychainItem:v2KeychainItem key:key service:service]; } -- (NSString *)valueForKeychainKeyOld:(NSString *)key service:(NSString *)service { - NSMutableDictionary *oldKeychainItem = [self keychainItemForKeyOld:key service:service]; +- (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service { + NSMutableDictionary *v1KeychainItem = [self keychainItemForKeyV1:key service:service]; - return [self valueForKeychainItem:oldKeychainItem key:key service:service]; + return [self valueForKeychainItem:v1KeychainItem key:key service:service]; } - (NSString *)valueForKeychainItem:(NSMutableDictionary *)keychainItem key:(NSString *)key service:(NSString *)service { @@ -127,16 +130,16 @@ - (NSString *)valueForKeychainItem:(NSMutableDictionary *)keychainItem key:(NSSt return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } -- (NSMutableDictionary *)keychainItemForKeyNew:(NSString *)key service:(NSString *)service { +- (NSMutableDictionary *)keychainItemForKeyV2:(NSString *)key service:(NSString *)service { NSMutableDictionary *keychainItem = [[NSMutableDictionary alloc] init]; - keychainItem[(__bridge id)kSecAttrAccessGroup] = (__bridge id)kSecAttrAccessGroupToken; + keychainItem[(__bridge id)kSecAttrAccessGroup] = (__bridge id)(* [ADJKeychain getSecAttrAccessGroupToken]); [self keychainItemForKey:keychainItem key:key service:service]; return keychainItem; } -- (NSMutableDictionary *)keychainItemForKeyOld:(NSString *)key service:(NSString *)service { +- (NSMutableDictionary *)keychainItemForKeyV1:(NSString *)key service:(NSString *)service { NSMutableDictionary *keychainItem = [[NSMutableDictionary alloc] init]; keychainItem[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAlways; @@ -154,12 +157,7 @@ - (void)keychainItemForKey:(NSMutableDictionary *)keychainItem key:(NSString *)k - (OSStatus)setValueWithStatus:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service { NSMutableDictionary *keychainItem; - if (NULL == &kSecAttrAccessGroupToken) { - keychainItem = [self keychainItemForKeyOld:key service:service]; - } else { - keychainItem = [self keychainItemForKeyNew:key service:service]; - } - + keychainItem = [self keychainItemForKeyV1:key service:service]; keychainItem[(__bridge id)kSecValueData] = [value dataUsingEncoding:NSUTF8StringEncoding]; return SecItemAdd((__bridge CFDictionaryRef)keychainItem, NULL); @@ -168,11 +166,7 @@ - (OSStatus)setValueWithStatus:(NSString *)value forKeychainKey:(NSString *)key - (BOOL)wasWritingSuccessful:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service { NSString *writtenValue; - if (NULL == &kSecAttrAccessGroupToken) { - writtenValue = [self valueForKeychainKeyOld:key service:service]; - } else { - writtenValue = [self valueForKeychainKeyNew:key service:service]; - } + writtenValue = [self valueForKeychainKeyV1:key service:service]; if ([writtenValue isEqualToString:value]) { return YES; From ddf678095b1a5ec0b803330e76a6a0109613b77e Mon Sep 17 00:00:00 2001 From: uerceg Date: Thu, 21 Sep 2017 11:27:48 +0200 Subject: [PATCH 2/9] New version 4.11.5 --- Adjust.podspec | 4 ++-- Adjust/ADJUtil.m | 2 +- Adjust/Adjust.h | 2 +- AdjustTests/ADJPackageFields.m | 2 +- README.md | 4 ++-- VERSION | 2 +- doc/english/migrate.md | 2 +- doc/japanese/migrate_ja.md | 2 +- doc/migrate.md | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Adjust.podspec b/Adjust.podspec index d950642e4..9cc7f9255 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = "Adjust" - s.version = "4.11.4" + s.version = "4.11.5" 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.11.4" } + s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.11.5" } s.ios.deployment_target = '6.0' s.tvos.deployment_target = '9.0' s.framework = 'SystemConfiguration' diff --git a/Adjust/ADJUtil.m b/Adjust/ADJUtil.m index a4eda1d90..d2aa46d7c 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/ADJUtil.m @@ -31,7 +31,7 @@ static NSString *userAgent = nil; -static NSString * const kClientSdk = @"ios4.11.4"; +static NSString * const kClientSdk = @"ios4.11.5"; 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 3ca9b6261..d96ef5a88 100644 --- a/Adjust/Adjust.h +++ b/Adjust/Adjust.h @@ -2,7 +2,7 @@ // Adjust.h // Adjust // -// V4.11.4 +// V4.11.5 // Created by Christian Wellenbrock on 2012-07-23. // Copyright (c) 2012-2014 adjust GmbH. All rights reserved. // diff --git a/AdjustTests/ADJPackageFields.m b/AdjustTests/ADJPackageFields.m index 845dd66be..848a93b7e 100644 --- a/AdjustTests/ADJPackageFields.m +++ b/AdjustTests/ADJPackageFields.m @@ -16,7 +16,7 @@ - (id) init { // default values self.appToken = @"qwerty123456"; - self.clientSdk = @"ios4.11.4"; + self.clientSdk = @"ios4.11.5"; self.suffix = @""; self.environment = @"sandbox"; diff --git a/README.md b/README.md index f1b14816b..95467ad7f 100644 --- a/README.md +++ b/README.md @@ -81,13 +81,13 @@ In the dialog `Choose options for adding these files` make sure to check the che 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.11.4' +pod 'Adjust', '~> 4.11.5' ``` or: ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.11.4' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.11.5' ``` -- diff --git a/VERSION b/VERSION index 0ce5c18e9..ad2c17edd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.11.4 +4.11.5 diff --git a/doc/english/migrate.md b/doc/english/migrate.md index 45153b834..69fe15654 100644 --- a/doc/english/migrate.md +++ b/doc/english/migrate.md @@ -1,4 +1,4 @@ -## Migrate your adjust SDK for iOS to v4.11.4 from v3.4.0 +## Migrate your adjust SDK for iOS to v4.11.5 from v3.4.0 ### Initial setup diff --git a/doc/japanese/migrate_ja.md b/doc/japanese/migrate_ja.md index 6f33cb540..e6e020a8a 100644 --- a/doc/japanese/migrate_ja.md +++ b/doc/japanese/migrate_ja.md @@ -1,4 +1,4 @@ -## iOS用adjust SDKのv3.4.0からv.4.11.4への移行 +## iOS用adjust SDKのv3.4.0からv.4.11.5への移行 ### 初期設定 diff --git a/doc/migrate.md b/doc/migrate.md index 45153b834..69fe15654 100644 --- a/doc/migrate.md +++ b/doc/migrate.md @@ -1,4 +1,4 @@ -## Migrate your adjust SDK for iOS to v4.11.4 from v3.4.0 +## Migrate your adjust SDK for iOS to v4.11.5 from v3.4.0 ### Initial setup From be8e14106783b63e4d68aaa88ab75d7a8a790981 Mon Sep 17 00:00:00 2001 From: nonelse Date: Thu, 21 Sep 2017 12:16:09 +0200 Subject: [PATCH 3/9] Fix web view bridge framework --- .../WebViewJavascriptBridge/WKWebViewJavascriptBridge.m | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m b/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m index 88679fb44..0fcf7e25c 100644 --- a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m +++ b/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m @@ -119,9 +119,7 @@ - (void)webView:(WKWebView *)webView [_base logUnkownMessage:url]; } decisionHandler(WKNavigationActionPolicyCancel); - } - - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) { + } else if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) { [_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler]; } else { decisionHandler(WKNavigationActionPolicyAllow); From 89feb516180cd1f9f52b06cfda67d417ae5a256f Mon Sep 17 00:00:00 2001 From: uerceg Date: Thu, 21 Sep 2017 12:43:46 +0200 Subject: [PATCH 4/9] Log semantics update --- Adjust/ADJKeychain.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Adjust/ADJKeychain.m b/Adjust/ADJKeychain.m index ae85481da..3e3ff0e24 100644 --- a/Adjust/ADJKeychain.m +++ b/Adjust/ADJKeychain.m @@ -89,7 +89,7 @@ - (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSS BOOL wasSuccessful = [self wasWritingSuccessful:value forKeychainKey:key inService:service]; if (wasSuccessful) { - [[ADJAdjustFactory logger] warn:@"Value unsuccessfully written in v1 way to the keychain after the check"]; + [[ADJAdjustFactory logger] warn:@"Value successfully written in v1 way to the keychain after the check"]; } return wasSuccessful; From 84eab764fef7583313bc8ec1d5d46d6aa64cb7c4 Mon Sep 17 00:00:00 2001 From: uerceg Date: Thu, 21 Sep 2017 14:08:33 +0200 Subject: [PATCH 5/9] New web bridge version 4.9.1 --- AdjustBridge/adjust_config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AdjustBridge/adjust_config.js b/AdjustBridge/adjust_config.js index 4a2ac0d06..b6194c19e 100644 --- a/AdjustBridge/adjust_config.js +++ b/AdjustBridge/adjust_config.js @@ -3,7 +3,7 @@ function AdjustConfig(bridge, appToken, environment) { this.appToken = appToken; this.environment = environment; - this.sdkPrefix = 'web-bridge4.9.0'; + this.sdkPrefix = 'web-bridge4.9.1'; this.logLevel = null; this.defaultTracker = null; From a4a5bd2acba09c6f1df35276a66644abd9ad8734 Mon Sep 17 00:00:00 2001 From: nonelse Date: Thu, 21 Sep 2017 16:54:21 +0200 Subject: [PATCH 6/9] Check SecAttrAccessGroupToken --- Adjust/ADJKeychain.h | 1 - Adjust/ADJKeychain.m | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Adjust/ADJKeychain.h b/Adjust/ADJKeychain.h index 16413dd43..df720bac7 100644 --- a/Adjust/ADJKeychain.h +++ b/Adjust/ADJKeychain.h @@ -13,5 +13,4 @@ + (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service; + (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service; + (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service; -+ (BOOL)isSecAttrAccessGroupTokenAccessible; @end diff --git a/Adjust/ADJKeychain.m b/Adjust/ADJKeychain.m index 3e3ff0e24..adc50958c 100644 --- a/Adjust/ADJKeychain.m +++ b/Adjust/ADJKeychain.m @@ -62,14 +62,6 @@ + (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service return [[ADJKeychain getInstance] valueForKeychainKeyV2:key service:service]; } -+ (BOOL)isSecAttrAccessGroupTokenAccessible { - if ([ADJKeychain getSecAttrAccessGroupToken]) { - return YES; - } else { - return NO; - } -} - + (CFStringRef *)getSecAttrAccessGroupToken { CFStringRef* stringRef = dlsym(RTLD_SELF, "kSecAttrAccessGroupToken"); return stringRef; @@ -109,6 +101,10 @@ - (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service } - (NSString *)valueForKeychainItem:(NSMutableDictionary *)keychainItem key:(NSString *)key service:(NSString *)service { + if (!keychainItem) { + return nil; + } + CFDictionaryRef result = nil; keychainItem[(__bridge id)kSecReturnData] = (__bridge id)kCFBooleanTrue; @@ -133,7 +129,13 @@ - (NSString *)valueForKeychainItem:(NSMutableDictionary *)keychainItem key:(NSSt - (NSMutableDictionary *)keychainItemForKeyV2:(NSString *)key service:(NSString *)service { NSMutableDictionary *keychainItem = [[NSMutableDictionary alloc] init]; - keychainItem[(__bridge id)kSecAttrAccessGroup] = (__bridge id)(* [ADJKeychain getSecAttrAccessGroupToken]); + CFStringRef * cStringSecAttrAccessGroupToken = [ADJKeychain getSecAttrAccessGroupToken]; + + if (!cStringSecAttrAccessGroupToken) { + return nil; + } + + keychainItem[(__bridge id)kSecAttrAccessGroup] = (__bridge id)(* cStringSecAttrAccessGroupToken); [self keychainItemForKey:keychainItem key:key service:service]; return keychainItem; From 035245d77d00840f3d7364bafbbf2c2d606a96be Mon Sep 17 00:00:00 2001 From: uerceg Date: Thu, 21 Sep 2017 17:38:47 +0200 Subject: [PATCH 7/9] Minor cleanup --- Adjust/ADJKeychain.h | 1 + Adjust/ADJKeychain.m | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Adjust/ADJKeychain.h b/Adjust/ADJKeychain.h index df720bac7..9e85dfead 100644 --- a/Adjust/ADJKeychain.h +++ b/Adjust/ADJKeychain.h @@ -13,4 +13,5 @@ + (NSString *)valueForKeychainKeyV1:(NSString *)key service:(NSString *)service; + (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service; + (BOOL)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service; + @end diff --git a/Adjust/ADJKeychain.m b/Adjust/ADJKeychain.m index adc50958c..42639f027 100644 --- a/Adjust/ADJKeychain.m +++ b/Adjust/ADJKeychain.m @@ -63,7 +63,7 @@ + (NSString *)valueForKeychainKeyV2:(NSString *)key service:(NSString *)service } + (CFStringRef *)getSecAttrAccessGroupToken { - CFStringRef* stringRef = dlsym(RTLD_SELF, "kSecAttrAccessGroupToken"); + CFStringRef *stringRef = dlsym(RTLD_SELF, "kSecAttrAccessGroupToken"); return stringRef; } @@ -129,7 +129,7 @@ - (NSString *)valueForKeychainItem:(NSMutableDictionary *)keychainItem key:(NSSt - (NSMutableDictionary *)keychainItemForKeyV2:(NSString *)key service:(NSString *)service { NSMutableDictionary *keychainItem = [[NSMutableDictionary alloc] init]; - CFStringRef * cStringSecAttrAccessGroupToken = [ADJKeychain getSecAttrAccessGroupToken]; + CFStringRef *cStringSecAttrAccessGroupToken = [ADJKeychain getSecAttrAccessGroupToken]; if (!cStringSecAttrAccessGroupToken) { return nil; From 1d5c636b4ff28ec1467f790771c8a3cd578206c4 Mon Sep 17 00:00:00 2001 From: nonelse Date: Mon, 24 Jul 2017 17:36:35 +0200 Subject: [PATCH 8/9] Remove tce --- Adjust.xcodeproj/project.pbxproj | 24 ----- Adjust/ADJConnectionValidator.h | 19 ---- Adjust/ADJConnectionValidator.m | 88 ------------------- Adjust/ADJPackageBuilder.m | 3 - Adjust/ADJRequestHandler.m | 18 ---- Adjust/ADJResponseData.h | 2 - Adjust/ADJResponseData.m | 1 - Adjust/ADJUtil.m | 28 +----- .../project.pbxproj | 6 -- .../project.pbxproj | 6 -- .../AppIcon.appiconset/Contents.json | 5 ++ .../project.pbxproj | 6 -- .../project.pbxproj | 6 -- .../project.pbxproj | 6 -- .../Contents.json | 8 +- .../Contents.json | 12 +++ 16 files changed, 25 insertions(+), 213 deletions(-) delete mode 100644 Adjust/ADJConnectionValidator.h delete mode 100644 Adjust/ADJConnectionValidator.m create mode 100644 examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json diff --git a/Adjust.xcodeproj/project.pbxproj b/Adjust.xcodeproj/project.pbxproj index 26b6f2437..a8440fb59 100644 --- a/Adjust.xcodeproj/project.pbxproj +++ b/Adjust.xcodeproj/project.pbxproj @@ -142,12 +142,6 @@ 9D7431F81EB9F9B700969F14 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D7431F61EB9F9B700969F14 /* LaunchScreen.storyboard */; }; 9DB457B01D743704004D69E8 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8DF1D6F3CA5008E362F /* ADJBackoffStrategy.m */; }; 9DB457B11D743704004D69E8 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F71D6F3CA5008E362F /* ADJSdkClickHandler.m */; }; - 9DCAE04B1E5334F4009DD542 /* ADJConnectionValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DCAE0491E5334F4009DD542 /* ADJConnectionValidator.h */; }; - 9DCAE04C1E5334F4009DD542 /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DCAE04A1E5334F4009DD542 /* ADJConnectionValidator.m */; }; - 9DCAE04F1E535134009DD542 /* ADJConnectionValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DCAE04D1E535134009DD542 /* ADJConnectionValidator.h */; }; - 9DCAE0501E535134009DD542 /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DCAE04E1E535134009DD542 /* ADJConnectionValidator.m */; }; - 9DCAE0531E535147009DD542 /* ADJConnectionValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DCAE0511E535147009DD542 /* ADJConnectionValidator.h */; }; - 9DCAE0541E535147009DD542 /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DCAE0521E535147009DD542 /* ADJConnectionValidator.m */; }; 9DE7C8FD1AE688DA001556E5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DE7C8FC1AE688DA001556E5 /* UIKit.framework */; }; 9DF9C8B31D6ED228008E362F /* ADJKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8B11D6ED228008E362F /* ADJKeychain.h */; }; 9DF9C8B41D6ED228008E362F /* ADJKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8B21D6ED228008E362F /* ADJKeychain.m */; }; @@ -518,12 +512,6 @@ 9D75F1841D07460600E5D222 /* adjust_config.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = adjust_config.js; sourceTree = ""; }; 9D75F1851D07460600E5D222 /* adjust_event.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = adjust_event.js; sourceTree = ""; }; 9D75F1861D07460600E5D222 /* adjust.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = adjust.js; sourceTree = ""; }; - 9DCAE0491E5334F4009DD542 /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9DCAE04A1E5334F4009DD542 /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; - 9DCAE04D1E535134009DD542 /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9DCAE04E1E535134009DD542 /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; - 9DCAE0511E535147009DD542 /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9DCAE0521E535147009DD542 /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9DE7C8FC1AE688DA001556E5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 9DF9C8B11D6ED228008E362F /* ADJKeychain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJKeychain.h; sourceTree = ""; }; 9DF9C8B21D6ED228008E362F /* ADJKeychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJKeychain.m; sourceTree = ""; }; @@ -860,8 +848,6 @@ 9DF9C8B21D6ED228008E362F /* ADJKeychain.m */, 96B6710E1D788EEC0090A023 /* ADJSessionParameters.h */, 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */, - 9DCAE0491E5334F4009DD542 /* ADJConnectionValidator.h */, - 9DCAE04A1E5334F4009DD542 /* ADJConnectionValidator.m */, ); path = Adjust; sourceTree = ""; @@ -1059,8 +1045,6 @@ 9DF9C9071D6F3CA5008E362F /* ADJUtil.m */, 96B671121D788F4A0090A023 /* ADJSessionParameters.h */, 96B671131D788F4A0090A023 /* ADJSessionParameters.m */, - 9DCAE04D1E535134009DD542 /* ADJConnectionValidator.h */, - 9DCAE04E1E535134009DD542 /* ADJConnectionValidator.m */, 9DF9C9081D6F3CA5008E362F /* Info.plist */, ); path = Adjust; @@ -1159,8 +1143,6 @@ 9DFB06581D7470C0006D48FC /* ADJUtil.m */, 96B671161D788F7A0090A023 /* ADJSessionParameters.h */, 96B671171D788F7A0090A023 /* ADJSessionParameters.m */, - 9DCAE0511E535147009DD542 /* ADJConnectionValidator.h */, - 9DCAE0521E535147009DD542 /* ADJConnectionValidator.m */, 9DFB06591D7470C0006D48FC /* Info.plist */, ); path = Adjust; @@ -1205,7 +1187,6 @@ 96BCFBD91AC9934E005A65C5 /* ADJAdjustFactory.h in Headers */, 96BCFBDA1AC99353005A65C5 /* ADJPackageBuilder.h in Headers */, 96BCFBDB1AC99355005A65C5 /* ADJPackageHandler.h in Headers */, - 9DCAE04B1E5334F4009DD542 /* ADJConnectionValidator.h in Headers */, 96BCFBDC1AC99360005A65C5 /* ADJRequestHandler.h in Headers */, 96BCFBDE1AC99365005A65C5 /* ADJUtil.h in Headers */, 96BCFBDF1AC99368005A65C5 /* ADJDeviceInfo.h in Headers */, @@ -1246,7 +1227,6 @@ 9DF9C92D1D6F3CA5008E362F /* ADJPackageBuilder.h in Headers */, 9DF9C92F1D6F3CA5008E362F /* ADJPackageHandler.h in Headers */, 9DF9C9311D6F3CA5008E362F /* ADJRequestHandler.h in Headers */, - 9DCAE04F1E535134009DD542 /* ADJConnectionValidator.h in Headers */, 9DF9C9451D6F3CA5008E362F /* ADJUtil.h in Headers */, 9DF9C9211D6F3CA5008E362F /* ADJDeviceInfo.h in Headers */, 9DF9C91B1D6F3CA5008E362F /* ADJAttributionHandler.h in Headers */, @@ -1286,7 +1266,6 @@ 9DFB067E1D7470C0006D48FC /* ADJPackageBuilder.h in Headers */, 9DFB06801D7470C0006D48FC /* ADJPackageHandler.h in Headers */, 9DFB06821D7470C0006D48FC /* ADJRequestHandler.h in Headers */, - 9DCAE0531E535147009DD542 /* ADJConnectionValidator.h in Headers */, 9DFB06961D7470C0006D48FC /* ADJUtil.h in Headers */, 9DFB06721D7470C0006D48FC /* ADJDeviceInfo.h in Headers */, 9DFB066C1D7470C0006D48FC /* ADJAttributionHandler.h in Headers */, @@ -1681,7 +1660,6 @@ 96FCC53B1C186426007BBFE1 /* ADJResponseData.m in Sources */, 968173841C3C2D07002AE1DE /* ADJSessionSuccess.m in Sources */, 968173881C3C2D36002AE1DE /* ADJSessionFailure.m in Sources */, - 9DCAE04C1E5334F4009DD542 /* ADJConnectionValidator.m in Sources */, 9601CAE51C74B70600670879 /* ADJEventSuccess.m in Sources */, 9601CAE91C74BAAE00670879 /* ADJEventFailure.m in Sources */, 96164D8D1CCA4DEA009431AB /* ADJSystemProfile.m in Sources */, @@ -1764,7 +1742,6 @@ 9DF9C9341D6F3CA5008E362F /* ADJResponseData.m in Sources */, 9DF9C93A1D6F3CA5008E362F /* ADJSessionSuccess.m in Sources */, 9DF9C9381D6F3CA5008E362F /* ADJSessionFailure.m in Sources */, - 9DCAE0501E535134009DD542 /* ADJConnectionValidator.m in Sources */, 9DF9C9281D6F3CA5008E362F /* ADJEventSuccess.m in Sources */, 9DF9C9261D6F3CA5008E362F /* ADJEventFailure.m in Sources */, 9DF9C93C1D6F3CA5008E362F /* ADJSystemProfile.m in Sources */, @@ -1803,7 +1780,6 @@ 9DFB06851D7470C0006D48FC /* ADJResponseData.m in Sources */, 9DFB068B1D7470C0006D48FC /* ADJSessionSuccess.m in Sources */, 9DFB06891D7470C0006D48FC /* ADJSessionFailure.m in Sources */, - 9DCAE0541E535147009DD542 /* ADJConnectionValidator.m in Sources */, 9DFB06791D7470C0006D48FC /* ADJEventSuccess.m in Sources */, 9DFB06771D7470C0006D48FC /* ADJEventFailure.m in Sources */, 9DFB068D1D7470C0006D48FC /* ADJSystemProfile.m in Sources */, diff --git a/Adjust/ADJConnectionValidator.h b/Adjust/ADJConnectionValidator.h deleted file mode 100644 index 96a938a19..000000000 --- a/Adjust/ADJConnectionValidator.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// ADJConnectionValidator.h -// Adjust -// -// Created by Uglješa Erceg on 14/02/2017. -// Copyright © 2017 adjust GmbH. All rights reserved. -// - -#import - -@interface ADJConnectionValidator : NSObject - -@property (nonatomic, assign) int expectedTce; - -@property (nonatomic, assign) BOOL didValidationHappen; - -@property (nonatomic, assign, readonly) BOOL validationResult; - -@end diff --git a/Adjust/ADJConnectionValidator.m b/Adjust/ADJConnectionValidator.m deleted file mode 100644 index a154e877f..000000000 --- a/Adjust/ADJConnectionValidator.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// ADJConnectionValidator.m -// Adjust -// -// Created by Uglješa Erceg on 14/02/2017. -// Copyright © 2017 adjust GmbH. All rights reserved. -// - -#import - -#import "ADJConnectionValidator.h" - -@implementation ADJConnectionValidator - -#pragma mark - Object lifecycle - -- (id)init { - self = [super init]; - - if (self == nil) { - return nil; - } - - return self; -} - -#pragma mark - NSURLSessionDelegate protocol - -- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler { - NSString *trustedThumbprint = @"5fb7ee0633e259dbad0c4c9ae6d38f1a61c7dc25"; - - SecTrustRef serverTrust = challenge.protectionSpace.serverTrust; - SecTrustEvaluate(serverTrust, NULL); - CFIndex count = SecTrustGetCertificateCount(serverTrust); - - SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, count - 1); - CFDataRef certData = SecCertificateCopyData(certificate); - - NSData *data = (__bridge_transfer NSData *)certData; - NSString *thumbprint = [self getThumbprintAsSha1:data]; - - if ([[trustedThumbprint uppercaseString] isEqualToString:[thumbprint uppercaseString]]) { - // tce = 0 - - if (0 == self.expectedTce) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - completionHandler(NSURLSessionAuthChallengeUseCredential, credential); - - _validationResult = YES; - } else { - completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, NULL); - - _validationResult = NO; - } - } else { - // tce = 1++ - - if (0 < self.expectedTce) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - completionHandler(NSURLSessionAuthChallengeUseCredential, credential); - - _validationResult = YES; - } else { - completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, NULL); - - _validationResult = NO; - } - } - - // mark validation as done - self.didValidationHappen = YES; -} - -#pragma mark - Private & helper methods - -- (NSString *)getThumbprintAsSha1:(NSData *)certData { - unsigned char sha1Buffer[CC_SHA1_DIGEST_LENGTH]; - CC_SHA1(certData.bytes, (CC_LONG)certData.length, sha1Buffer); - NSMutableString *fingerprint = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 3]; - - for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; ++i) { - [fingerprint appendFormat:@"%02x",sha1Buffer[i]]; - } - - return [fingerprint stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; -} - -@end diff --git a/Adjust/ADJPackageBuilder.m b/Adjust/ADJPackageBuilder.m index 15224ad81..ccc6676c0 100644 --- a/Adjust/ADJPackageBuilder.m +++ b/Adjust/ADJPackageBuilder.m @@ -72,7 +72,6 @@ - (ADJActivityPackage *)buildEventPackage:(ADJEvent *)event isInDelay:(BOOL)isInDelay { NSMutableDictionary *parameters = [self defaultParameters]; - [ADJPackageBuilder parameters:parameters setInt:0 forKey:@"tce"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.eventCount forKey:@"event_count"]; [ADJPackageBuilder parameters:parameters setNumber:event.revenue forKey:@"revenue"]; [ADJPackageBuilder parameters:parameters setString:event.currency forKey:@"currency"]; @@ -149,7 +148,6 @@ - (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource - (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource { NSMutableDictionary *parameters = [self idsParameters]; - [ADJPackageBuilder parameters:parameters setInt:0 forKey:@"tce"]; [ADJPackageBuilder parameters:parameters setString:infoSource forKey:@"source"]; [self injectPushToken:self.activityState intoParamters:parameters]; @@ -198,7 +196,6 @@ - (NSMutableDictionary *)idsParameters { - (NSMutableDictionary *)attributableParameters:(ADJSessionParameters *)sessionParameters { NSMutableDictionary *parameters = [self defaultParameters]; - [ADJPackageBuilder parameters:parameters setInt:0 forKey:@"tce"]; [ADJPackageBuilder parameters:parameters setString:[ADJUtil getUpdateTime] forKey:@"app_updated_at"]; [ADJPackageBuilder parameters:parameters setString:[ADJUtil getInstallTime] forKey:@"installed_at"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; diff --git a/Adjust/ADJRequestHandler.m b/Adjust/ADJRequestHandler.m index 6c37a0f1e..80b6ff1e1 100644 --- a/Adjust/ADJRequestHandler.m +++ b/Adjust/ADJRequestHandler.m @@ -77,24 +77,6 @@ - (void)sendI:(ADJRequestHandler *)selfI activityPackage:(ADJActivityPackage *)a suffixErrorMessage:@"Will retry later" activityPackage:activityPackage responseDataHandler:^(ADJResponseData *responseData) { - if (NO == responseData.validationResult) { - NSString *previousValue = [activityPackage.parameters objectForKey:@"tce"]; - - if (nil == previousValue) { - [ADJPackageBuilder parameters:activityPackage.parameters setString:@"1" forKey:@"tce"]; - } else { - if ([previousValue isEqualToString:@"0"]) { - [ADJPackageBuilder parameters:activityPackage.parameters setString:@"1" forKey:@"tce"]; - } else { - [ADJPackageBuilder parameters:activityPackage.parameters setString:@"0" forKey:@"tce"]; - } - } - - [self sendPackage:activityPackage queueSize:queueSize]; - - return; - } - if (responseData.jsonResponse == nil) { [selfI.packageHandler closeFirstPackage:responseData activityPackage:activityPackage]; diff --git a/Adjust/ADJResponseData.h b/Adjust/ADJResponseData.h index 2d74f34a1..378a9bb03 100644 --- a/Adjust/ADJResponseData.h +++ b/Adjust/ADJResponseData.h @@ -29,8 +29,6 @@ @property (nonatomic, assign) BOOL willRetry; -@property (nonatomic, assign) BOOL validationResult; - @property (nonatomic, strong) NSDictionary *jsonResponse; @property (nonatomic, copy) ADJAttribution *attribution; diff --git a/Adjust/ADJResponseData.m b/Adjust/ADJResponseData.m index 2363daca3..9ca71e45b 100644 --- a/Adjust/ADJResponseData.m +++ b/Adjust/ADJResponseData.m @@ -75,7 +75,6 @@ - (id)copyWithZone:(NSZone *)zone { copy.adid = [self.adid copyWithZone:zone]; copy.success = self.success; copy.willRetry = self.willRetry; - copy.validationResult = self.validationResult; copy.jsonResponse = [self.jsonResponse copyWithZone:zone]; copy.attribution = [self.attribution copyWithZone:zone]; } diff --git a/Adjust/ADJUtil.m b/Adjust/ADJUtil.m index d2aa46d7c..3e1f5c6a7 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/ADJUtil.m @@ -18,7 +18,6 @@ #import "ADJAdjustFactory.h" #import "UIDevice+ADJAdditions.h" #import "NSString+ADJAdditions.h" -#import "ADJConnectionValidator.h" static const double kRequestTimeout = 60; // 60 seconds @@ -428,24 +427,7 @@ + (void)sendNSURLSessionRequest:(NSMutableURLRequest *)request suffixErrorMessage:(NSString *)suffixErrorMessage activityPackage:(ADJActivityPackage *)activityPackage responseDataHandler:(void (^)(ADJResponseData *responseData))responseDataHandler { - NSURLSession *session; - ADJConnectionValidator *connectionValidator; - - if (activityPackage.activityKind == ADJActivityKindEvent || - activityPackage.activityKind == ADJActivityKindSession || - activityPackage.activityKind == ADJActivityKindInfo) { - int tce = [[activityPackage.parameters objectForKey:@"tce"] intValue]; - - connectionValidator = [[ADJConnectionValidator alloc] init]; - [connectionValidator setExpectedTce:tce]; - [connectionValidator setDidValidationHappen:NO]; - - session = [NSURLSession sessionWithConfiguration:urlSessionConfiguration - delegate:connectionValidator - delegateQueue:nil]; - } else { - session = [NSURLSession sessionWithConfiguration:urlSessionConfiguration]; - } + NSURLSession *session = [NSURLSession sessionWithConfiguration:urlSessionConfiguration]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: @@ -457,14 +439,6 @@ + (void)sendNSURLSessionRequest:(NSMutableURLRequest *)request suffixErrorMessage:suffixErrorMessage activityPackage:activityPackage]; - if (nil != connectionValidator) { - if (NO == connectionValidator.didValidationHappen) { - responseData.validationResult = YES; - } else { - responseData.validationResult = connectionValidator.validationResult; - } - } - responseDataHandler(responseData); }]; diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj index 3f1337c5d..6bc8d4836 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ 9D449E7F1E6EDC3D00E7E80B /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E481E6EDC3D00E7E80B /* ADJAttributionHandler.m */; }; 9D449E801E6EDC3D00E7E80B /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E4A1E6EDC3D00E7E80B /* ADJBackoffStrategy.m */; }; 9D449E811E6EDC3D00E7E80B /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E4C1E6EDC3D00E7E80B /* ADJConfig.m */; }; - 9D449E821E6EDC3D00E7E80B /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E4E1E6EDC3D00E7E80B /* ADJConnectionValidator.m */; }; 9D449E831E6EDC3D00E7E80B /* ADJDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E501E6EDC3D00E7E80B /* ADJDeviceInfo.m */; }; 9D449E841E6EDC3D00E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E521E6EDC3D00E7E80B /* ADJEvent.m */; }; 9D449E851E6EDC3D00E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E541E6EDC3D00E7E80B /* ADJEventFailure.m */; }; @@ -74,8 +73,6 @@ 9D449E4A1E6EDC3D00E7E80B /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; 9D449E4B1E6EDC3D00E7E80B /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; 9D449E4C1E6EDC3D00E7E80B /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D449E4D1E6EDC3D00E7E80B /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9D449E4E1E6EDC3D00E7E80B /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9D449E4F1E6EDC3D00E7E80B /* ADJDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJDeviceInfo.h; sourceTree = ""; }; 9D449E501E6EDC3D00E7E80B /* ADJDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJDeviceInfo.m; sourceTree = ""; }; 9D449E511E6EDC3D00E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; @@ -162,8 +159,6 @@ 9D449E4A1E6EDC3D00E7E80B /* ADJBackoffStrategy.m */, 9D449E4B1E6EDC3D00E7E80B /* ADJConfig.h */, 9D449E4C1E6EDC3D00E7E80B /* ADJConfig.m */, - 9D449E4D1E6EDC3D00E7E80B /* ADJConnectionValidator.h */, - 9D449E4E1E6EDC3D00E7E80B /* ADJConnectionValidator.m */, 9D449E4F1E6EDC3D00E7E80B /* ADJDeviceInfo.h */, 9D449E501E6EDC3D00E7E80B /* ADJDeviceInfo.m */, 9D449E511E6EDC3D00E7E80B /* ADJEvent.h */, @@ -340,7 +335,6 @@ 9D449E8C1E6EDC3D00E7E80B /* ADJResponseData.m in Sources */, 9D449E911E6EDC3D00E7E80B /* ADJSystemProfile.m in Sources */, 9D449E8E1E6EDC3D00E7E80B /* ADJSessionFailure.m in Sources */, - 9D449E821E6EDC3D00E7E80B /* ADJConnectionValidator.m in Sources */, 9D449E8F1E6EDC3D00E7E80B /* ADJSessionParameters.m in Sources */, 9D449E901E6EDC3D00E7E80B /* ADJSessionSuccess.m in Sources */, 9D449E861E6EDC3D00E7E80B /* ADJEventSuccess.m in Sources */, diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj index 7a87c6fcf..011b6a455 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj @@ -32,7 +32,6 @@ 9D449EE31E6EDD4100E7E80B /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EAC1E6EDD4100E7E80B /* ADJAttributionHandler.m */; }; 9D449EE41E6EDD4100E7E80B /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EAE1E6EDD4100E7E80B /* ADJBackoffStrategy.m */; }; 9D449EE51E6EDD4100E7E80B /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB01E6EDD4100E7E80B /* ADJConfig.m */; }; - 9D449EE61E6EDD4100E7E80B /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB21E6EDD4100E7E80B /* ADJConnectionValidator.m */; }; 9D449EE71E6EDD4100E7E80B /* ADJDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB41E6EDD4100E7E80B /* ADJDeviceInfo.m */; }; 9D449EE81E6EDD4100E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB61E6EDD4100E7E80B /* ADJEvent.m */; }; 9D449EE91E6EDD4100E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB81E6EDD4100E7E80B /* ADJEventFailure.m */; }; @@ -107,8 +106,6 @@ 9D449EAE1E6EDD4100E7E80B /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; 9D449EAF1E6EDD4100E7E80B /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; 9D449EB01E6EDD4100E7E80B /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D449EB11E6EDD4100E7E80B /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9D449EB21E6EDD4100E7E80B /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9D449EB31E6EDD4100E7E80B /* ADJDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJDeviceInfo.h; sourceTree = ""; }; 9D449EB41E6EDD4100E7E80B /* ADJDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJDeviceInfo.m; sourceTree = ""; }; 9D449EB51E6EDD4100E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; @@ -262,8 +259,6 @@ 9D449EAE1E6EDD4100E7E80B /* ADJBackoffStrategy.m */, 9D449EAF1E6EDD4100E7E80B /* ADJConfig.h */, 9D449EB01E6EDD4100E7E80B /* ADJConfig.m */, - 9D449EB11E6EDD4100E7E80B /* ADJConnectionValidator.h */, - 9D449EB21E6EDD4100E7E80B /* ADJConnectionValidator.m */, 9D449EB31E6EDD4100E7E80B /* ADJDeviceInfo.h */, 9D449EB41E6EDD4100E7E80B /* ADJDeviceInfo.m */, 9D449EB51E6EDD4100E7E80B /* ADJEvent.h */, @@ -466,7 +461,6 @@ 9D1082A91CFDAF8E0050568B /* main.m in Sources */, 9D449EF91E6EDD4100E7E80B /* ADJUtil.m in Sources */, 9D449EEE1E6EDD4100E7E80B /* ADJPackageHandler.m in Sources */, - 9D449EE61E6EDD4100E7E80B /* ADJConnectionValidator.m in Sources */, 9D449EE91E6EDD4100E7E80B /* ADJEventFailure.m in Sources */, 9D449EF41E6EDD4100E7E80B /* ADJSessionSuccess.m in Sources */, ); diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/AdjustExample-WebView/AdjustExample-WebView/Assets.xcassets/AppIcon.appiconset/Contents.json index b8236c653..19882d568 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/AdjustExample-WebView/AdjustExample-WebView/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -39,6 +39,11 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj b/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj index d45b0db89..aa65ce68d 100644 --- a/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-iOS/AdjustExample-iOS.xcodeproj/project.pbxproj @@ -45,7 +45,6 @@ 9D449E2F1E6ED88F00E7E80B /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E0B1E6ED88F00E7E80B /* ADJSdkClickHandler.m */; }; 9D449E301E6ED88F00E7E80B /* ADJKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E0D1E6ED88F00E7E80B /* ADJKeychain.m */; }; 9D449E311E6ED88F00E7E80B /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E0F1E6ED88F00E7E80B /* ADJSessionParameters.m */; }; - 9D449E321E6ED88F00E7E80B /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E111E6ED88F00E7E80B /* ADJConnectionValidator.m */; }; 9DC95F261C104CEF00138E4B /* ViewControlleriOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC95F251C104CEF00138E4B /* ViewControlleriOS.m */; }; 9DC95F2A1C10515300138E4B /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC95F291C10515300138E4B /* Constants.m */; }; /* End PBXBuildFile section */ @@ -124,8 +123,6 @@ 9D449E0D1E6ED88F00E7E80B /* ADJKeychain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJKeychain.m; sourceTree = ""; }; 9D449E0E1E6ED88F00E7E80B /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; 9D449E0F1E6ED88F00E7E80B /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9D449E101E6ED88F00E7E80B /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9D449E111E6ED88F00E7E80B /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9DC95F241C104CEF00138E4B /* ViewControlleriOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewControlleriOS.h; sourceTree = ""; }; 9DC95F251C104CEF00138E4B /* ViewControlleriOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewControlleriOS.m; sourceTree = ""; }; 9DC95F281C10515300138E4B /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = ""; }; @@ -264,8 +261,6 @@ 9D449E0D1E6ED88F00E7E80B /* ADJKeychain.m */, 9D449E0E1E6ED88F00E7E80B /* ADJSessionParameters.h */, 9D449E0F1E6ED88F00E7E80B /* ADJSessionParameters.m */, - 9D449E101E6ED88F00E7E80B /* ADJConnectionValidator.h */, - 9D449E111E6ED88F00E7E80B /* ADJConnectionValidator.m */, ); name = Adjust; path = ../../../Adjust; @@ -365,7 +360,6 @@ 9D449E241E6ED88F00E7E80B /* ADJAttribution.m in Sources */, 9DC95F2A1C10515300138E4B /* Constants.m in Sources */, 963909441BCBFCF300A2E8A4 /* AppDelegate.m in Sources */, - 9D449E321E6ED88F00E7E80B /* ADJConnectionValidator.m in Sources */, 9D449E311E6ED88F00E7E80B /* ADJSessionParameters.m in Sources */, 9D449E171E6ED88F00E7E80B /* ADJActivityHandler.m in Sources */, 9D449E141E6ED88F00E7E80B /* UIDevice+ADJAdditions.m in Sources */, diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj b/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj index 68c42cacb..7c684f203 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ 9D449FAC1E6EE72000E7E80B /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F751E6EE72000E7E80B /* ADJAttributionHandler.m */; }; 9D449FAD1E6EE72000E7E80B /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F771E6EE72000E7E80B /* ADJBackoffStrategy.m */; }; 9D449FAE1E6EE72000E7E80B /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F791E6EE72000E7E80B /* ADJConfig.m */; }; - 9D449FAF1E6EE72000E7E80B /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F7B1E6EE72000E7E80B /* ADJConnectionValidator.m */; }; 9D449FB01E6EE72000E7E80B /* ADJDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F7D1E6EE72000E7E80B /* ADJDeviceInfo.m */; }; 9D449FB11E6EE72000E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F7F1E6EE72000E7E80B /* ADJEvent.m */; }; 9D449FB21E6EE72000E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F811E6EE72000E7E80B /* ADJEventFailure.m */; }; @@ -129,8 +128,6 @@ 9D449F771E6EE72000E7E80B /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; 9D449F781E6EE72000E7E80B /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; 9D449F791E6EE72000E7E80B /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D449F7A1E6EE72000E7E80B /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9D449F7B1E6EE72000E7E80B /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9D449F7C1E6EE72000E7E80B /* ADJDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJDeviceInfo.h; sourceTree = ""; }; 9D449F7D1E6EE72000E7E80B /* ADJDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJDeviceInfo.m; sourceTree = ""; }; 9D449F7E1E6EE72000E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; @@ -247,8 +244,6 @@ 9D449F771E6EE72000E7E80B /* ADJBackoffStrategy.m */, 9D449F781E6EE72000E7E80B /* ADJConfig.h */, 9D449F791E6EE72000E7E80B /* ADJConfig.m */, - 9D449F7A1E6EE72000E7E80B /* ADJConnectionValidator.h */, - 9D449F7B1E6EE72000E7E80B /* ADJConnectionValidator.m */, 9D449F7C1E6EE72000E7E80B /* ADJDeviceInfo.h */, 9D449F7D1E6EE72000E7E80B /* ADJDeviceInfo.m */, 9D449F7E1E6EE72000E7E80B /* ADJEvent.h */, @@ -534,7 +529,6 @@ 9D449FAB1E6EE72000E7E80B /* ADJAttribution.m in Sources */, 9D449FA61E6EE72000E7E80B /* ADJActivityState.m in Sources */, 9DF7ACB81CB4FF6400D3591F /* AdjustTrackingHelper.m in Sources */, - 9D449FAF1E6EE72000E7E80B /* ADJConnectionValidator.m in Sources */, 9DF7AC1F1CB4FEDB00D3591F /* ViewControllerWatch.m in Sources */, 9DF7AC1C1CB4FEDB00D3591F /* AppDelegate.m in Sources */, 9D449FAE1E6EE72000E7E80B /* ADJConfig.m in Sources */, diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj index 8199b15f7..ebfca8f89 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj @@ -25,7 +25,6 @@ 9D449F481E6EE6C500E7E80B /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F111E6EE6C500E7E80B /* ADJAttributionHandler.m */; }; 9D449F491E6EE6C500E7E80B /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F131E6EE6C500E7E80B /* ADJBackoffStrategy.m */; }; 9D449F4A1E6EE6C500E7E80B /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F151E6EE6C500E7E80B /* ADJConfig.m */; }; - 9D449F4B1E6EE6C500E7E80B /* ADJConnectionValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F171E6EE6C500E7E80B /* ADJConnectionValidator.m */; }; 9D449F4C1E6EE6C500E7E80B /* ADJDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F191E6EE6C500E7E80B /* ADJDeviceInfo.m */; }; 9D449F4D1E6EE6C500E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F1B1E6EE6C500E7E80B /* ADJEvent.m */; }; 9D449F4E1E6EE6C500E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F1D1E6EE6C500E7E80B /* ADJEventFailure.m */; }; @@ -97,8 +96,6 @@ 9D449F131E6EE6C500E7E80B /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; 9D449F141E6EE6C500E7E80B /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; 9D449F151E6EE6C500E7E80B /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D449F161E6EE6C500E7E80B /* ADJConnectionValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConnectionValidator.h; sourceTree = ""; }; - 9D449F171E6EE6C500E7E80B /* ADJConnectionValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConnectionValidator.m; sourceTree = ""; }; 9D449F181E6EE6C500E7E80B /* ADJDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJDeviceInfo.h; sourceTree = ""; }; 9D449F191E6EE6C500E7E80B /* ADJDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJDeviceInfo.m; sourceTree = ""; }; 9D449F1A1E6EE6C500E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; @@ -219,8 +216,6 @@ 9D449F131E6EE6C500E7E80B /* ADJBackoffStrategy.m */, 9D449F141E6EE6C500E7E80B /* ADJConfig.h */, 9D449F151E6EE6C500E7E80B /* ADJConfig.m */, - 9D449F161E6EE6C500E7E80B /* ADJConnectionValidator.h */, - 9D449F171E6EE6C500E7E80B /* ADJConnectionValidator.m */, 9D449F181E6EE6C500E7E80B /* ADJDeviceInfo.h */, 9D449F191E6EE6C500E7E80B /* ADJDeviceInfo.m */, 9D449F1A1E6EE6C500E7E80B /* ADJEvent.h */, @@ -372,7 +367,6 @@ 9D449F471E6EE6C500E7E80B /* ADJAttribution.m in Sources */, 9D449F421E6EE6C500E7E80B /* ADJActivityState.m in Sources */, 9DC95F2F1C10596500138E4B /* Constants.m in Sources */, - 9D449F4B1E6EE6C500E7E80B /* ADJConnectionValidator.m in Sources */, 963909BD1BCC0D8300A2E8A4 /* ViewControllertvOS.m in Sources */, 963909BA1BCC0D8300A2E8A4 /* AppDelegate.m in Sources */, 9D449F4A1E6EE6C500E7E80B /* ADJConfig.m in Sources */, diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json index 6a3dcfa52..dea6e49fd 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json @@ -12,6 +12,12 @@ "filename" : "App Icon - Small.imagestack", "role" : "primary-app-icon" }, + { + "size" : "2320x720", + "idiom" : "tv", + "filename" : "Top Shelf Image Wide.imageset", + "role" : "top-shelf-image-wide" + }, { "size" : "1920x720", "idiom" : "tv", @@ -23,4 +29,4 @@ "version" : 1, "author" : "xcode" } -} +} \ No newline at end of file diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json new file mode 100644 index 000000000..0564959fb --- /dev/null +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "tv", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file From a116582e62b806668b7175a446d1857a91e5e73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uglje=C5=A1a=20Erceg?= Date: Thu, 21 Sep 2017 18:59:14 +0200 Subject: [PATCH 9/9] Update CHANGELOG.md --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e04ceda7d..251eeec34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +### Version 4.11.5 (21st September 2017) +#### Fixed +- Fixed `WKWebViewJavascriptBridge` bug (https://github.com/marcuswestin/WebViewJavascriptBridge/issues/267). + +#### Changed +- Improved iOS 11 compatibility. +- Removed connection validity checks. + +--- ### Version 4.11.4 (5th May 2017) #### Added - Added check if `sdk_click` package response contains attribution information.