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;