diff --git a/Podfile.lock b/Podfile.lock index 3302c69..5f858a4 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -21,4 +21,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 367191b16ca5e0c9811d87a65d95fdec097564ad -COCOAPODS: 1.12.1 +COCOAPODS: 1.15.2 diff --git a/TapstreamIOS.podspec b/TapstreamIOS.podspec index 6ece8bc..fc8cf0b 100644 --- a/TapstreamIOS.podspec +++ b/TapstreamIOS.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = 'TapstreamIOS' - s.version = '4.1.0' + s.version = '4.2.0' s.summary = 'Tapstream marketing analytics SDK for iOS.' s.homepage = 'https://tapstream.com/' s.license = 'MIT' s.author = { 'Tapstream' => 'support@tapstream.com' } - s.source = { :git => 'https://github.com/tapstream/tapstream-sdk-ios.git', :tag => 'v4.1.0-ios' } + s.source = { :git => 'https://github.com/tapstream/tapstream-sdk-ios.git', :tag => 'v4.2.0-ios' } s.ios.deployment_target = '15.0' s.ios.frameworks = 'Foundation', 'UIKit', 'WebKit' diff --git a/fabfile.py b/fabfile.py index 97546c2..8afcc6d 100644 --- a/fabfile.py +++ b/fabfile.py @@ -19,7 +19,7 @@ def test(c: Connection): """ schemes = { 'TapstreamIOS': [ - 'platform=iOS Simulator,name=iPhone 12,OS=14.5', + 'platform=iOS Simulator,name=iPhone 12,OS=15.5', ] } diff --git a/tapstream-sdk-ios-tests/Info.plist b/tapstream-sdk-ios-tests/Info.plist index f69b35b..b40bf3c 100644 --- a/tapstream-sdk-ios-tests/Info.plist +++ b/tapstream-sdk-ios-tests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 4.1.0 + 4.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/tapstream-sdk-ios-tests/TestUniversalLink.m b/tapstream-sdk-ios-tests/TestUniversalLink.m index 1fce210..c03e2fb 100644 --- a/tapstream-sdk-ios-tests/TestUniversalLink.m +++ b/tapstream-sdk-ios-tests/TestUniversalLink.m @@ -30,7 +30,7 @@ it(@"Handles invalid JSON", ^{ - TSResponse* r = [TSResponse responseWithStatus:200 message:nil data:[NSKeyedArchiver archivedDataWithRootObject:@""]]; + TSResponse* r = [TSResponse responseWithStatus:200 message:nil data:[NSKeyedArchiver archivedDataWithRootObject:@"" requiringSecureCoding:NO error: nil]]; TSUniversalLinkApiResponse* ul = [TSUniversalLinkApiResponse universalLinkApiResponseWithResponse:r]; XCTAssertEqual(ul.status, kTSULUnknown); @@ -42,7 +42,7 @@ it(@"Handles a blank JSON response", ^{ - TSResponse* r = [TSResponse responseWithStatus:200 message:nil data:[NSKeyedArchiver archivedDataWithRootObject:@""]]; + TSResponse* r = [TSResponse responseWithStatus:200 message:nil data:[NSKeyedArchiver archivedDataWithRootObject:@"" requiringSecureCoding:NO error: nil]]; TSUniversalLinkApiResponse* ul = [TSUniversalLinkApiResponse universalLinkApiResponseWithResponse:r]; XCTAssertEqual(ul.status, kTSULUnknown); @@ -52,9 +52,8 @@ XCTAssert([ul.error.userInfo valueForKey:@"cause"] != nil); }); - it(@"Handles an invalid JSON response", ^{ - - TSResponse* r = [TSResponse responseWithStatus:200 message:nil data:[NSKeyedArchiver archivedDataWithRootObject:@"{]}"]]; + it(@"Handles an invalid JSON response", ^{ + TSResponse* r = [TSResponse responseWithStatus:200 message:nil data: [NSKeyedArchiver archivedDataWithRootObject:@"{]}" requiringSecureCoding:NO error: nil]]; TSUniversalLinkApiResponse* ul = [TSUniversalLinkApiResponse universalLinkApiResponseWithResponse:r]; XCTAssertEqual(ul.status, kTSULUnknown); diff --git a/tapstream-sdk-ios.xcodeproj/project.pbxproj b/tapstream-sdk-ios.xcodeproj/project.pbxproj index dd38b0e..599e48b 100644 --- a/tapstream-sdk-ios.xcodeproj/project.pbxproj +++ b/tapstream-sdk-ios.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -58,7 +58,6 @@ 6624C0E41DA58E5000FF5AAC /* TSLanderDelegateWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6614D1B41D48228D001C88AB /* TSLanderDelegateWrapper.h */; }; 6624C0E51DA58E5000FF5AAC /* TSLanderDelegateWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6614D1B51D48228D001C88AB /* TSLanderDelegateWrapper.m */; }; 6624C0E61DA58E5000FF5AAC /* TSLanderStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6614D1B61D48228D001C88AB /* TSLanderStrategy.h */; }; - 6624C0E71DA58E5000FF5AAC /* TSLanderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6614D1B71D48228D001C88AB /* TSLanderView.xib */; }; 6624C0E91DA591C900FF5AAC /* TSWordOfMouth.h in Headers */ = {isa = PBXBuildFile; fileRef = 6624C0E81DA591C900FF5AAC /* TSWordOfMouth.h */; }; 66519FEA1D2B42F30002E7E7 /* TestURLEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 66519FE81D2B42D30002E7E7 /* TestURLEncoder.m */; }; 666C19C21CE65CA9004806D9 /* TapstreamIOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 666C19B71CE65CA9004806D9 /* TapstreamIOS.framework */; }; @@ -159,7 +158,6 @@ 6614D1B41D48228D001C88AB /* TSLanderDelegateWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TSLanderDelegateWrapper.h; sourceTree = ""; }; 6614D1B51D48228D001C88AB /* TSLanderDelegateWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TSLanderDelegateWrapper.m; sourceTree = ""; }; 6614D1B61D48228D001C88AB /* TSLanderStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TSLanderStrategy.h; sourceTree = ""; }; - 6614D1B71D48228D001C88AB /* TSLanderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TSLanderView.xib; sourceTree = ""; }; 661510171D079D6F00B298B7 /* TestEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestEvent.m; sourceTree = ""; }; 662077AB1D63E6D300355F81 /* TestShowLanderDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestShowLanderDelegate.m; sourceTree = ""; }; 662077AE1D63E89C00355F81 /* TSTestUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TSTestUtils.h; sourceTree = ""; }; @@ -315,7 +313,6 @@ 6614D1B41D48228D001C88AB /* TSLanderDelegateWrapper.h */, 6614D1B51D48228D001C88AB /* TSLanderDelegateWrapper.m */, 6614D1B61D48228D001C88AB /* TSLanderStrategy.h */, - 6614D1B71D48228D001C88AB /* TSLanderView.xib */, ); path = "in-app-landers"; sourceTree = ""; @@ -624,8 +621,9 @@ 666C19AE1CE65CA9004806D9 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 1240; + LastUpgradeCheck = 1520; ORGANIZATIONNAME = "Adam Bard"; TargetAttributes = { 666C19B61CE65CA9004806D9 = { @@ -666,7 +664,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6624C0E71DA58E5000FF5AAC /* TSLanderView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -842,6 +839,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -903,6 +901,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -933,12 +932,20 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "tapstream-sdk-ios/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ""; - MARKETING_VERSION = 4.1.0; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; + MARKETING_VERSION = 4.2.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = com.tapstream.TapstreamIOS; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -960,12 +967,20 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "tapstream-sdk-ios/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ""; - MARKETING_VERSION = 4.1.0; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; + MARKETING_VERSION = 4.2.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = com.tapstream.TapstreamIOS; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -984,7 +999,12 @@ DEVELOPMENT_TEAM = 9SC764U3NB; INFOPLIST_FILE = "tapstream-sdk-ios-tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "com.tapstream.tapstream-sdk-ios-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -1002,7 +1022,12 @@ DEVELOPMENT_TEAM = 9SC764U3NB; INFOPLIST_FILE = "tapstream-sdk-ios-tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "com.tapstream.tapstream-sdk-ios-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/tapstream-sdk-ios.xcodeproj/xcshareddata/xcschemes/TapstreamIOS.xcscheme b/tapstream-sdk-ios.xcodeproj/xcshareddata/xcschemes/TapstreamIOS.xcscheme index acc0a25..51f2a5d 100644 --- a/tapstream-sdk-ios.xcodeproj/xcshareddata/xcschemes/TapstreamIOS.xcscheme +++ b/tapstream-sdk-ios.xcodeproj/xcshareddata/xcschemes/TapstreamIOS.xcscheme @@ -1,6 +1,6 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.1.0 + 4.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/tapstream-sdk-ios/TSConfig.h b/tapstream-sdk-ios/TSConfig.h index a5797b3..695c2f0 100644 --- a/tapstream-sdk-ios/TSConfig.h +++ b/tapstream-sdk-ios/TSConfig.h @@ -10,6 +10,7 @@ NSString* sdkSecret; // Optional hardware identifiers that can be provided by the caller + NSString *externalIdentity; BOOL autoCollectIdfa; NSString *idfa; @@ -39,7 +40,8 @@ } @property(nonatomic, strong) NSString *accountName; @property(nonatomic, strong) NSString *sdkSecret; - + +@property(nonatomic, strong) NSString *externalIdentity; @property(nonatomic, assign) BOOL autoCollectIdfa; @property(nonatomic, strong) NSString *idfa; diff --git a/tapstream-sdk-ios/TSConfig.m b/tapstream-sdk-ios/TSConfig.m index b1c6a19..78fc750 100644 --- a/tapstream-sdk-ios/TSConfig.m +++ b/tapstream-sdk-ios/TSConfig.m @@ -8,6 +8,7 @@ @implementation TSConfig @synthesize accountName = accountName; @synthesize sdkSecret = sdkSecret; +@synthesize externalIdentity = externalIdentity; @synthesize autoCollectIdfa = autoCollectIdfa; @synthesize idfa = idfa; diff --git a/tapstream-sdk-ios/TSDefaultPlatform.h b/tapstream-sdk-ios/TSDefaultPlatform.h index 568c0b4..79c0aae 100644 --- a/tapstream-sdk-ios/TSDefaultPlatform.h +++ b/tapstream-sdk-ios/TSDefaultPlatform.h @@ -17,7 +17,6 @@ - (NSString *)getManufacturer; - (NSString *)getModel; - (NSString *)getOs; -- (NSString *)getOsBuild; - (NSString *)getAppName; - (NSString *)getAppVersion; - (NSString *)getPackageName; diff --git a/tapstream-sdk-ios/TSDefaultPlatform.m b/tapstream-sdk-ios/TSDefaultPlatform.m index 63e6fdd..7d79cce 100644 --- a/tapstream-sdk-ios/TSDefaultPlatform.m +++ b/tapstream-sdk-ios/TSDefaultPlatform.m @@ -111,15 +111,6 @@ - (NSString *)getModel return machine; } -- (NSString *)getOsBuild -{ -#if TARGET_IPHONE_SIMULATOR - return nil; // Simulators lie. -#else - return [self systemInfoByName:@"kern.osversion" default:@""]; -#endif -} - - (NSString *)getOs { return [NSString stringWithFormat:@"%@ %@", [[UIDevice currentDevice] systemName], [[UIDevice currentDevice] systemVersion]]; diff --git a/tapstream-sdk-ios/TSDefs.h b/tapstream-sdk-ios/TSDefs.h index 79c1cd0..fbb0cde 100644 --- a/tapstream-sdk-ios/TSDefs.h +++ b/tapstream-sdk-ios/TSDefs.h @@ -2,5 +2,5 @@ #define kTSPlatform @"iOS" -#define kTSVersion @"4.1.0" +#define kTSVersion @"4.2.0" #define kTSDefaultTimeout 10000 diff --git a/tapstream-sdk-ios/TSFireEventDelegate.m b/tapstream-sdk-ios/TSFireEventDelegate.m index 52317aa..e430f7c 100644 --- a/tapstream-sdk-ios/TSFireEventDelegate.m +++ b/tapstream-sdk-ios/TSFireEventDelegate.m @@ -173,12 +173,12 @@ + (TSRequestData*)buildRequestData:(id)platform config:(TSConfig*)co @"sdkversion", kTSVersion, @"hardware-ios-idfa", config.idfa, + @"hardware", config.externalIdentity, @"uuid", [platform getSessionId], @"platform", [platform getPlatformName], @"model", [platform getModel], @"os", [platform getOs], - @"os-build", [platform getOsBuild], @"app-name", [platform getAppName], @"app-version", [platform getAppVersion], @"package-name", [platform getPackageName], diff --git a/tapstream-sdk-ios/TSPlatform.h b/tapstream-sdk-ios/TSPlatform.h index b80d79a..6a7fc62 100644 --- a/tapstream-sdk-ios/TSPlatform.h +++ b/tapstream-sdk-ios/TSPlatform.h @@ -14,7 +14,6 @@ - (NSString *)getManufacturer; - (NSString *)getModel; - (NSString *)getOs; -- (NSString *)getOsBuild; - (NSString *)getAppName; - (NSString *)getPlatformName; - (NSString *)getAppVersion;