diff --git a/.gitignore b/.gitignore index 3bd4cf0a6..e768aff31 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ uncrustify.cfg #SPM .swiftpm/ +Package.resolved diff --git a/Adjust.podspec b/Adjust.podspec index cb43d1f9c..5c6826a46 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,43 +1,36 @@ Pod::Spec.new do |s| - s.name = "Adjust" - s.version = "4.38.4" - 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 = { "Adjust" => "sdk@adjust.com" } - s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.38.4" } - s.ios.deployment_target = '9.0' - s.tvos.deployment_target = '9.0' - s.framework = 'SystemConfiguration' - s.ios.weak_framework = 'AdSupport' - s.tvos.weak_framework = 'AdSupport' - s.requires_arc = true - s.default_subspec = 'Core' - s.pod_target_xcconfig = { 'BITCODE_GENERATION_MODE' => 'bitcode' } + s.name = "Adjust" + s.module_name = "AdjustSdk" + s.version = "5.0.0" + s.summary = "This is the iOS SDK of Adjust. You can read more about it at https://adjust.com." + s.homepage = "https://github.com/adjust/ios_sdk" + s.license = { :type => 'MIT', :file => 'LICENSE' } + s.author = { "Adjust" => "sdk@adjust.com" } + s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v#{s.version}" } + s.ios.deployment_target = '12.0' + s.tvos.deployment_target = '12.0' + s.framework = 'SystemConfiguration' + s.ios.weak_framework = 'AdSupport' + s.tvos.weak_framework = 'AdSupport' + s.default_subspec = 'Adjust' + s.module_map = 'ModuleMap/module.modulemap' - s.subspec 'Core' do |co| - co.source_files = 'Adjust/*.{h,m}', 'Adjust/ADJAdditions/*.{h,m}' - co.resource_bundle = {'Adjust' => ['Adjust/*.xcprivacy']} + s.subspec 'Adjust' do |adj| + adj.source_files = 'Adjust/**/*.{h,m}', 'UmbrellaHeaders/sdk/*.{h,m}' + adj.public_header_files = 'Adjust/*.h', 'UmbrellaHeaders/sdk/*.h' + adj.exclude_files = 'Adjust/include/**/*.h' + adj.resource_bundle = {'Adjust' => ['Adjust/*.xcprivacy']} + adj.header_dir = 'AdjustSdk' + adj.dependency 'AdjustSignature', '~> 3.18' end - s.subspec 'Sociomantic' do |sm| - sm.source_files = 'plugin/Sociomantic/*.{h,m}' - sm.dependency 'Adjust/Core' - end - - s.subspec 'Criteo' do |cr| - cr.source_files = 'plugin/Criteo/*.{h,m}' - cr.dependency 'Adjust/Core' - end - - s.subspec 'Trademob' do |tm| - tm.source_files = 'plugin/Trademob/*.{h,m}' - tm.dependency 'Adjust/Core' - end - - s.subspec 'WebBridge' do |wb| - wb.source_files = 'AdjustBridge/*.{h,m}', 'AdjustBridge/WebViewJavascriptBridge/*.{h,m}' - wb.dependency 'Adjust/Core' - wb.ios.deployment_target = '9.0' + s.subspec 'AdjustWebBridge' do |awb| + awb.source_files = 'Adjust/**/*.{h,m}', 'AdjustBridge/*.{h,m}', 'UmbrellaHeaders/webbridge/*.{h,m}' + awb.public_header_files = 'Adjust/*.h', 'AdjustBridge/*.h', 'UmbrellaHeaders/webbridge/*.h' + awb.exclude_files = ['Adjust/include/**/*.h', 'AdjustBridge/include/**/*.h'] + awb.resource_bundle = {'Adjust' => ['Adjust/*.xcprivacy']} + awb.header_dir = 'AdjustSdk' + awb.ios.deployment_target = '12.0' + awb.dependency 'AdjustSignature', '~> 3.18' end end diff --git a/Adjust.xcodeproj/project.pbxproj b/Adjust.xcodeproj/project.pbxproj index eef00aebd..878efa24a 100644 --- a/Adjust.xcodeproj/project.pbxproj +++ b/Adjust.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXAggregateTarget section */ @@ -22,17 +22,489 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 07000F922C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 07000F902C47BEAF00F40775 /* AdjustBridgeConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07000F932C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 07000F902C47BEAF00F40775 /* AdjustBridgeConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07000F942C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 07000F902C47BEAF00F40775 /* AdjustBridgeConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07000F952C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 07000F912C47BEAF00F40775 /* AdjustBridgeConstants.m */; }; + 07000F962C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 07000F912C47BEAF00F40775 /* AdjustBridgeConstants.m */; }; + 07000F972C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 07000F912C47BEAF00F40775 /* AdjustBridgeConstants.m */; }; + 071684DE2C0471C800B8B9FD /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */; }; 07BFEAA22A49E3DA004E29D9 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */; }; 07BFEAA32A49E3DA004E29D9 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */; }; 07BFEAA42A49E3DA004E29D9 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */; }; + 07D5CAC52C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAB12C50EF3100C112DC /* AdjustBridgeRegister.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CAC62C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAB12C50EF3100C112DC /* AdjustBridgeRegister.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CAC72C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAB12C50EF3100C112DC /* AdjustBridgeRegister.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CAC82C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CAC42C50EF3100C112DC /* AdjustBridgeRegister.m */; }; + 07D5CAC92C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CAC42C50EF3100C112DC /* AdjustBridgeRegister.m */; }; + 07D5CACA2C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CAC42C50EF3100C112DC /* AdjustBridgeRegister.m */; }; + 07D5CB0E2C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAFA2C57DA2400C112DC /* AdjustBridgeUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CB0F2C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAFA2C57DA2400C112DC /* AdjustBridgeUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CB102C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D5CAFA2C57DA2400C112DC /* AdjustBridgeUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07D5CB112C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CB0D2C57DA2400C112DC /* AdjustBridgeUtil.m */; }; + 07D5CB122C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CB0D2C57DA2400C112DC /* AdjustBridgeUtil.m */; }; + 07D5CB132C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CB0D2C57DA2400C112DC /* AdjustBridgeUtil.m */; }; + 0A584B9D2C3E937E0071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584B9F2C3E93EF0071A651 /* AdjustBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9648C5F51CD1770300A3B049 /* AdjustBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BA42C3E94230071A651 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; + 0A584BA52C3E94230071A651 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 0A584BA62C3E94240071A651 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; + 0A584BA72C3E94240071A651 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952D11A01309200928462 /* ADJAttribution.m */; }; + 0A584BA82C3E94240071A651 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 960A8BB81A029A8000F2BB95 /* ADJConfig.m */; }; + 0A584BA92C3E94240071A651 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9609BC6919EEA55800E02303 /* ADJEvent.m */; }; + 0A584BAA2C3E94240071A651 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; + 0A584BAB2C3E94240071A651 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE31C74B70600670879 /* ADJEventSuccess.m */; }; + 0A584BAC2C3E94240071A651 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; + 0A584BAD2C3E94240071A651 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37418BBB48A008E7B30 /* ADJLogger.m */; }; + 0A584BAE2C3E94240071A651 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; + 0A584BAF2C3E94240071A651 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */; }; + 0A584BB02C3E94240071A651 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */; }; + 0A584BB12C3E94240071A651 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; + 0A584BB22C3E94240071A651 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; + 0A584BB32C3E94240071A651 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; + 0A584BB42C3E94240071A651 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; + 0A584BB52C3E94240071A651 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */; }; + 0A584BB62C3E94240071A651 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */; }; + 0A584BB72C3E94240071A651 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 0A584BB82C3E94240071A651 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */; }; + 0A584BB92C3E94240071A651 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952CE1A012F5300928462 /* ADJAttributionHandler.m */; }; + 0A584BBA2C3E94240071A651 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; + 0A584BBB2C3E94240071A651 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; + 0A584BBC2C3E94240071A651 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */; }; + 0A584BBD2C3E94240071A651 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */; }; + 0A584BBE2C3E94240071A651 /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */; }; + 0A584BBF2C3E94240071A651 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; + 0A584BC02C3E94240071A651 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */; }; + 0A584BC12C3E94240071A651 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FCC5371C186426007BBFE1 /* ADJResponseData.m */; }; + 0A584BC22C3E94240071A651 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; + 0A584BC32C3E94240071A651 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; + 0A584BC42C3E94240071A651 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */; }; + 0A584BC52C3E94240071A651 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A581B1F2779002B2874 /* ADJTimerOnce.m */; }; + 0A584BC62C3E94240071A651 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584BC72C3E94240071A651 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; + 0A584BC82C3E94240071A651 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E38018BBB48A008E7B30 /* ADJUtil.m */; }; + 0A584BC92C3E944F0071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCA2C3E944F0071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCB2C3E944F0071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCC2C3E944F0071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCD2C3E944F0071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCE2C3E944F0071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BCF2C3E944F0071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD02C3E944F0071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD12C3E944F0071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD22C3E944F0071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD32C3E944F0071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD42C3E944F0071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD52C3E944F0071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD62C3E944F0071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD72C3E944F0071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD82C3E944F0071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584BD92C3E945D0071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584BDA2C3E945D0071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584BDB2C3E945D0071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584BDC2C3E945D0071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584BDD2C3E945D0071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584BDE2C3E945D0071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584BDF2C3E945D0071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584BE02C3E945D0071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584BE12C3E945D0071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584BE22C3E945D0071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584BE32C3E945D0071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584BE42C3E945D0071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584BE52C3E945D0071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584BE62C3E945D0071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584BE72C3E945D0071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584BE82C3E945D0071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584BE92C3E945D0071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584BEA2C3E945D0071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584BEB2C3E945D0071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584BEC2C3E945D0071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584BED2C3E945D0071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584BEE2C3E945D0071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584BEF2C3E949B0071A651 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; + 0A584BF02C3E949B0071A651 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 0A584BF12C3E949B0071A651 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; + 0A584BF22C3E949B0071A651 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952D11A01309200928462 /* ADJAttribution.m */; }; + 0A584BF32C3E949B0071A651 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 960A8BB81A029A8000F2BB95 /* ADJConfig.m */; }; + 0A584BF42C3E949B0071A651 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9609BC6919EEA55800E02303 /* ADJEvent.m */; }; + 0A584BF52C3E949B0071A651 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; + 0A584BF62C3E949B0071A651 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE31C74B70600670879 /* ADJEventSuccess.m */; }; + 0A584BF72C3E949B0071A651 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; + 0A584BF82C3E949B0071A651 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37418BBB48A008E7B30 /* ADJLogger.m */; }; + 0A584BF92C3E949B0071A651 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; + 0A584BFA2C3E949B0071A651 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */; }; + 0A584BFB2C3E949B0071A651 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */; }; + 0A584BFC2C3E949B0071A651 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; + 0A584BFD2C3E949B0071A651 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; + 0A584BFE2C3E949B0071A651 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; + 0A584BFF2C3E949B0071A651 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; + 0A584C002C3E949B0071A651 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */; }; + 0A584C012C3E949B0071A651 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */; }; + 0A584C022C3E949B0071A651 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 0A584C032C3E949B0071A651 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */; }; + 0A584C042C3E949B0071A651 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952CE1A012F5300928462 /* ADJAttributionHandler.m */; }; + 0A584C052C3E949B0071A651 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; + 0A584C062C3E949B0071A651 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; + 0A584C072C3E949B0071A651 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */; }; + 0A584C082C3E949B0071A651 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */; }; + 0A584C092C3E949B0071A651 /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */; }; + 0A584C0A2C3E949B0071A651 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; + 0A584C0B2C3E949B0071A651 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */; }; + 0A584C0C2C3E949B0071A651 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FCC5371C186426007BBFE1 /* ADJResponseData.m */; }; + 0A584C0D2C3E949B0071A651 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; + 0A584C0E2C3E949B0071A651 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; + 0A584C0F2C3E949B0071A651 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */; }; + 0A584C102C3E949B0071A651 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A581B1F2779002B2874 /* ADJTimerOnce.m */; }; + 0A584C112C3E949B0071A651 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584C122C3E949B0071A651 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; + 0A584C132C3E949B0071A651 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E38018BBB48A008E7B30 /* ADJUtil.m */; }; + 0A584C142C3E94B50071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C152C3E94B50071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C162C3E94B50071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C172C3E94B50071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C182C3E94B50071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C192C3E94B50071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1A2C3E94B50071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1B2C3E94B50071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1C2C3E94B50071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1D2C3E94B50071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1E2C3E94B50071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C1F2C3E94B50071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C202C3E94B50071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C212C3E94B50071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C222C3E94B50071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C232C3E94B50071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C242C3E94C70071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584C252C3E94C70071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584C262C3E94C70071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584C272C3E94C70071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584C282C3E94C70071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584C292C3E94C70071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584C2A2C3E94C70071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584C2B2C3E94C80071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584C2C2C3E94C80071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584C2D2C3E94C80071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584C2E2C3E94C80071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584C2F2C3E94C80071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584C302C3E94C80071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584C312C3E94C80071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584C322C3E94C80071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584C332C3E94C80071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584C342C3E94C80071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584C352C3E94C80071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584C362C3E94C80071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584C372C3E94C80071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584C382C3E94C80071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584C392C3E94C80071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584C3A2C3E94E70071A651 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; + 0A584C3B2C3E94E70071A651 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 0A584C3C2C3E94E70071A651 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; + 0A584C3D2C3E94E70071A651 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952D11A01309200928462 /* ADJAttribution.m */; }; + 0A584C3E2C3E94E70071A651 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 960A8BB81A029A8000F2BB95 /* ADJConfig.m */; }; + 0A584C3F2C3E94E70071A651 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9609BC6919EEA55800E02303 /* ADJEvent.m */; }; + 0A584C402C3E94E70071A651 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; + 0A584C412C3E94E70071A651 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE31C74B70600670879 /* ADJEventSuccess.m */; }; + 0A584C422C3E94E70071A651 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; + 0A584C432C3E94E70071A651 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37418BBB48A008E7B30 /* ADJLogger.m */; }; + 0A584C442C3E94E70071A651 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; + 0A584C452C3E94E70071A651 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */; }; + 0A584C462C3E94E70071A651 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */; }; + 0A584C472C3E94E70071A651 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; + 0A584C482C3E94E70071A651 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; + 0A584C492C3E94E70071A651 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; + 0A584C4A2C3E94E70071A651 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; + 0A584C4B2C3E94E70071A651 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */; }; + 0A584C4C2C3E94E70071A651 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */; }; + 0A584C4D2C3E94E70071A651 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 0A584C4E2C3E94E70071A651 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */; }; + 0A584C4F2C3E94E70071A651 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952CE1A012F5300928462 /* ADJAttributionHandler.m */; }; + 0A584C502C3E94E70071A651 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; + 0A584C512C3E94E70071A651 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; + 0A584C522C3E94E70071A651 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */; }; + 0A584C532C3E94E70071A651 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */; }; + 0A584C542C3E94E70071A651 /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */; }; + 0A584C552C3E94E70071A651 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; + 0A584C562C3E94E70071A651 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */; }; + 0A584C572C3E94E70071A651 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FCC5371C186426007BBFE1 /* ADJResponseData.m */; }; + 0A584C582C3E94E70071A651 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; + 0A584C592C3E94E70071A651 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; + 0A584C5A2C3E94E70071A651 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */; }; + 0A584C5B2C3E94E70071A651 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A581B1F2779002B2874 /* ADJTimerOnce.m */; }; + 0A584C5C2C3E94E70071A651 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584C5D2C3E94E70071A651 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; + 0A584C5E2C3E94E70071A651 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E38018BBB48A008E7B30 /* ADJUtil.m */; }; + 0A584C5F2C3E94FA0071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C602C3E94FA0071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C612C3E94FA0071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C622C3E94FA0071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C632C3E94FA0071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C642C3E94FA0071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C652C3E94FA0071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C662C3E94FA0071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C672C3E94FA0071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C682C3E94FA0071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C692C3E94FA0071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6A2C3E94FA0071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6B2C3E94FA0071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6C2C3E94FA0071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6D2C3E94FA0071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6E2C3E94FA0071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584C6F2C3E950A0071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584C702C3E950A0071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584C712C3E950A0071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584C722C3E950A0071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584C732C3E950A0071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584C742C3E950A0071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584C752C3E950A0071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584C762C3E950A0071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584C772C3E950A0071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584C782C3E950A0071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584C792C3E950A0071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584C7A2C3E950B0071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584C7B2C3E950B0071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584C7C2C3E950B0071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584C7D2C3E950B0071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584C7E2C3E950B0071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584C7F2C3E950B0071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584C802C3E950B0071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584C812C3E950B0071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584C822C3E950B0071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584C832C3E950B0071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584C842C3E950B0071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584C852C3E952B0071A651 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; + 0A584C862C3E952B0071A651 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 0A584C872C3E952C0071A651 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; + 0A584C882C3E952C0071A651 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952D11A01309200928462 /* ADJAttribution.m */; }; + 0A584C892C3E952C0071A651 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 960A8BB81A029A8000F2BB95 /* ADJConfig.m */; }; + 0A584C8A2C3E952C0071A651 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9609BC6919EEA55800E02303 /* ADJEvent.m */; }; + 0A584C8B2C3E952C0071A651 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; + 0A584C8C2C3E952C0071A651 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE31C74B70600670879 /* ADJEventSuccess.m */; }; + 0A584C8D2C3E952C0071A651 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; + 0A584C8E2C3E952C0071A651 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37418BBB48A008E7B30 /* ADJLogger.m */; }; + 0A584C8F2C3E952C0071A651 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; + 0A584C902C3E952C0071A651 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */; }; + 0A584C912C3E952C0071A651 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */; }; + 0A584C922C3E952C0071A651 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; + 0A584C932C3E952C0071A651 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; + 0A584C942C3E952C0071A651 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; + 0A584C952C3E952C0071A651 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; + 0A584C962C3E952C0071A651 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */; }; + 0A584C972C3E952C0071A651 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */; }; + 0A584C982C3E952C0071A651 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 0A584C992C3E952C0071A651 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */; }; + 0A584C9A2C3E952C0071A651 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952CE1A012F5300928462 /* ADJAttributionHandler.m */; }; + 0A584C9B2C3E952C0071A651 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; + 0A584C9C2C3E952C0071A651 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; + 0A584C9D2C3E952C0071A651 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */; }; + 0A584C9E2C3E952C0071A651 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */; }; + 0A584C9F2C3E952C0071A651 /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */; }; + 0A584CA02C3E952C0071A651 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; + 0A584CA12C3E952C0071A651 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */; }; + 0A584CA22C3E952C0071A651 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FCC5371C186426007BBFE1 /* ADJResponseData.m */; }; + 0A584CA32C3E952C0071A651 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; + 0A584CA42C3E952C0071A651 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; + 0A584CA52C3E952C0071A651 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */; }; + 0A584CA62C3E952C0071A651 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A581B1F2779002B2874 /* ADJTimerOnce.m */; }; + 0A584CA72C3E952C0071A651 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584CA82C3E952C0071A651 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; + 0A584CA92C3E952C0071A651 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E38018BBB48A008E7B30 /* ADJUtil.m */; }; + 0A584CAA2C3E952C0071A651 /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5F61CD1770300A3B049 /* AdjustBridge.m */; }; + 0A584CAF2C3E95560071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB02C3E95560071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB12C3E95560071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB22C3E95560071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB32C3E95560071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB42C3E95560071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB52C3E95560071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB62C3E95560071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB72C3E95570071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB82C3E95570071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CB92C3E95570071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CBA2C3E95570071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CBB2C3E95570071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CBC2C3E95570071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CBD2C3E95570071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CBE2C3E95570071A651 /* AdjustBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9648C5F51CD1770300A3B049 /* AdjustBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CC32C3E95570071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B992C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CC42C3E95700071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584CC52C3E95700071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584CC62C3E95700071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584CC72C3E95700071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584CC82C3E95700071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584CC92C3E95700071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584CCA2C3E95700071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584CCB2C3E95700071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584CCC2C3E95700071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584CCD2C3E95700071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584CCE2C3E95700071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584CCF2C3E95700071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584CD02C3E95700071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584CD12C3E95700071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584CD22C3E95710071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584CD32C3E95710071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584CD42C3E95710071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584CD52C3E95710071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584CD62C3E95710071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584CD72C3E95710071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584CD82C3E95710071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584CD92C3E95710071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584CDB2C3E95B10071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CDC2C3E95B10071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CDD2C3E95B10071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CDE2C3E95B10071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CDF2C3E95B10071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE02C3E95B10071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE12C3E95B10071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE22C3E95B10071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE32C3E95B10071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE42C3E95B10071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE52C3E95B10071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE62C3E95B10071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE72C3E95B10071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE82C3E95B10071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CE92C3E95B10071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CEA2C3E95B10071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584CEB2C3E95BF0071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584CEC2C3E95BF0071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584CED2C3E95BF0071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584CEE2C3E95BF0071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584CEF2C3E95BF0071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584CF02C3E95BF0071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584CF12C3E95BF0071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584CF22C3E95BF0071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584CF32C3E95BF0071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584CF42C3E95BF0071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584CF52C3E95BF0071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584CF62C3E95BF0071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584CF72C3E95BF0071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584CF82C3E95BF0071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584CF92C3E95BF0071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584CFA2C3E95BF0071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584CFB2C3E95BF0071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584CFC2C3E95BF0071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584CFD2C3E95BF0071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584CFE2C3E95BF0071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584CFF2C3E95BF0071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584D002C3E95BF0071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584D022C3E96250071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D032C3E96250071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D042C3E96250071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D052C3E96250071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D062C3E96250071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D072C3E96250071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D082C3E96250071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D092C3E96250071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0A2C3E96250071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0B2C3E96250071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0C2C3E96250071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0D2C3E96250071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0E2C3E96250071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D0F2C3E96250071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D102C3E96250071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D112C3E96250071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D122C3E96390071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584D132C3E96390071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584D142C3E96390071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584D152C3E96390071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584D162C3E96390071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584D172C3E96390071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584D182C3E96390071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584D192C3E96390071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584D1A2C3E96390071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584D1B2C3E96390071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584D1C2C3E96390071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584D1D2C3E96390071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584D1E2C3E96390071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584D1F2C3E96390071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584D202C3E96390071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584D212C3E96390071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584D222C3E96390071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584D232C3E96390071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584D242C3E96390071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584D252C3E96390071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584D262C3E96390071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584D272C3E96390071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584D292C3E968A0071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2A2C3E968A0071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2B2C3E968A0071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2C2C3E968A0071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2D2C3E968A0071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2E2C3E968A0071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D2F2C3E968A0071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D302C3E968A0071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D312C3E968A0071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D322C3E968A0071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D332C3E968A0071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D342C3E968A0071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D352C3E968A0071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D362C3E968A0071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D372C3E968A0071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D382C3E968A0071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D392C3E96960071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584D3A2C3E96960071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584D3B2C3E96960071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584D3C2C3E96960071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584D3D2C3E96960071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584D3E2C3E96960071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584D3F2C3E96960071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584D402C3E96960071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584D412C3E96960071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584D422C3E96960071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584D432C3E96960071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584D442C3E96960071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584D452C3E96960071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584D462C3E96960071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584D472C3E96960071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584D482C3E96960071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584D492C3E96960071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584D4A2C3E96960071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584D4B2C3E96960071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584D4C2C3E96960071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584D4D2C3E96960071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584D4E2C3E96960071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; + 0A584D502C3E96C70071A651 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D512C3E96C70071A651 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D522C3E96C70071A651 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D532C3E96C70071A651 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D542C3E96C70071A651 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D552C3E96C70071A651 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D562C3E96C70071A651 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D572C3E96C70071A651 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D582C3E96C70071A651 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D592C3E96C70071A651 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5A2C3E96C70071A651 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5B2C3E96C70071A651 /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5C2C3E96C70071A651 /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5D2C3E96C70071A651 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5E2C3E96C70071A651 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D5F2C3E96C70071A651 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A584B992C3E8CA50071A651 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D602C3E96E20071A651 /* AdjustBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9648C5F51CD1770300A3B049 /* AdjustBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A584D652C3E97020071A651 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; + 0A584D662C3E97020071A651 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; + 0A584D672C3E97020071A651 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; + 0A584D682C3E97020071A651 /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */; }; + 0A584D692C3E97020071A651 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 0A584D6A2C3E97020071A651 /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */; }; + 0A584D6B2C3E97020071A651 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; + 0A584D6C2C3E97020071A651 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; + 0A584D6D2C3E97020071A651 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 0A584D6E2C3E97020071A651 /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */; }; + 0A584D6F2C3E97020071A651 /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */; }; + 0A584D702C3E97020071A651 /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; + 0A584D712C3E97020071A651 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */; }; + 0A584D722C3E97020071A651 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; + 0A584D732C3E97020071A651 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; + 0A584D742C3E97020071A651 /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; + 0A584D752C3E97020071A651 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; + 0A584D762C3E97020071A651 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; + 0A584D772C3E97020071A651 /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A571B1F2779002B2874 /* ADJTimerOnce.h */; }; + 0A584D782C3E97020071A651 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 0A584D792C3E97020071A651 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; + 0A584D7A2C3E97020071A651 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; 0A67F1D92919641D00AC684A /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; 0A67F1DA2919641E00AC684A /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; 0A67F1DB2919641F00AC684A /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; 0A67F1DC2919642000AC684A /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; - 0AB1C97627DD450D00509231 /* AdjustSdk.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AB1C97327DD450D00509231 /* AdjustSdk.h */; }; - 0AB1C99727DD4A9500509231 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; - 0AB1C99827DD4B3100509231 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 0AB1C99927DD4B3100509231 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */; }; 0AB1C99A27DD4B3100509231 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; 0AB1C99B27DD4B3100509231 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; 0AB1C99C27DD4B3100509231 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; @@ -58,31 +530,13 @@ 0AB1C9B027DD4B3200509231 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; 0AB1C9B127DD4B3200509231 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; 0AB1C9B227DD4B3200509231 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; - 0AB1C9B327DD4B3200509231 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */; }; + 0AB1C9B327DD4B3200509231 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; 0AB1C9B427DD4B3200509231 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 0AB1C9B527DD4B3200509231 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */; }; + 0AB1C9B527DD4B3200509231 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; 0AB1C9B627DD4B3200509231 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; 0AB1C9B727DD4B3200509231 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; 0AB1C9B827DD4B3200509231 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; 0AB1C9B927DD4B3200509231 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; - 0AB1C9BA27DD4D7C00509231 /* Adjust.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; }; - 0AB1C9BB27DD4D7C00509231 /* ADJLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; }; - 0AB1C9BC27DD4D7C00509231 /* ADJEvent.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; }; - 0AB1C9BD27DD4D7C00509231 /* ADJAttribution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; }; - 0AB1C9BE27DD4D7C00509231 /* ADJConfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; }; - 0AB1C9BF27DD4D7C00509231 /* ADJSessionSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; }; - 0AB1C9C027DD4D7C00509231 /* ADJSessionFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; }; - 0AB1C9C127DD4D7C00509231 /* ADJEventSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; }; - 0AB1C9C227DD4D7C00509231 /* ADJEventFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; }; - 0AB1C9C327DD4D7C00509231 /* ADJSubscription.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */; }; - 0AB1C9C427DD4D7C00509231 /* ADJThirdPartySharing.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; }; - 0AB1C9C527DD4D7C00509231 /* ADJAdRevenue.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; }; - 0AB1C9C627DD4D7C00509231 /* ADJLinkResolution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; }; - 0AB1C9F727DD5B5100509231 /* ModuleMap in Resources */ = {isa = PBXBuildFile; fileRef = 0AB1C9F627DD5B5100509231 /* ModuleMap */; }; - 0AB1CA2A27DF462200509231 /* AdjustSdkTv.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AB1CA2727DF462200509231 /* AdjustSdkTv.h */; }; - 0AB1CA2F27DF49CB00509231 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; - 0AB1CA3027DF49CB00509231 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 0AB1CA3127DF49CB00509231 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */; }; 0AB1CA3227DF49CB00509231 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; 0AB1CA3327DF49CB00509231 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; 0AB1CA3427DF49CC00509231 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; @@ -108,30 +562,13 @@ 0AB1CA4827DF49CC00509231 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; 0AB1CA4927DF49CC00509231 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; 0AB1CA4A27DF49CC00509231 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; - 0AB1CA4B27DF49CC00509231 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */; }; + 0AB1CA4B27DF49CC00509231 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; 0AB1CA4C27DF49CC00509231 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 0AB1CA4D27DF49CC00509231 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */; }; + 0AB1CA4D27DF49CC00509231 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; 0AB1CA4E27DF49CC00509231 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; 0AB1CA4F27DF49CC00509231 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; 0AB1CA5027DF49CC00509231 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; 0AB1CA5127DF49CC00509231 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; - 0AB1CA5227DF4A2B00509231 /* Adjust.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; }; - 0AB1CA5327DF4A2B00509231 /* ADJLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; }; - 0AB1CA5427DF4A2B00509231 /* ADJEvent.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; }; - 0AB1CA5527DF4A2B00509231 /* ADJAttribution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; }; - 0AB1CA5627DF4A2B00509231 /* ADJConfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; }; - 0AB1CA5727DF4A2B00509231 /* ADJSessionSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; }; - 0AB1CA5827DF4A2B00509231 /* ADJSessionFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; }; - 0AB1CA5927DF4A2B00509231 /* ADJEventSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; }; - 0AB1CA5A27DF4A2B00509231 /* ADJEventFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; }; - 0AB1CA5B27DF4A2B00509231 /* ADJSubscription.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */; }; - 0AB1CA5C27DF4A2B00509231 /* ADJThirdPartySharing.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; }; - 0AB1CA5D27DF4A2B00509231 /* ADJAdRevenue.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; }; - 0AB1CA5E27DF4A2B00509231 /* ADJLinkResolution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; }; - 0AB1CA6D27DF5D3200509231 /* AdjustSdkIm.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AB1CA6A27DF5D3200509231 /* AdjustSdkIm.h */; }; - 0AB1CA7227DF61F200509231 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; - 0AB1CA7327DF61F200509231 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 0AB1CA7427DF61F200509231 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */; }; 0AB1CA7527DF61F200509231 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; 0AB1CA7627DF61F200509231 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; 0AB1CA7727DF61F200509231 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; @@ -157,30 +594,13 @@ 0AB1CA8B27DF61F200509231 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; 0AB1CA8C27DF61F200509231 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; 0AB1CA8D27DF61F200509231 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; - 0AB1CA8E27DF61F200509231 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */; }; + 0AB1CA8E27DF61F200509231 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; 0AB1CA8F27DF61F200509231 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 0AB1CA9027DF61F200509231 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */; }; + 0AB1CA9027DF61F200509231 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; 0AB1CA9127DF61F200509231 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; 0AB1CA9227DF61F200509231 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; 0AB1CA9327DF61F200509231 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; 0AB1CA9427DF61F200509231 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; - 0AB1CA9527DF621D00509231 /* Adjust.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; }; - 0AB1CA9627DF621D00509231 /* ADJLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; }; - 0AB1CA9727DF621D00509231 /* ADJEvent.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; }; - 0AB1CA9827DF621D00509231 /* ADJConfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; }; - 0AB1CA9927DF621D00509231 /* ADJSessionSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; }; - 0AB1CA9A27DF621D00509231 /* ADJSessionFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; }; - 0AB1CA9B27DF621D00509231 /* ADJEventSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; }; - 0AB1CA9C27DF621D00509231 /* ADJEventFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; }; - 0AB1CA9D27DF621D00509231 /* ADJSubscription.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */; }; - 0AB1CA9E27DF621D00509231 /* ADJThirdPartySharing.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; }; - 0AB1CA9F27DF621D00509231 /* ADJAdRevenue.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; }; - 0AB1CAA027DF621D00509231 /* ADJLinkResolution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; }; - 0AB1CAA127DF626000509231 /* ADJAttribution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; }; - 0AB1CADA27DF671300509231 /* AdjustSdkWebBridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0AB1CAD727DF671300509231 /* AdjustSdkWebBridge.h */; }; - 0AB1CB0927DF68C100509231 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; - 0AB1CB0A27DF68C100509231 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 0AB1CB0B27DF68C100509231 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */; }; 0AB1CB0C27DF68C100509231 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; 0AB1CB0D27DF68C100509231 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; 0AB1CB0E27DF68C100509231 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; @@ -206,93 +626,16 @@ 0AB1CB2227DF68C100509231 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */; }; 0AB1CB2327DF68C100509231 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; 0AB1CB2427DF68C100509231 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; - 0AB1CB2527DF68C100509231 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */; }; + 0AB1CB2527DF68C100509231 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; 0AB1CB2627DF68C100509231 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 0AB1CB2727DF68C100509231 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */; }; + 0AB1CB2727DF68C100509231 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; 0AB1CB2827DF68C100509231 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; 0AB1CB2927DF68C100509231 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; 0AB1CB2A27DF68C100509231 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; 0AB1CB2B27DF68C100509231 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; 0AB1CB2C27DF68DB00509231 /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5F61CD1770300A3B049 /* AdjustBridge.m */; }; - 0AB1CB2D27DF68DB00509231 /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 968595ED1D0B25970011CA2B /* AdjustBridgeRegister.m */; }; - 0AB1CB2E27DF68DB00509231 /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5E91CD1765E00A3B049 /* WebViewJavascriptBridge_JS.m */; }; - 0AB1CB2F27DF68DB00509231 /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5EB1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.m */; }; - 0AB1CB3027DF68DB00509231 /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5ED1CD1765E00A3B049 /* WKWebViewJavascriptBridge.m */; }; - 0AB1CB3127DF699E00509231 /* Adjust.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; }; - 0AB1CB3227DF699E00509231 /* ADJLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; }; - 0AB1CB3327DF699E00509231 /* ADJEvent.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; }; - 0AB1CB3427DF699E00509231 /* ADJAttribution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; }; - 0AB1CB3527DF699E00509231 /* ADJConfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; }; - 0AB1CB3627DF699E00509231 /* ADJSessionSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; }; - 0AB1CB3727DF699E00509231 /* ADJSessionFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; }; - 0AB1CB3827DF699E00509231 /* ADJEventSuccess.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; }; - 0AB1CB3927DF699E00509231 /* ADJEventFailure.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; }; - 0AB1CB3A27DF699E00509231 /* ADJSubscription.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */; }; - 0AB1CB3B27DF699E00509231 /* ADJThirdPartySharing.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; }; - 0AB1CB3C27DF699E00509231 /* ADJAdRevenue.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; }; - 0AB1CB3D27DF699E00509231 /* ADJLinkResolution.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; }; - 0AB1CB3E27DF69B700509231 /* AdjustBridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9648C5F51CD1770300A3B049 /* AdjustBridge.h */; }; - 0AB1CB3F27DF69B700509231 /* AdjustBridgeRegister.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 968595EC1D0B25970011CA2B /* AdjustBridgeRegister.h */; }; - 0AB1CB4027DF69B700509231 /* WebViewJavascriptBridge_JS.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9648C5E81CD1765E00A3B049 /* WebViewJavascriptBridge_JS.h */; }; - 0AB1CB4127DF69B700509231 /* WebViewJavascriptBridgeBase.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9648C5EA1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.h */; }; - 0AB1CB4227DF69B700509231 /* WKWebViewJavascriptBridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9648C5EC1CD1765E00A3B049 /* WKWebViewJavascriptBridge.h */; }; - 0ABE89C12A8E49500099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89BB2A8E49500099CCF5 /* ADJPurchaseVerificationHandler.m */; }; - 0ABE89C22A8E49500099CCF5 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89BC2A8E49500099CCF5 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89C32A8E49500099CCF5 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89BD2A8E49500099CCF5 /* ADJPurchaseVerificationResult.m */; }; - 0ABE89C42A8E49500099CCF5 /* ADJPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89BE2A8E49500099CCF5 /* ADJPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89C52A8E49500099CCF5 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89BF2A8E49500099CCF5 /* ADJPurchase.m */; }; - 0ABE89C62A8E49500099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89C02A8E49500099CCF5 /* ADJPurchaseVerificationHandler.h */; }; - 0ABE89CD2A8E49B50099CCF5 /* ADJPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89C72A8E49B50099CCF5 /* ADJPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89CE2A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89C82A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.m */; }; - 0ABE89CF2A8E49B50099CCF5 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89C92A8E49B50099CCF5 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89D02A8E49B50099CCF5 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89CA2A8E49B50099CCF5 /* ADJPurchase.m */; }; - 0ABE89D12A8E49B50099CCF5 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89CB2A8E49B50099CCF5 /* ADJPurchaseVerificationResult.m */; }; - 0ABE89D22A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89CC2A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.h */; }; - 0ABE89D92A8E49C20099CCF5 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89D32A8E49C20099CCF5 /* ADJPurchase.m */; }; - 0ABE89DA2A8E49C20099CCF5 /* ADJPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89D42A8E49C20099CCF5 /* ADJPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89DB2A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89D52A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.h */; }; - 0ABE89DC2A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89D62A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.m */; }; - 0ABE89DD2A8E49C20099CCF5 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89D72A8E49C20099CCF5 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89DE2A8E49C20099CCF5 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89D82A8E49C20099CCF5 /* ADJPurchaseVerificationResult.m */; }; - 0ABE89E52A8E49D40099CCF5 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89DF2A8E49D40099CCF5 /* ADJPurchaseVerificationResult.m */; }; - 0ABE89E62A8E49D40099CCF5 /* ADJPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89E02A8E49D40099CCF5 /* ADJPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89E72A8E49D40099CCF5 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89E12A8E49D40099CCF5 /* ADJPurchase.m */; }; - 0ABE89E82A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89E22A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.h */; }; - 0ABE89E92A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABE89E32A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.m */; }; - 0ABE89EA2A8E49D40099CCF5 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABE89E42A8E49D40099CCF5 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0ABE89EB2A8E4AA60099CCF5 /* ADJPurchase.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */; }; - 0ABE89EC2A8E4AA60099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; }; - 0ABE89ED2A8E4AB70099CCF5 /* ADJPurchase.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */; }; - 0ABE89EE2A8E4AB70099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; }; - 0ABE89EF2A8E4AF90099CCF5 /* ADJPurchase.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */; }; - 0ABE89F02A8E4AF90099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; }; - 0ABE89F12A8E4B060099CCF5 /* ADJPurchase.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */; }; - 0ABE89F22A8E4B060099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; }; - 6F84512425B1B1380004C7C0 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F84511025B1B1380004C7C0 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F84512525B1B1380004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84512325B1B1380004C7C0 /* ADJThirdPartySharing.m */; }; 6FAB784C2636DC0E00773869 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6FAB784D2636DC0E00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */; }; - 6FAB786B2636DC8400773869 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB78692636DC8400773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FAB786C2636DC8400773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB786A2636DC8400773869 /* ADJLinkResolution.m */; }; - 6FAB78782636DCB600773869 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB78762636DCB600773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FAB78792636DCB600773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78772636DCB600773869 /* ADJLinkResolution.m */; }; - 6FAB78852636DCCD00773869 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB78832636DCCD00773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FAB78862636DCCD00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78842636DCCD00773869 /* ADJLinkResolution.m */; }; - 6FAB78922636DCE700773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78902636DCE700773869 /* ADJLinkResolution.m */; }; - 6FAB78932636DCE700773869 /* ADJLinkResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAB78912636DCE700773869 /* ADJLinkResolution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FBE0C6E2577CDAC00EC2CE0 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBE0C6C2577CDAC00EC2CE0 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FBE0C6F2577CDAC00EC2CE0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBE0C6D2577CDAC00EC2CE0 /* ADJThirdPartySharing.m */; }; - 6FBEE92624E422EB00FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE92424E422EB00FEF3F1 /* ADJUrlStrategy.m */; }; - 6FBEE92724E422EB00FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE92424E422EB00FEF3F1 /* ADJUrlStrategy.m */; }; - 6FBEE92824E422EB00FEF3F1 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE92524E422EB00FEF3F1 /* ADJUrlStrategy.h */; }; - 6FBEE92924E422EB00FEF3F1 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE92524E422EB00FEF3F1 /* ADJUrlStrategy.h */; }; - 6FBEE92C24E4230800FEF3F1 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE92A24E4230700FEF3F1 /* ADJUrlStrategy.h */; }; - 6FBEE92D24E4230800FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE92B24E4230700FEF3F1 /* ADJUrlStrategy.m */; }; - 6FBEE93024E4231400FEF3F1 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE92E24E4231300FEF3F1 /* ADJUrlStrategy.h */; }; - 6FBEE93124E4231400FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE92F24E4231300FEF3F1 /* ADJUrlStrategy.m */; }; - 6FBEE93424E4232800FEF3F1 /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE93224E4232800FEF3F1 /* ADJUrlStrategy.h */; }; - 6FBEE93524E4232800FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE93324E4232800FEF3F1 /* ADJUrlStrategy.m */; }; - 9601C1A31A31DE0D00A9AE21 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9601C1A11A31DE0300A9AE21 /* SystemConfiguration.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 9601CAE41C74B70600670879 /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE21C74B70600670879 /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9601CAE51C74B70600670879 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9601CAE31C74B70600670879 /* ADJEventSuccess.m */; }; 9601CAE81C74BAAE00670879 /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -302,21 +645,12 @@ 9615159F1CD2CB360022D336 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9679920D18BBAE2800394606 /* libAdjust.a */; }; 961515A01CD2CB450022D336 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DE7C8FC1AE688DA001556E5 /* UIKit.framework */; }; 961515A21CD2CB4F0022D336 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 961515A11CD2CB4F0022D336 /* WebKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 961515A41CD2CBA20022D336 /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5E91CD1765E00A3B049 /* WebViewJavascriptBridge_JS.m */; }; - 961515A51CD2CBA80022D336 /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5EB1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.m */; }; - 961515A61CD2CBAC0022D336 /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5ED1CD1765E00A3B049 /* WKWebViewJavascriptBridge.m */; }; 961515A71CD2CBB00022D336 /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9648C5F61CD1770300A3B049 /* AdjustBridge.m */; }; 96164D721CC8FA73009431AB /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; 96164D731CC8FA73009431AB /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */; }; - 96164D841CCA4D10009431AB /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */; }; - 96164D861CCA4D27009431AB /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; - 96325E8A190E892600A97911 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96325E84190E5CD900A97911 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 96325E8C190E8D6B00A97911 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96325E84190E5CD900A97911 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 965B7F301CC78F6600098639 /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */; }; 965B7F311CC78F6600098639 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */; }; 9679921118BBAE2800394606 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9679921018BBAE2800394606 /* Foundation.framework */; }; - 9679922018BBAE2800394606 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9679921018BBAE2800394606 /* Foundation.framework */; }; - 9679922518BBAE2800394606 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9679920D18BBAE2800394606 /* libAdjust.a */; }; 968173831C3C2D07002AE1DE /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; 968173841C3C2D07002AE1DE /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */; }; 968173871C3C2D36002AE1DE /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -325,21 +659,14 @@ 96854A5A1B1F2779002B2874 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A581B1F2779002B2874 /* ADJTimerOnce.m */; }; 96854A5F1B1F278C002B2874 /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */; }; 96854A601B1F278C002B2874 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */; }; - 968595EE1D0B25970011CA2B /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 968595ED1D0B25970011CA2B /* AdjustBridgeRegister.m */; }; 969952CF1A012F5300928462 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952CE1A012F5300928462 /* ADJAttributionHandler.m */; }; 969952D21A01309200928462 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 969952D11A01309200928462 /* ADJAttribution.m */; }; - 96B671101D788EEC0090A023 /* ADJSessionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJSessionParameters.h */; }; - 96B671111D788EEC0090A023 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */; }; - 96B671141D788F4A0090A023 /* ADJSessionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B671121D788F4A0090A023 /* ADJSessionParameters.h */; }; - 96B671151D788F4A0090A023 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B671131D788F4A0090A023 /* ADJSessionParameters.m */; }; - 96B671181D788F7A0090A023 /* ADJSessionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B671161D788F7A0090A023 /* ADJSessionParameters.h */; }; - 96B671191D788F7A0090A023 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B671171D788F7A0090A023 /* ADJSessionParameters.m */; }; + 96B671101D788EEC0090A023 /* ADJGlobalParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */; }; + 96B671111D788EEC0090A023 /* ADJGlobalParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */; }; 96BCFBCD1AC99231005A65C5 /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E34C18BBB48A008E7B30 /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96BCFBCE1AC99235005A65C5 /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9609BC6819EEA55800E02303 /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96BCFBD01AC9923F005A65C5 /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 960A8BB71A029A8000F2BB95 /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; 96BCFBD11AC99246005A65C5 /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952D01A01309200928462 /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96BCFBD21AC99332005A65C5 /* NSString+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 96CD2BDC1A13BFC600A40AFB /* NSString+ADJAdditions.h */; }; - 96BCFBD41AC99338005A65C5 /* NSData+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 96C93DF31AC47F2E00B53F56 /* NSData+ADJAdditions.h */; }; 96BCFBD51AC9933E005A65C5 /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */; }; 96BCFBD61AC99345005A65C5 /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */; }; 96BCFBD71AC99348005A65C5 /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */; }; @@ -350,10 +677,6 @@ 96BCFBDC1AC99360005A65C5 /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */; }; 96BCFBDE1AC99365005A65C5 /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */; }; 96BCFBE01AC9936C005A65C5 /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 969952CD1A012F5300928462 /* ADJAttributionHandler.h */; }; - 96C0EFE01A3EF47A00B39F31 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; - 96C93DF51AC47F2E00B53F56 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 96C93DF61AC47FE000B53F56 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */; }; - 96CD2BE01A13BFC600A40AFB /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */; }; 96E5E38118BBB48A008E7B30 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E34D18BBB48A008E7B30 /* Adjust.m */; }; 96E5E38B18BBB48A008E7B30 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */; }; 96E5E38C18BBB48A008E7B30 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */; }; @@ -367,114 +690,25 @@ 96E5E39918BBB48A008E7B30 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E38018BBB48A008E7B30 /* ADJUtil.m */; }; 96FCC53A1C186426007BBFE1 /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 96FCC5361C186426007BBFE1 /* ADJResponseData.h */; }; 96FCC53B1C186426007BBFE1 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FCC5371C186426007BBFE1 /* ADJResponseData.m */; }; - 9D0E2E06210B570600133B4F /* AdjustSdkWebBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E04210B570600133B4F /* AdjustSdkWebBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E6B210B575600133B4F /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E17210B575600133B4F /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E6D210B575600133B4F /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E19210B575600133B4F /* ADJTimerOnce.m */; }; - 9D0E2E6E210B575600133B4F /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E1A210B575600133B4F /* ADJAttributionHandler.m */; }; - 9D0E2E6F210B575600133B4F /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E1B210B575600133B4F /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E70210B575600133B4F /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E1C210B575600133B4F /* ADJActivityPackage.h */; }; - 9D0E2E71210B575600133B4F /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E1D210B575600133B4F /* ADJRequestHandler.m */; }; - 9D0E2E73210B575600133B4F /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E1F210B575600133B4F /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E75210B575600133B4F /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E21210B575600133B4F /* ADJSdkClickHandler.m */; }; - 9D0E2E76210B575600133B4F /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E22210B575600133B4F /* ADJActivityKind.h */; }; - 9D0E2E77210B575600133B4F /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E23210B575600133B4F /* ADJEvent.m */; }; - 9D0E2E78210B575600133B4F /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E24210B575600133B4F /* ADJPackageHandler.h */; }; - 9D0E2E79210B575600133B4F /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E25210B575600133B4F /* ADJPackageBuilder.h */; }; - 9D0E2E7A210B575600133B4F /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E26210B575600133B4F /* ADJResponseData.h */; }; - 9D0E2E7B210B575600133B4F /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E27210B575600133B4F /* ADJSessionSuccess.m */; }; - 9D0E2E7C210B575600133B4F /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E28210B575600133B4F /* ADJEventFailure.m */; }; - 9D0E2E7D210B575600133B4F /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E29210B575600133B4F /* ADJAdjustFactory.h */; }; - 9D0E2E7E210B575600133B4F /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E2A210B575600133B4F /* ADJEventSuccess.m */; }; - 9D0E2E7F210B575600133B4F /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E2B210B575600133B4F /* ADJActivityState.m */; }; - 9D0E2E80210B575600133B4F /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E2C210B575600133B4F /* ADJSessionFailure.m */; }; - 9D0E2E81210B575600133B4F /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E2D210B575600133B4F /* ADJUtil.h */; }; - 9D0E2E83210B575600133B4F /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E2F210B575600133B4F /* ADJActivityHandler.h */; }; - 9D0E2E84210B575600133B4F /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E30210B575600133B4F /* ADJTimerCycle.m */; }; - 9D0E2E85210B575600133B4F /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E31210B575600133B4F /* ADJSessionParameters.m */; }; - 9D0E2E86210B575600133B4F /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E32210B575600133B4F /* ADJLogger.m */; }; - 9D0E2E87210B575600133B4F /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E33210B575600133B4F /* ADJBackoffStrategy.m */; }; - 9D0E2E88210B575600133B4F /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E34210B575600133B4F /* ADJUserDefaults.h */; }; - 9D0E2E89210B575600133B4F /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E35210B575600133B4F /* Adjust.m */; }; - 9D0E2E8A210B575600133B4F /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E36210B575600133B4F /* ADJAttributionHandler.h */; }; - 9D0E2E8B210B575600133B4F /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E37210B575600133B4F /* ADJTimerOnce.h */; }; - 9D0E2E8D210B575600133B4F /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E39210B575600133B4F /* ADJConfig.m */; }; - 9D0E2E8E210B575600133B4F /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E3A210B575600133B4F /* ADJPackageHandler.m */; }; - 9D0E2E8F210B575600133B4F /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E3B210B575600133B4F /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E90210B575600133B4F /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E3C210B575600133B4F /* ADJSdkClickHandler.h */; }; - 9D0E2E91210B575600133B4F /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E3D210B575600133B4F /* ADJActivityKind.m */; }; - 9D0E2E93210B575600133B4F /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E40210B575600133B4F /* NSString+ADJAdditions.m */; }; - 9D0E2E95210B575600133B4F /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E42210B575600133B4F /* NSData+ADJAdditions.m */; }; - 9D0E2E96210B575600133B4F /* NSData+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E43210B575600133B4F /* NSData+ADJAdditions.h */; }; - 9D0E2E98210B575600133B4F /* NSString+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E45210B575600133B4F /* NSString+ADJAdditions.h */; }; - 9D0E2E99210B575600133B4F /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E46210B575600133B4F /* ADJAttribution.m */; }; - 9D0E2E9B210B575600133B4F /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E48210B575600133B4F /* ADJRequestHandler.h */; }; - 9D0E2E9C210B575600133B4F /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E49210B575600133B4F /* ADJActivityPackage.m */; }; - 9D0E2E9D210B575600133B4F /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E4A210B575600133B4F /* ADJUtil.m */; }; - 9D0E2E9E210B575600133B4F /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E4B210B575600133B4F /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2E9F210B575600133B4F /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E4C210B575600133B4F /* ADJActivityState.h */; }; - 9D0E2EA0210B575600133B4F /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E4D210B575600133B4F /* ADJAdjustFactory.m */; }; - 9D0E2EA1210B575600133B4F /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E4E210B575600133B4F /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EA2210B575600133B4F /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E4F210B575600133B4F /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EA3210B575600133B4F /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E50210B575600133B4F /* ADJResponseData.m */; }; - 9D0E2EA4210B575600133B4F /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E51210B575600133B4F /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EA5210B575600133B4F /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E52210B575600133B4F /* ADJPackageBuilder.m */; }; - 9D0E2EA6210B575600133B4F /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E53210B575600133B4F /* ADJUserDefaults.m */; }; - 9D0E2EA7210B575600133B4F /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E54210B575600133B4F /* ADJBackoffStrategy.h */; }; - 9D0E2EA8210B575600133B4F /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E55210B575600133B4F /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EA9210B575600133B4F /* ADJSessionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E56210B575600133B4F /* ADJSessionParameters.h */; }; - 9D0E2EAB210B575600133B4F /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E58210B575600133B4F /* ADJTimerCycle.h */; }; - 9D0E2EAC210B575600133B4F /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E59210B575600133B4F /* ADJActivityHandler.m */; }; - 9D0E2EAE210B575600133B4F /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E5C210B575600133B4F /* AdjustBridge.m */; }; - 9D0E2EAF210B575600133B4F /* AdjustBridgeRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E5D210B575600133B4F /* AdjustBridgeRegister.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EB0210B575600133B4F /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E5F210B575600133B4F /* WebViewJavascriptBridgeBase.m */; }; - 9D0E2EB2210B575600133B4F /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E61210B575600133B4F /* WKWebViewJavascriptBridge.m */; }; - 9D0E2EB4210B575600133B4F /* WebViewJavascriptBridge_JS.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E63210B575600133B4F /* WebViewJavascriptBridge_JS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EB5210B575600133B4F /* WebViewJavascriptBridgeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E64210B575600133B4F /* WebViewJavascriptBridgeBase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EB7210B575600133B4F /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E66210B575600133B4F /* WebViewJavascriptBridge_JS.m */; }; - 9D0E2EB9210B575600133B4F /* WKWebViewJavascriptBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E68210B575600133B4F /* WKWebViewJavascriptBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EBA210B575600133B4F /* AdjustBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0E2E69210B575600133B4F /* AdjustBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D0E2EBB210B575600133B4F /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0E2E6A210B575600133B4F /* AdjustBridgeRegister.m */; }; - 9D2F23E22447CE5C00B7CA90 /* ADJSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D2F23E32447CE5C00B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */; }; - 9D2F23F82447DCE800B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23F62447DCE800B7CA90 /* ADJSubscription.m */; }; - 9D2F23F92447DCE800B7CA90 /* ADJSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23F72447DCE800B7CA90 /* ADJSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D2F23FC2447DD2500B7CA90 /* ADJSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23FA2447DD2500B7CA90 /* ADJSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D2F23FD2447DD2500B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23FB2447DD2500B7CA90 /* ADJSubscription.m */; }; - 9D2F24002447DD3700B7CA90 /* ADJSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23FE2447DD3600B7CA90 /* ADJSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D2F24012447DD3700B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23FF2447DD3700B7CA90 /* ADJSubscription.m */; }; - 9D2F24042447DD6000B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F24022447DD6000B7CA90 /* ADJSubscription.m */; }; - 9D2F24052447DD6000B7CA90 /* ADJSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F24032447DD6000B7CA90 /* ADJSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D2F23E22447CE5C00B7CA90 /* ADJAppStoreSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D2F23E32447CE5C00B7CA90 /* ADJAppStoreSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */; }; 9D363AC31BDA50FA00B47FE9 /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E5E37318BBB48A008E7B30 /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9D3A2ABE2625BEB800BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */; }; 9D3A2ABF2625BEB800BD6E44 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D3A2AC52626501D00BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AC32626501D00BD6E44 /* ADJAdRevenue.m */; }; - 9D3A2AC62626501D00BD6E44 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2AC42626501D00BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D3A2AC92626505800BD6E44 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2AC72626505800BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D3A2ACA2626505800BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AC82626505800BD6E44 /* ADJAdRevenue.m */; }; - 9D3A2ACD2626508F00BD6E44 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ACB2626508F00BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D3A2ACE2626508F00BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2ACC2626508F00BD6E44 /* ADJAdRevenue.m */; }; - 9D3A2AD1262650C300BD6E44 /* ADJAdRevenue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3A2ACF262650C300BD6E44 /* ADJAdRevenue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D3A2AD2262650C300BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AD0262650C300BD6E44 /* ADJAdRevenue.m */; }; - 9D49D15E290FEBA200042345 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D49D14A290FEBA200042345 /* ADJSKAdNetwork.h */; }; - 9D49D15F290FEBA200042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D15D290FEBA200042345 /* ADJSKAdNetwork.m */; }; - 9D49D162290FEBB200042345 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D49D160290FEBB200042345 /* ADJSKAdNetwork.h */; }; - 9D49D163290FEBB200042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D161290FEBB200042345 /* ADJSKAdNetwork.m */; }; - 9D49D166290FEBC000042345 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D49D164290FEBC000042345 /* ADJSKAdNetwork.h */; }; - 9D49D167290FEBC000042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D165290FEBC000042345 /* ADJSKAdNetwork.m */; }; - 9D49D16A290FEBD100042345 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D49D168290FEBD100042345 /* ADJSKAdNetwork.h */; }; - 9D49D16B290FEBD100042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D169290FEBD100042345 /* ADJSKAdNetwork.m */; }; + 9D4CC6D52C0735B400A1E0C0 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 9D4CC6E82C0735BC00A1E0C0 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 9D4CC6E92C0735C400A1E0C0 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 9D4CC6EA2C0735CB00A1E0C0 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; + 9D52A3212C071BBC00E0AA55 /* ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */; }; + 9D52A3222C071BBC00E0AA55 /* ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */; }; 9D651BF525B25A64006D69D6 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */; }; 9D651BF625B25A64006D69D6 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D651C8825B26DF5006D69D6 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651C8625B26DF4006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D651C8925B26DF5006D69D6 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651C8725B26DF5006D69D6 /* ADJThirdPartySharing.m */; }; - 9D651C9525B26E1B006D69D6 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D651C9325B26E1B006D69D6 /* ADJThirdPartySharing.m */; }; - 9D651C9625B26E1B006D69D6 /* ADJThirdPartySharing.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D651C9425B26E1B006D69D6 /* ADJThirdPartySharing.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D775B3E2A1F4B19009D0BE8 /* ADJPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D775B3F2A1F4B19009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */; }; - 9D775B522A1F4B3C009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */; }; - 9D775B532A1F4B3D009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */; }; - 9D775B542A1F4B3D009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */; }; - 9D775B552A1F4B3E009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */; }; + 9D775B3E2A1F4B19009D0BE8 /* ADJAppStorePurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D775B3F2A1F4B19009D0BE8 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 9D775B522A1F4B3C009D0BE8 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 9D775B532A1F4B3D009D0BE8 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 9D775B542A1F4B3D009D0BE8 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; + 9D775B552A1F4B3E009D0BE8 /* ADJAppStorePurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */; }; 9D775B592A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9D775B5A2A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; 9D775B5B2A1F7C8B009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */; }; @@ -487,196 +721,33 @@ 9D775B642A1F9CCE009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; 9D775B652A1F9CCF009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; 9D775B662A1F9CD0009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; - 9DB457B01D743704004D69E8 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8DF1D6F3CA5008E362F /* ADJBackoffStrategy.m */; }; - 9DB457B11D743704004D69E8 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F71D6F3CA5008E362F /* ADJSdkClickHandler.m */; }; + 9D7D3DEC2C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DED2C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DEE2C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DEF2C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF02C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF12C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DF22C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DF32C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF42C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DF52C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF62C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DF72C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF82C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DF92C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DFA2C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DFB2C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9D7D3DFC2C49A8B200FACB18 /* ADJDeeplink.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D7D3DFD2C49A8B200FACB18 /* ADJDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */; }; + 9DB561852C072BA10004CCAD /* ADJUrlStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */; }; + 9DB561862C072BAF0004CCAD /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */; }; 9DD0E9AE1F44690B00B2A759 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; 9DD0E9AF1F44690B00B2A759 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 9DDF243B1F7BE4A4001C1A70 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 9DDF24431F7BE4BA001C1A70 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; - 9DDF24441F7BE4DF001C1A70 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */; }; - 9DDF24451F7BE4E7001C1A70 /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */; }; - 9DE354D62100726300D211C9 /* AdjustSdkIm.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DE354D42100726300D211C9 /* AdjustSdkIm.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9DE7C8FD1AE688DA001556E5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DE7C8FC1AE688DA001556E5 /* UIKit.framework */; }; - 9DEAF0F5210072BC005CAEDB /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0B1210072BC005CAEDB /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF0F7210072BC005CAEDB /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0B3210072BC005CAEDB /* ADJTimerOnce.m */; }; - 9DEAF0F8210072BC005CAEDB /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0B4210072BC005CAEDB /* ADJAttributionHandler.m */; }; - 9DEAF0F9210072BC005CAEDB /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0B5210072BC005CAEDB /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF0FA210072BC005CAEDB /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0B6210072BC005CAEDB /* ADJActivityPackage.h */; }; - 9DEAF0FB210072BC005CAEDB /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0B7210072BC005CAEDB /* ADJRequestHandler.m */; }; - 9DEAF0FD210072BC005CAEDB /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0B9210072BC005CAEDB /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF0FF210072BC005CAEDB /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0BB210072BC005CAEDB /* ADJSdkClickHandler.m */; }; - 9DEAF100210072BC005CAEDB /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0BC210072BC005CAEDB /* ADJActivityKind.h */; }; - 9DEAF101210072BC005CAEDB /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0BD210072BC005CAEDB /* ADJEvent.m */; }; - 9DEAF102210072BC005CAEDB /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0BE210072BC005CAEDB /* ADJPackageHandler.h */; }; - 9DEAF103210072BC005CAEDB /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0BF210072BC005CAEDB /* ADJPackageBuilder.h */; }; - 9DEAF104210072BC005CAEDB /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0C0210072BC005CAEDB /* ADJResponseData.h */; }; - 9DEAF105210072BC005CAEDB /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0C1210072BC005CAEDB /* ADJSessionSuccess.m */; }; - 9DEAF106210072BC005CAEDB /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0C2210072BC005CAEDB /* ADJEventFailure.m */; }; - 9DEAF107210072BC005CAEDB /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0C3210072BC005CAEDB /* ADJAdjustFactory.h */; }; - 9DEAF108210072BC005CAEDB /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0C4210072BC005CAEDB /* ADJEventSuccess.m */; }; - 9DEAF109210072BC005CAEDB /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0C5210072BC005CAEDB /* ADJActivityState.m */; }; - 9DEAF10A210072BC005CAEDB /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0C6210072BC005CAEDB /* ADJSessionFailure.m */; }; - 9DEAF10B210072BC005CAEDB /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0C7210072BC005CAEDB /* ADJUtil.h */; }; - 9DEAF10D210072BC005CAEDB /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0C9210072BC005CAEDB /* ADJActivityHandler.h */; }; - 9DEAF10E210072BC005CAEDB /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0CA210072BC005CAEDB /* ADJTimerCycle.m */; }; - 9DEAF10F210072BC005CAEDB /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0CB210072BC005CAEDB /* ADJSessionParameters.m */; }; - 9DEAF110210072BC005CAEDB /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0CC210072BC005CAEDB /* ADJLogger.m */; }; - 9DEAF111210072BC005CAEDB /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0CD210072BC005CAEDB /* ADJBackoffStrategy.m */; }; - 9DEAF112210072BC005CAEDB /* ADJUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0CE210072BC005CAEDB /* ADJUserDefaults.h */; }; - 9DEAF113210072BC005CAEDB /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0CF210072BC005CAEDB /* Adjust.m */; }; - 9DEAF114210072BC005CAEDB /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0D0210072BC005CAEDB /* ADJAttributionHandler.h */; }; - 9DEAF115210072BC005CAEDB /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0D1210072BC005CAEDB /* ADJTimerOnce.h */; }; - 9DEAF117210072BC005CAEDB /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0D3210072BC005CAEDB /* ADJConfig.m */; }; - 9DEAF118210072BC005CAEDB /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0D4210072BC005CAEDB /* ADJPackageHandler.m */; }; - 9DEAF119210072BC005CAEDB /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0D5210072BC005CAEDB /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF11A210072BC005CAEDB /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0D6210072BC005CAEDB /* ADJSdkClickHandler.h */; }; - 9DEAF11B210072BC005CAEDB /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0D7210072BC005CAEDB /* ADJActivityKind.m */; }; - 9DEAF11D210072BC005CAEDB /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0DA210072BC005CAEDB /* NSString+ADJAdditions.m */; }; - 9DEAF11F210072BC005CAEDB /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0DC210072BC005CAEDB /* NSData+ADJAdditions.m */; }; - 9DEAF120210072BC005CAEDB /* NSData+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0DD210072BC005CAEDB /* NSData+ADJAdditions.h */; }; - 9DEAF122210072BC005CAEDB /* NSString+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0DF210072BC005CAEDB /* NSString+ADJAdditions.h */; }; - 9DEAF123210072BC005CAEDB /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0E0210072BC005CAEDB /* ADJAttribution.m */; }; - 9DEAF125210072BC005CAEDB /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0E2210072BC005CAEDB /* ADJRequestHandler.h */; }; - 9DEAF126210072BC005CAEDB /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0E3210072BC005CAEDB /* ADJActivityPackage.m */; }; - 9DEAF127210072BC005CAEDB /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0E4210072BC005CAEDB /* ADJUtil.m */; }; - 9DEAF128210072BC005CAEDB /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0E5210072BC005CAEDB /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF129210072BC005CAEDB /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0E6210072BC005CAEDB /* ADJActivityState.h */; }; - 9DEAF12A210072BC005CAEDB /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0E7210072BC005CAEDB /* ADJAdjustFactory.m */; }; - 9DEAF12B210072BC005CAEDB /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0E8210072BC005CAEDB /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF12C210072BC005CAEDB /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0E9210072BC005CAEDB /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF12D210072BC005CAEDB /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0EA210072BC005CAEDB /* ADJResponseData.m */; }; - 9DEAF12E210072BC005CAEDB /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0EB210072BC005CAEDB /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF12F210072BC005CAEDB /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0EC210072BC005CAEDB /* ADJPackageBuilder.m */; }; - 9DEAF130210072BC005CAEDB /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0ED210072BC005CAEDB /* ADJUserDefaults.m */; }; - 9DEAF131210072BC005CAEDB /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0EE210072BC005CAEDB /* ADJBackoffStrategy.h */; }; - 9DEAF132210072BC005CAEDB /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0EF210072BC005CAEDB /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DEAF133210072BC005CAEDB /* ADJSessionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0F0210072BC005CAEDB /* ADJSessionParameters.h */; }; - 9DEAF135210072BC005CAEDB /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DEAF0F2210072BC005CAEDB /* ADJTimerCycle.h */; }; - 9DEAF136210072BC005CAEDB /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DEAF0F3210072BC005CAEDB /* ADJActivityHandler.m */; }; 9DF212D42909E86A0056D579 /* ADJSKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */; }; 9DF212D52909E86A0056D579 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */; }; - 9DF381BC260E990B0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF381BD260E990B0033F5A1 /* NSNumber+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF381BB260E990B0033F5A1 /* NSNumber+ADJAdditions.h */; }; - 9DF381F5260E9AF50033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF381F3260E9AF50033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF381F6260E9AF50033F5A1 /* NSNumber+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF381F4260E9AF50033F5A1 /* NSNumber+ADJAdditions.h */; }; - 9DF38202260E9B0A0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF38200260E9B0A0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF38203260E9B0A0033F5A1 /* NSNumber+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF38201260E9B0A0033F5A1 /* NSNumber+ADJAdditions.h */; }; - 9DF3820F260E9B740033F5A1 /* NSNumber+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3820D260E9B740033F5A1 /* NSNumber+ADJAdditions.h */; }; - 9DF38210260E9B740033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF3820E260E9B740033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF3821C260E9B8D0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF3821A260E9B8D0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF3821D260E9B8D0033F5A1 /* NSNumber+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF3821B260E9B8D0033F5A1 /* NSNumber+ADJAdditions.h */; }; 9DF92D832630ED02000FC3FC /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */; }; 9DF92D842630ED02000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */; }; - 9DF92D872630ED3D000FC3FC /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D852630ED3D000FC3FC /* ADJPackageParams.h */; }; - 9DF92D882630ED3D000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D862630ED3D000FC3FC /* ADJPackageParams.m */; }; - 9DF92D8B2630ED59000FC3FC /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D892630ED59000FC3FC /* ADJPackageParams.h */; }; - 9DF92D8C2630ED59000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D8A2630ED59000FC3FC /* ADJPackageParams.m */; }; - 9DF92D8F2630ED7B000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D8D2630ED7B000FC3FC /* ADJPackageParams.m */; }; - 9DF92D902630ED7B000FC3FC /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF92D8E2630ED7B000FC3FC /* ADJPackageParams.h */; }; - 9DF9C9091D6F3CA5008E362F /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8C91D6F3CA5008E362F /* ADJActivityHandler.h */; }; - 9DF9C90A1D6F3CA5008E362F /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8CA1D6F3CA5008E362F /* ADJActivityHandler.m */; }; - 9DF9C90B1D6F3CA5008E362F /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8CB1D6F3CA5008E362F /* ADJActivityKind.h */; }; - 9DF9C90C1D6F3CA5008E362F /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8CC1D6F3CA5008E362F /* ADJActivityKind.m */; }; - 9DF9C90D1D6F3CA5008E362F /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8CD1D6F3CA5008E362F /* ADJActivityPackage.h */; }; - 9DF9C90E1D6F3CA5008E362F /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8CE1D6F3CA5008E362F /* ADJActivityPackage.m */; }; - 9DF9C90F1D6F3CA5008E362F /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8CF1D6F3CA5008E362F /* ADJActivityState.h */; }; - 9DF9C9101D6F3CA5008E362F /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8D01D6F3CA5008E362F /* ADJActivityState.m */; }; - 9DF9C9111D6F3CA5008E362F /* NSData+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8D21D6F3CA5008E362F /* NSData+ADJAdditions.h */; }; - 9DF9C9121D6F3CA5008E362F /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8D31D6F3CA5008E362F /* NSData+ADJAdditions.m */; }; - 9DF9C9131D6F3CA5008E362F /* NSString+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8D41D6F3CA5008E362F /* NSString+ADJAdditions.h */; }; - 9DF9C9141D6F3CA5008E362F /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8D51D6F3CA5008E362F /* NSString+ADJAdditions.m */; }; - 9DF9C9171D6F3CA5008E362F /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8D81D6F3CA5008E362F /* ADJAdjustFactory.h */; }; - 9DF9C9181D6F3CA5008E362F /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8D91D6F3CA5008E362F /* ADJAdjustFactory.m */; }; - 9DF9C9191D6F3CA5008E362F /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8DA1D6F3CA5008E362F /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C91A1D6F3CA5008E362F /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8DB1D6F3CA5008E362F /* ADJAttribution.m */; }; - 9DF9C91B1D6F3CA5008E362F /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8DC1D6F3CA5008E362F /* ADJAttributionHandler.h */; }; - 9DF9C91C1D6F3CA5008E362F /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8DD1D6F3CA5008E362F /* ADJAttributionHandler.m */; }; - 9DF9C91F1D6F3CA5008E362F /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8E01D6F3CA5008E362F /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9201D6F3CA5008E362F /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8E11D6F3CA5008E362F /* ADJConfig.m */; }; - 9DF9C9231D6F3CA5008E362F /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8E41D6F3CA5008E362F /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9241D6F3CA5008E362F /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8E51D6F3CA5008E362F /* ADJEvent.m */; }; - 9DF9C9251D6F3CA5008E362F /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8E61D6F3CA5008E362F /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9261D6F3CA5008E362F /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8E71D6F3CA5008E362F /* ADJEventFailure.m */; }; - 9DF9C9271D6F3CA5008E362F /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8E81D6F3CA5008E362F /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9281D6F3CA5008E362F /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8E91D6F3CA5008E362F /* ADJEventSuccess.m */; }; - 9DF9C92B1D6F3CA5008E362F /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8EC1D6F3CA5008E362F /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C92C1D6F3CA5008E362F /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8ED1D6F3CA5008E362F /* ADJLogger.m */; }; - 9DF9C92D1D6F3CA5008E362F /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8EE1D6F3CA5008E362F /* ADJPackageBuilder.h */; }; - 9DF9C92E1D6F3CA5008E362F /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8EF1D6F3CA5008E362F /* ADJPackageBuilder.m */; }; - 9DF9C92F1D6F3CA5008E362F /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8F01D6F3CA5008E362F /* ADJPackageHandler.h */; }; - 9DF9C9301D6F3CA5008E362F /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F11D6F3CA5008E362F /* ADJPackageHandler.m */; }; - 9DF9C9311D6F3CA5008E362F /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8F21D6F3CA5008E362F /* ADJRequestHandler.h */; }; - 9DF9C9321D6F3CA5008E362F /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F31D6F3CA5008E362F /* ADJRequestHandler.m */; }; - 9DF9C9331D6F3CA5008E362F /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8F41D6F3CA5008E362F /* ADJResponseData.h */; }; - 9DF9C9341D6F3CA5008E362F /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F51D6F3CA5008E362F /* ADJResponseData.m */; }; - 9DF9C9371D6F3CA5008E362F /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8F81D6F3CA5008E362F /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9381D6F3CA5008E362F /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8F91D6F3CA5008E362F /* ADJSessionFailure.m */; }; - 9DF9C9391D6F3CA5008E362F /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8FA1D6F3CA5008E362F /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C93A1D6F3CA5008E362F /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8FB1D6F3CA5008E362F /* ADJSessionSuccess.m */; }; - 9DF9C93D1D6F3CA5008E362F /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C8FE1D6F3CA5008E362F /* ADJTimerCycle.h */; }; - 9DF9C93E1D6F3CA5008E362F /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C8FF1D6F3CA5008E362F /* ADJTimerCycle.m */; }; - 9DF9C93F1D6F3CA5008E362F /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C9001D6F3CA5008E362F /* ADJTimerOnce.h */; }; - 9DF9C9401D6F3CA5008E362F /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C9011D6F3CA5008E362F /* ADJTimerOnce.m */; }; - 9DF9C9431D6F3CA5008E362F /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C9041D6F3CA5008E362F /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DF9C9441D6F3CA5008E362F /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C9051D6F3CA5008E362F /* Adjust.m */; }; - 9DF9C9451D6F3CA5008E362F /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DF9C9061D6F3CA5008E362F /* ADJUtil.h */; }; - 9DF9C9461D6F3CA5008E362F /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF9C9071D6F3CA5008E362F /* ADJUtil.m */; }; - 9DFA37B71C0F21D600782607 /* AdjustSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFA37B51C0F21D600782607 /* AdjustSdk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06131D747070006D48FC /* AdjustSdkTv.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06121D747070006D48FC /* AdjustSdkTv.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB065A1D7470C0006D48FC /* ADJActivityHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB061A1D7470C0006D48FC /* ADJActivityHandler.h */; }; - 9DFB065B1D7470C0006D48FC /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB061B1D7470C0006D48FC /* ADJActivityHandler.m */; }; - 9DFB065C1D7470C0006D48FC /* ADJActivityKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB061C1D7470C0006D48FC /* ADJActivityKind.h */; }; - 9DFB065D1D7470C0006D48FC /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB061D1D7470C0006D48FC /* ADJActivityKind.m */; }; - 9DFB065E1D7470C0006D48FC /* ADJActivityPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB061E1D7470C0006D48FC /* ADJActivityPackage.h */; }; - 9DFB065F1D7470C0006D48FC /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB061F1D7470C0006D48FC /* ADJActivityPackage.m */; }; - 9DFB06601D7470C0006D48FC /* ADJActivityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06201D7470C0006D48FC /* ADJActivityState.h */; }; - 9DFB06611D7470C0006D48FC /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06211D7470C0006D48FC /* ADJActivityState.m */; }; - 9DFB06621D7470C0006D48FC /* NSData+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06231D7470C0006D48FC /* NSData+ADJAdditions.h */; }; - 9DFB06631D7470C0006D48FC /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06241D7470C0006D48FC /* NSData+ADJAdditions.m */; }; - 9DFB06641D7470C0006D48FC /* NSString+ADJAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06251D7470C0006D48FC /* NSString+ADJAdditions.h */; }; - 9DFB06651D7470C0006D48FC /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06261D7470C0006D48FC /* NSString+ADJAdditions.m */; }; - 9DFB06681D7470C0006D48FC /* ADJAdjustFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06291D7470C0006D48FC /* ADJAdjustFactory.h */; }; - 9DFB06691D7470C0006D48FC /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB062A1D7470C0006D48FC /* ADJAdjustFactory.m */; }; - 9DFB066A1D7470C0006D48FC /* ADJAttribution.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB062B1D7470C0006D48FC /* ADJAttribution.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB066B1D7470C0006D48FC /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB062C1D7470C0006D48FC /* ADJAttribution.m */; }; - 9DFB066C1D7470C0006D48FC /* ADJAttributionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB062D1D7470C0006D48FC /* ADJAttributionHandler.h */; }; - 9DFB066D1D7470C0006D48FC /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB062E1D7470C0006D48FC /* ADJAttributionHandler.m */; }; - 9DFB066E1D7470C0006D48FC /* ADJBackoffStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB062F1D7470C0006D48FC /* ADJBackoffStrategy.h */; }; - 9DFB066F1D7470C0006D48FC /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06301D7470C0006D48FC /* ADJBackoffStrategy.m */; }; - 9DFB06701D7470C0006D48FC /* ADJConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06311D7470C0006D48FC /* ADJConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06711D7470C0006D48FC /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06321D7470C0006D48FC /* ADJConfig.m */; }; - 9DFB06721D7470C0006D48FC /* ADJPackageParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06331D7470C0006D48FC /* ADJPackageParams.h */; }; - 9DFB06731D7470C0006D48FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06341D7470C0006D48FC /* ADJPackageParams.m */; }; - 9DFB06741D7470C0006D48FC /* ADJEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06351D7470C0006D48FC /* ADJEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06751D7470C0006D48FC /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06361D7470C0006D48FC /* ADJEvent.m */; }; - 9DFB06761D7470C0006D48FC /* ADJEventFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06371D7470C0006D48FC /* ADJEventFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06771D7470C0006D48FC /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06381D7470C0006D48FC /* ADJEventFailure.m */; }; - 9DFB06781D7470C0006D48FC /* ADJEventSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06391D7470C0006D48FC /* ADJEventSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06791D7470C0006D48FC /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB063A1D7470C0006D48FC /* ADJEventSuccess.m */; }; - 9DFB067C1D7470C0006D48FC /* ADJLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB063D1D7470C0006D48FC /* ADJLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB067D1D7470C0006D48FC /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB063E1D7470C0006D48FC /* ADJLogger.m */; }; - 9DFB067E1D7470C0006D48FC /* ADJPackageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB063F1D7470C0006D48FC /* ADJPackageBuilder.h */; }; - 9DFB067F1D7470C0006D48FC /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06401D7470C0006D48FC /* ADJPackageBuilder.m */; }; - 9DFB06801D7470C0006D48FC /* ADJPackageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06411D7470C0006D48FC /* ADJPackageHandler.h */; }; - 9DFB06811D7470C0006D48FC /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06421D7470C0006D48FC /* ADJPackageHandler.m */; }; - 9DFB06821D7470C0006D48FC /* ADJRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06431D7470C0006D48FC /* ADJRequestHandler.h */; }; - 9DFB06831D7470C0006D48FC /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06441D7470C0006D48FC /* ADJRequestHandler.m */; }; - 9DFB06841D7470C0006D48FC /* ADJResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06451D7470C0006D48FC /* ADJResponseData.h */; }; - 9DFB06851D7470C0006D48FC /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06461D7470C0006D48FC /* ADJResponseData.m */; }; - 9DFB06861D7470C0006D48FC /* ADJSdkClickHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06471D7470C0006D48FC /* ADJSdkClickHandler.h */; }; - 9DFB06871D7470C0006D48FC /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06481D7470C0006D48FC /* ADJSdkClickHandler.m */; }; - 9DFB06881D7470C0006D48FC /* ADJSessionFailure.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06491D7470C0006D48FC /* ADJSessionFailure.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06891D7470C0006D48FC /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB064A1D7470C0006D48FC /* ADJSessionFailure.m */; }; - 9DFB068A1D7470C0006D48FC /* ADJSessionSuccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB064B1D7470C0006D48FC /* ADJSessionSuccess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB068B1D7470C0006D48FC /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB064C1D7470C0006D48FC /* ADJSessionSuccess.m */; }; - 9DFB068E1D7470C0006D48FC /* ADJTimerCycle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB064F1D7470C0006D48FC /* ADJTimerCycle.h */; }; - 9DFB068F1D7470C0006D48FC /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06501D7470C0006D48FC /* ADJTimerCycle.m */; }; - 9DFB06901D7470C0006D48FC /* ADJTimerOnce.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06511D7470C0006D48FC /* ADJTimerOnce.h */; }; - 9DFB06911D7470C0006D48FC /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06521D7470C0006D48FC /* ADJTimerOnce.m */; }; - 9DFB06941D7470C0006D48FC /* Adjust.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06551D7470C0006D48FC /* Adjust.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFB06951D7470C0006D48FC /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06561D7470C0006D48FC /* Adjust.m */; }; - 9DFB06961D7470C0006D48FC /* ADJUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFB06571D7470C0006D48FC /* ADJUtil.h */; }; - 9DFB06971D7470C0006D48FC /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DFB06581D7470C0006D48FC /* ADJUtil.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -729,13 +800,6 @@ remoteGlobalIDString = 6F7AF626211878B900F730B2; remoteInfo = AdjustWebBridgeTestApp; }; - 9679922318BBAE2800394606 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9679920518BBAE2800394606 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9679920C18BBAE2800394606; - remoteInfo = Adjust; - }; 9D01680320FF88DE0029CFFF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9D0167FE20FF88DE0029CFFF /* AdjustExample-iMessage.xcodeproj */; @@ -792,13 +856,6 @@ remoteGlobalIDString = 9D1082A41CFDAF8E0050568B; remoteInfo = "AdjustExample-WebView"; }; - 9D7432041EB9F9CF00969F14 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9679920518BBAE2800394606 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9D7431E51EB9F9B700969F14; - remoteInfo = AdjustExampleTests; - }; 9D9D1551212EB3D00081445E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9D9D154D212EB3D00081445E /* AdjustExample-FbPixel.xcodeproj */; @@ -823,120 +880,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 0AB1C96F27DD450D00509231 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - 0AB1C97627DD450D00509231 /* AdjustSdk.h in CopyFiles */, - 0AB1C9BA27DD4D7C00509231 /* Adjust.h in CopyFiles */, - 0AB1C9BB27DD4D7C00509231 /* ADJLogger.h in CopyFiles */, - 0AB1C9BC27DD4D7C00509231 /* ADJEvent.h in CopyFiles */, - 0AB1C9BD27DD4D7C00509231 /* ADJAttribution.h in CopyFiles */, - 0AB1C9BE27DD4D7C00509231 /* ADJConfig.h in CopyFiles */, - 0AB1C9BF27DD4D7C00509231 /* ADJSessionSuccess.h in CopyFiles */, - 0AB1C9C027DD4D7C00509231 /* ADJSessionFailure.h in CopyFiles */, - 0AB1C9C127DD4D7C00509231 /* ADJEventSuccess.h in CopyFiles */, - 0AB1C9C227DD4D7C00509231 /* ADJEventFailure.h in CopyFiles */, - 0AB1C9C327DD4D7C00509231 /* ADJSubscription.h in CopyFiles */, - 0AB1C9C527DD4D7C00509231 /* ADJAdRevenue.h in CopyFiles */, - 0AB1C9C627DD4D7C00509231 /* ADJLinkResolution.h in CopyFiles */, - 0AB1C9C427DD4D7C00509231 /* ADJThirdPartySharing.h in CopyFiles */, - 0ABE89EB2A8E4AA60099CCF5 /* ADJPurchase.h in CopyFiles */, - 0ABE89EC2A8E4AA60099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0AB1CA2327DF462200509231 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - 0AB1CA2A27DF462200509231 /* AdjustSdkTv.h in CopyFiles */, - 0AB1CA5227DF4A2B00509231 /* Adjust.h in CopyFiles */, - 0AB1CA5327DF4A2B00509231 /* ADJLogger.h in CopyFiles */, - 0AB1CA5427DF4A2B00509231 /* ADJEvent.h in CopyFiles */, - 0AB1CA5527DF4A2B00509231 /* ADJAttribution.h in CopyFiles */, - 0AB1CA5627DF4A2B00509231 /* ADJConfig.h in CopyFiles */, - 0AB1CA5727DF4A2B00509231 /* ADJSessionSuccess.h in CopyFiles */, - 0AB1CA5827DF4A2B00509231 /* ADJSessionFailure.h in CopyFiles */, - 0AB1CA5927DF4A2B00509231 /* ADJEventSuccess.h in CopyFiles */, - 0AB1CA5A27DF4A2B00509231 /* ADJEventFailure.h in CopyFiles */, - 0AB1CA5B27DF4A2B00509231 /* ADJSubscription.h in CopyFiles */, - 0AB1CA5D27DF4A2B00509231 /* ADJAdRevenue.h in CopyFiles */, - 0AB1CA5E27DF4A2B00509231 /* ADJLinkResolution.h in CopyFiles */, - 0AB1CA5C27DF4A2B00509231 /* ADJThirdPartySharing.h in CopyFiles */, - 0ABE89ED2A8E4AB70099CCF5 /* ADJPurchase.h in CopyFiles */, - 0ABE89EE2A8E4AB70099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0AB1CA6627DF5D3200509231 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - 0AB1CA6D27DF5D3200509231 /* AdjustSdkIm.h in CopyFiles */, - 0AB1CA9527DF621D00509231 /* Adjust.h in CopyFiles */, - 0AB1CA9627DF621D00509231 /* ADJLogger.h in CopyFiles */, - 0AB1CA9727DF621D00509231 /* ADJEvent.h in CopyFiles */, - 0AB1CA9827DF621D00509231 /* ADJConfig.h in CopyFiles */, - 0AB1CA9927DF621D00509231 /* ADJSessionSuccess.h in CopyFiles */, - 0AB1CA9A27DF621D00509231 /* ADJSessionFailure.h in CopyFiles */, - 0AB1CA9B27DF621D00509231 /* ADJEventSuccess.h in CopyFiles */, - 0AB1CA9C27DF621D00509231 /* ADJEventFailure.h in CopyFiles */, - 0AB1CA9D27DF621D00509231 /* ADJSubscription.h in CopyFiles */, - 0AB1CAA127DF626000509231 /* ADJAttribution.h in CopyFiles */, - 0AB1CA9F27DF621D00509231 /* ADJAdRevenue.h in CopyFiles */, - 0AB1CAA027DF621D00509231 /* ADJLinkResolution.h in CopyFiles */, - 0AB1CA9E27DF621D00509231 /* ADJThirdPartySharing.h in CopyFiles */, - 0ABE89EF2A8E4AF90099CCF5 /* ADJPurchase.h in CopyFiles */, - 0ABE89F02A8E4AF90099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0AB1CAD327DF671300509231 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - 0AB1CB3E27DF69B700509231 /* AdjustBridge.h in CopyFiles */, - 0AB1CB3F27DF69B700509231 /* AdjustBridgeRegister.h in CopyFiles */, - 0AB1CADA27DF671300509231 /* AdjustSdkWebBridge.h in CopyFiles */, - 0AB1CB4027DF69B700509231 /* WebViewJavascriptBridge_JS.h in CopyFiles */, - 0AB1CB4127DF69B700509231 /* WebViewJavascriptBridgeBase.h in CopyFiles */, - 0AB1CB4227DF69B700509231 /* WKWebViewJavascriptBridge.h in CopyFiles */, - 0AB1CB3127DF699E00509231 /* Adjust.h in CopyFiles */, - 0AB1CB3227DF699E00509231 /* ADJLogger.h in CopyFiles */, - 0AB1CB3327DF699E00509231 /* ADJEvent.h in CopyFiles */, - 0AB1CB3427DF699E00509231 /* ADJAttribution.h in CopyFiles */, - 0AB1CB3527DF699E00509231 /* ADJConfig.h in CopyFiles */, - 0AB1CB3627DF699E00509231 /* ADJSessionSuccess.h in CopyFiles */, - 0AB1CB3727DF699E00509231 /* ADJSessionFailure.h in CopyFiles */, - 0AB1CB3827DF699E00509231 /* ADJEventSuccess.h in CopyFiles */, - 0AB1CB3927DF699E00509231 /* ADJEventFailure.h in CopyFiles */, - 0AB1CB3A27DF699E00509231 /* ADJSubscription.h in CopyFiles */, - 0AB1CB3C27DF699E00509231 /* ADJAdRevenue.h in CopyFiles */, - 0AB1CB3D27DF699E00509231 /* ADJLinkResolution.h in CopyFiles */, - 0AB1CB3B27DF699E00509231 /* ADJThirdPartySharing.h in CopyFiles */, - 0ABE89F12A8E4B060099CCF5 /* ADJPurchase.h in CopyFiles */, - 0ABE89F22A8E4B060099CCF5 /* ADJPurchaseVerificationResult.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9615158D1CD2CB2C0022D336 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9679920B18BBAE2800394606 /* Copy Files */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -950,72 +893,30 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 07000F902C47BEAF00F40775 /* AdjustBridgeConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeConstants.h; sourceTree = ""; }; + 07000F912C47BEAF00F40775 /* AdjustBridgeConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeConstants.m; sourceTree = ""; }; 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 07D5CAB12C50EF3100C112DC /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; + 07D5CAC42C50EF3100C112DC /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; + 07D5CAFA2C57DA2400C112DC /* AdjustBridgeUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeUtil.h; sourceTree = ""; }; + 07D5CB0D2C57DA2400C112DC /* AdjustBridgeUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeUtil.m; sourceTree = ""; }; + 0A584B962C3E8C710071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; path = AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584B982C3E8C9A0071A651 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + 0A584B992C3E8CA50071A651 /* AdjustSdk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdk.h; sourceTree = ""; }; + 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdk.h; sourceTree = ""; }; + 0A584DED2C45BD160071A651 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0AB1C97127DD450D00509231 /* libAdjustSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdk.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0AB1C97327DD450D00509231 /* AdjustSdk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdk.h; sourceTree = ""; }; - 0AB1C9F627DD5B5100509231 /* ModuleMap */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ModuleMap; sourceTree = ""; }; - 0AB1C9F827DD5C2400509231 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - 0AB1CA2527DF462200509231 /* libAdjustSdkTv.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdkTv.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0AB1CA2727DF462200509231 /* AdjustSdkTv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkTv.h; sourceTree = ""; }; - 0AB1CA2E27DF493500509231 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - 0AB1CA6827DF5D3200509231 /* libAdjustSdkIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdkIm.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0AB1CA6A27DF5D3200509231 /* AdjustSdkIm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkIm.h; sourceTree = ""; }; - 0AB1CA7127DF5FFE00509231 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - 0AB1CAD527DF671300509231 /* libAdjustSdkWebBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdkWebBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 0AB1CAD727DF671300509231 /* AdjustSdkWebBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkWebBridge.h; sourceTree = ""; }; - 0AB1CB4427DF6C8E00509231 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - 0ABE89BB2A8E49500099CCF5 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0ABE89BC2A8E49500099CCF5 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0ABE89BD2A8E49500099CCF5 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0ABE89BE2A8E49500099CCF5 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0ABE89BF2A8E49500099CCF5 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0ABE89C02A8E49500099CCF5 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0ABE89C72A8E49B50099CCF5 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0ABE89C82A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0ABE89C92A8E49B50099CCF5 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0ABE89CA2A8E49B50099CCF5 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0ABE89CB2A8E49B50099CCF5 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0ABE89CC2A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0ABE89D32A8E49C20099CCF5 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0ABE89D42A8E49C20099CCF5 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0ABE89D52A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0ABE89D62A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0ABE89D72A8E49C20099CCF5 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0ABE89D82A8E49C20099CCF5 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0ABE89DF2A8E49D40099CCF5 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0ABE89E02A8E49D40099CCF5 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0ABE89E12A8E49D40099CCF5 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0ABE89E22A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0ABE89E32A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0ABE89E42A8E49D40099CCF5 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; + 0AB1CA2527DF462200509231 /* libAdjustSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdk.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0AB1CA6827DF5D3200509231 /* libAdjustSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdk.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0AB1CAD527DF671300509231 /* libAdjustSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustSdk.a; sourceTree = BUILT_PRODUCTS_DIR; }; 52BD7374221C3EDB004F2E87 /* PocketSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = PocketSocket.xcodeproj; path = PocketSocket/PocketSocket.xcodeproj; sourceTree = ""; }; 6F0842182007766700568A31 /* AdjustTestLibrary.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AdjustTestLibrary.xcodeproj; path = AdjustTestLibrary/AdjustTestLibrary.xcodeproj; sourceTree = ""; }; 6F084240200776A000568A31 /* AdjustTestApp.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AdjustTestApp.xcodeproj; path = AdjustTestApp/AdjustTestApp.xcodeproj; sourceTree = ""; }; 6F7AF63F211878BC00F730B2 /* AdjustWebBridgeTestApp.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AdjustWebBridgeTestApp.xcodeproj; path = AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj; sourceTree = ""; }; - 6F84511025B1B1380004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6F84512325B1B1380004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78692636DC8400773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB786A2636DC8400773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78762636DCB600773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB78772636DCB600773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78832636DCCD00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB78842636DCCD00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78902636DCE700773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78912636DCE700773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FBE0C6C2577CDAC00EC2CE0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6FBE0C6D2577CDAC00EC2CE0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE92424E422EB00FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE92524E422EB00FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE92A24E4230700FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE92B24E4230700FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE92E24E4231300FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE92F24E4231300FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE93224E4232800FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE93324E4232800FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; 9601C19C1A31DD7F00A9AE21 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; 9601C1A11A31DE0300A9AE21 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 9601CAE21C74B70600670879 /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; @@ -1032,19 +933,12 @@ 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; 96325E84190E5CD900A97911 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 96325E86190E5CE400A97911 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; - 9648C5E81CD1765E00A3B049 /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = ""; }; - 9648C5E91CD1765E00A3B049 /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = ""; }; - 9648C5EA1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = ""; }; - 9648C5EB1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = ""; }; - 9648C5EC1CD1765E00A3B049 /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = ""; }; - 9648C5ED1CD1765E00A3B049 /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = ""; }; 9648C5F51CD1770300A3B049 /* AdjustBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustBridge.h; sourceTree = ""; }; 9648C5F61CD1770300A3B049 /* AdjustBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AdjustBridge.m; sourceTree = ""; }; 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; 9679920D18BBAE2800394606 /* libAdjust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjust.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9679921018BBAE2800394606 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 9679921D18BBAE2800394606 /* AdjustTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AdjustTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; @@ -1053,22 +947,12 @@ 96854A581B1F2779002B2874 /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 968595EC1D0B25970011CA2B /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; - 968595ED1D0B25970011CA2B /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; 969952CD1A012F5300928462 /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; 969952CE1A012F5300928462 /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; 969952D01A01309200928462 /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; 969952D11A01309200928462 /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 96B6710E1D788EEC0090A023 /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 96B671121D788F4A0090A023 /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 96B671131D788F4A0090A023 /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 96B671161D788F7A0090A023 /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 96B671171D788F7A0090A023 /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 96C93DF31AC47F2E00B53F56 /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 96CD2BDC1A13BFC600A40AFB /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; + 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJGlobalParameters.h; sourceTree = ""; }; + 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJGlobalParameters.m; sourceTree = ""; }; 96E5E34C18BBB48A008E7B30 /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; 96E5E34D18BBB48A008E7B30 /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; @@ -1091,320 +975,42 @@ 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; 96E5E38018BBB48A008E7B30 /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 96E5E39B18BBB49E008E7B30 /* Adjust-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Adjust-Prefix.pch"; sourceTree = ""; }; 96FCC5361C186426007BBFE1 /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; 96FCC5371C186426007BBFE1 /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; 9D0167FE20FF88DE0029CFFF /* AdjustExample-iMessage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-iMessage.xcodeproj"; path = "examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj"; sourceTree = ""; }; - 9D0E2E02210B570600133B4F /* AdjustSdkWebBridge.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdkWebBridge.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9D0E2E04210B570600133B4F /* AdjustSdkWebBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkWebBridge.h; sourceTree = ""; }; - 9D0E2E05210B570600133B4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9D0E2E17210B575600133B4F /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9D0E2E19210B575600133B4F /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9D0E2E1A210B575600133B4F /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9D0E2E1B210B575600133B4F /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9D0E2E1C210B575600133B4F /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9D0E2E1D210B575600133B4F /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9D0E2E1F210B575600133B4F /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9D0E2E21210B575600133B4F /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9D0E2E22210B575600133B4F /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9D0E2E23210B575600133B4F /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9D0E2E24210B575600133B4F /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9D0E2E25210B575600133B4F /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9D0E2E26210B575600133B4F /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9D0E2E27210B575600133B4F /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9D0E2E28210B575600133B4F /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9D0E2E29210B575600133B4F /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9D0E2E2A210B575600133B4F /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9D0E2E2B210B575600133B4F /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9D0E2E2C210B575600133B4F /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9D0E2E2D210B575600133B4F /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9D0E2E2F210B575600133B4F /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9D0E2E30210B575600133B4F /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9D0E2E31210B575600133B4F /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9D0E2E32210B575600133B4F /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9D0E2E33210B575600133B4F /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9D0E2E34210B575600133B4F /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9D0E2E35210B575600133B4F /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9D0E2E36210B575600133B4F /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9D0E2E37210B575600133B4F /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9D0E2E39210B575600133B4F /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D0E2E3A210B575600133B4F /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9D0E2E3B210B575600133B4F /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9D0E2E3C210B575600133B4F /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9D0E2E3D210B575600133B4F /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9D0E2E40210B575600133B4F /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9D0E2E42210B575600133B4F /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9D0E2E43210B575600133B4F /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9D0E2E45210B575600133B4F /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9D0E2E46210B575600133B4F /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9D0E2E48210B575600133B4F /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9D0E2E49210B575600133B4F /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9D0E2E4A210B575600133B4F /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9D0E2E4B210B575600133B4F /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9D0E2E4C210B575600133B4F /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9D0E2E4D210B575600133B4F /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9D0E2E4E210B575600133B4F /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9D0E2E4F210B575600133B4F /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9D0E2E50210B575600133B4F /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9D0E2E51210B575600133B4F /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9D0E2E52210B575600133B4F /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9D0E2E53210B575600133B4F /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9D0E2E54210B575600133B4F /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9D0E2E55210B575600133B4F /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9D0E2E56210B575600133B4F /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9D0E2E58210B575600133B4F /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9D0E2E59210B575600133B4F /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9D0E2E5C210B575600133B4F /* AdjustBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridge.m; sourceTree = ""; }; - 9D0E2E5D210B575600133B4F /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; - 9D0E2E5F210B575600133B4F /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = ""; }; - 9D0E2E61210B575600133B4F /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = ""; }; - 9D0E2E63210B575600133B4F /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = ""; }; - 9D0E2E64210B575600133B4F /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = ""; }; - 9D0E2E66210B575600133B4F /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = ""; }; - 9D0E2E68210B575600133B4F /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = ""; }; - 9D0E2E69210B575600133B4F /* AdjustBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridge.h; sourceTree = ""; }; - 9D0E2E6A210B575600133B4F /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; - 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F23F62447DCE800B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F23F72447DCE800B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F23FA2447DD2500B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F23FB2447DD2500B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F23FE2447DD3600B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F23FF2447DD3700B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F24022447DD6000B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F24032447DD6000B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; + 9D0E2E02210B570600133B4F /* AdjustSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJAppStoreSubscription.h; sourceTree = ""; }; + 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJAppStoreSubscription.m; sourceTree = ""; }; 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AC32626501D00BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2AC42626501D00BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AC72626505800BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AC82626505800BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2ACB2626508F00BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2ACC2626508F00BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2ACF262650C300BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AD0262650C300BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; 9D449DB31E6ED23400E7E80B /* AdjustExample-iWatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-iWatch.xcodeproj"; path = "examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj"; sourceTree = ""; }; 9D449DBF1E6ED23900E7E80B /* AdjustExample-Swift.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-Swift.xcodeproj"; path = "examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj"; sourceTree = ""; }; 9D449DC51E6ED24000E7E80B /* AdjustExample-tvOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-tvOS.xcodeproj"; path = "examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj"; sourceTree = ""; }; 9D449DCB1E6ED24400E7E80B /* AdjustExample-WebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-WebView.xcodeproj"; path = "examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj"; sourceTree = ""; }; - 9D49D14A290FEBA200042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D15D290FEBA200042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D49D160290FEBB200042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D161290FEBB200042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D49D164290FEBC000042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D165290FEBC000042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D49D168290FEBD100042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D169290FEBD100042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; + 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJAdditions.h; sourceTree = ""; }; + 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJAdditions.m; sourceTree = ""; }; 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 9D651C8625B26DF4006D69D6 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 9D651C8725B26DF5006D69D6 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 9D651C9325B26E1B006D69D6 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 9D651C9425B26E1B006D69D6 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 9D7431E61EB9F9B700969F14 /* AdjustExampleTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdjustExampleTests.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; + 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJAppStorePurchase.h; sourceTree = ""; }; + 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJAppStorePurchase.m; sourceTree = ""; }; 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; + 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJDeeplink.h; sourceTree = ""; }; + 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJDeeplink.m; sourceTree = ""; }; 9D9D154D212EB3D00081445E /* AdjustExample-FbPixel.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-FbPixel.xcodeproj"; path = "examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj"; sourceTree = ""; }; 9DBE560723054FCC0065E19C /* AdjustExample-ObjC.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "AdjustExample-ObjC.xcodeproj"; path = "examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj"; sourceTree = ""; }; 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DE354D22100726300D211C9 /* AdjustSdkIm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdkIm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9DE354D42100726300D211C9 /* AdjustSdkIm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkIm.h; sourceTree = ""; }; - 9DE354D52100726300D211C9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9DE354D22100726300D211C9 /* AdjustSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9DE7C8FC1AE688DA001556E5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 9DEAF0B1210072BC005CAEDB /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9DEAF0B3210072BC005CAEDB /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9DEAF0B4210072BC005CAEDB /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9DEAF0B5210072BC005CAEDB /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9DEAF0B6210072BC005CAEDB /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9DEAF0B7210072BC005CAEDB /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9DEAF0B9210072BC005CAEDB /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9DEAF0BB210072BC005CAEDB /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9DEAF0BC210072BC005CAEDB /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9DEAF0BD210072BC005CAEDB /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9DEAF0BE210072BC005CAEDB /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9DEAF0BF210072BC005CAEDB /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9DEAF0C0210072BC005CAEDB /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9DEAF0C1210072BC005CAEDB /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9DEAF0C2210072BC005CAEDB /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9DEAF0C3210072BC005CAEDB /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9DEAF0C4210072BC005CAEDB /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9DEAF0C5210072BC005CAEDB /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9DEAF0C6210072BC005CAEDB /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9DEAF0C7210072BC005CAEDB /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9DEAF0C9210072BC005CAEDB /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9DEAF0CA210072BC005CAEDB /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9DEAF0CB210072BC005CAEDB /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9DEAF0CC210072BC005CAEDB /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9DEAF0CD210072BC005CAEDB /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9DEAF0CE210072BC005CAEDB /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9DEAF0CF210072BC005CAEDB /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9DEAF0D0210072BC005CAEDB /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9DEAF0D1210072BC005CAEDB /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9DEAF0D3210072BC005CAEDB /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9DEAF0D4210072BC005CAEDB /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9DEAF0D5210072BC005CAEDB /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9DEAF0D6210072BC005CAEDB /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9DEAF0D7210072BC005CAEDB /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9DEAF0DA210072BC005CAEDB /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9DEAF0DC210072BC005CAEDB /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9DEAF0DD210072BC005CAEDB /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9DEAF0DF210072BC005CAEDB /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9DEAF0E0210072BC005CAEDB /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9DEAF0E2210072BC005CAEDB /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9DEAF0E3210072BC005CAEDB /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9DEAF0E4210072BC005CAEDB /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9DEAF0E5210072BC005CAEDB /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9DEAF0E6210072BC005CAEDB /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9DEAF0E7210072BC005CAEDB /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9DEAF0E8210072BC005CAEDB /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9DEAF0E9210072BC005CAEDB /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9DEAF0EA210072BC005CAEDB /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9DEAF0EB210072BC005CAEDB /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9DEAF0EC210072BC005CAEDB /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9DEAF0ED210072BC005CAEDB /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DEAF0EE210072BC005CAEDB /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9DEAF0EF210072BC005CAEDB /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9DEAF0F0210072BC005CAEDB /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9DEAF0F2210072BC005CAEDB /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9DEAF0F3210072BC005CAEDB /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF381BB260E990B0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF381F3260E9AF50033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF381F4260E9AF50033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF38200260E9B0A0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF38201260E9B0A0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF3820D260E9B740033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF3820E260E9B740033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF3821A260E9B8D0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF3821B260E9B8D0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92D852630ED3D000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92D862630ED3D000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92D892630ED59000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92D8A2630ED59000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92D8D2630ED7B000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92D8E2630ED7B000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF9C8C91D6F3CA5008E362F /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9DF9C8CA1D6F3CA5008E362F /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9DF9C8CB1D6F3CA5008E362F /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9DF9C8CC1D6F3CA5008E362F /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9DF9C8CD1D6F3CA5008E362F /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9DF9C8CE1D6F3CA5008E362F /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9DF9C8CF1D6F3CA5008E362F /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9DF9C8D01D6F3CA5008E362F /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9DF9C8D21D6F3CA5008E362F /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9DF9C8D31D6F3CA5008E362F /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9DF9C8D41D6F3CA5008E362F /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9DF9C8D51D6F3CA5008E362F /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9DF9C8D81D6F3CA5008E362F /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9DF9C8D91D6F3CA5008E362F /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9DF9C8DA1D6F3CA5008E362F /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9DF9C8DB1D6F3CA5008E362F /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9DF9C8DC1D6F3CA5008E362F /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9DF9C8DD1D6F3CA5008E362F /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9DF9C8DE1D6F3CA5008E362F /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9DF9C8DF1D6F3CA5008E362F /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9DF9C8E01D6F3CA5008E362F /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9DF9C8E11D6F3CA5008E362F /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9DF9C8E41D6F3CA5008E362F /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9DF9C8E51D6F3CA5008E362F /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9DF9C8E61D6F3CA5008E362F /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9DF9C8E71D6F3CA5008E362F /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9DF9C8E81D6F3CA5008E362F /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9DF9C8E91D6F3CA5008E362F /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9DF9C8EC1D6F3CA5008E362F /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9DF9C8ED1D6F3CA5008E362F /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9DF9C8EE1D6F3CA5008E362F /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9DF9C8EF1D6F3CA5008E362F /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9DF9C8F01D6F3CA5008E362F /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9DF9C8F11D6F3CA5008E362F /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9DF9C8F21D6F3CA5008E362F /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9DF9C8F31D6F3CA5008E362F /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9DF9C8F41D6F3CA5008E362F /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9DF9C8F51D6F3CA5008E362F /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9DF9C8F61D6F3CA5008E362F /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9DF9C8F71D6F3CA5008E362F /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9DF9C8F81D6F3CA5008E362F /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9DF9C8F91D6F3CA5008E362F /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9DF9C8FA1D6F3CA5008E362F /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9DF9C8FB1D6F3CA5008E362F /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9DF9C8FE1D6F3CA5008E362F /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9DF9C8FF1D6F3CA5008E362F /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9DF9C9001D6F3CA5008E362F /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9DF9C9011D6F3CA5008E362F /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9DF9C9041D6F3CA5008E362F /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9DF9C9051D6F3CA5008E362F /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9DF9C9061D6F3CA5008E362F /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9DF9C9071D6F3CA5008E362F /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; 9DFA37AD1C0F219400782607 /* AdjustSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9DFA37B51C0F21D600782607 /* AdjustSdk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustSdk.h; sourceTree = ""; }; - 9DFA37B61C0F21D600782607 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DFB06101D747070006D48FC /* AdjustSdkTv.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdkTv.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9DFB06121D747070006D48FC /* AdjustSdkTv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdjustSdkTv.h; sourceTree = ""; }; - 9DFB06141D747070006D48FC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DFB061A1D7470C0006D48FC /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9DFB061B1D7470C0006D48FC /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9DFB061C1D7470C0006D48FC /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9DFB061D1D7470C0006D48FC /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9DFB061E1D7470C0006D48FC /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9DFB061F1D7470C0006D48FC /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9DFB06201D7470C0006D48FC /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9DFB06211D7470C0006D48FC /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9DFB06231D7470C0006D48FC /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9DFB06241D7470C0006D48FC /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9DFB06251D7470C0006D48FC /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9DFB06261D7470C0006D48FC /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9DFB06291D7470C0006D48FC /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9DFB062A1D7470C0006D48FC /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9DFB062B1D7470C0006D48FC /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9DFB062C1D7470C0006D48FC /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9DFB062D1D7470C0006D48FC /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9DFB062E1D7470C0006D48FC /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9DFB062F1D7470C0006D48FC /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9DFB06301D7470C0006D48FC /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9DFB06311D7470C0006D48FC /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9DFB06321D7470C0006D48FC /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9DFB06331D7470C0006D48FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DFB06341D7470C0006D48FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DFB06351D7470C0006D48FC /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9DFB06361D7470C0006D48FC /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9DFB06371D7470C0006D48FC /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9DFB06381D7470C0006D48FC /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9DFB06391D7470C0006D48FC /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9DFB063A1D7470C0006D48FC /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9DFB063D1D7470C0006D48FC /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9DFB063E1D7470C0006D48FC /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9DFB063F1D7470C0006D48FC /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9DFB06401D7470C0006D48FC /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9DFB06411D7470C0006D48FC /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9DFB06421D7470C0006D48FC /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9DFB06431D7470C0006D48FC /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9DFB06441D7470C0006D48FC /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9DFB06451D7470C0006D48FC /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9DFB06461D7470C0006D48FC /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9DFB06471D7470C0006D48FC /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9DFB06481D7470C0006D48FC /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9DFB06491D7470C0006D48FC /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9DFB064A1D7470C0006D48FC /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9DFB064B1D7470C0006D48FC /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9DFB064C1D7470C0006D48FC /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9DFB064F1D7470C0006D48FC /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9DFB06501D7470C0006D48FC /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9DFB06511D7470C0006D48FC /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9DFB06521D7470C0006D48FC /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9DFB06551D7470C0006D48FC /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9DFB06561D7470C0006D48FC /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9DFB06571D7470C0006D48FC /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9DFB06581D7470C0006D48FC /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; + 9DFB06101D747070006D48FC /* AdjustSdk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AdjustSdk.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1451,22 +1057,10 @@ buildActionMask = 2147483647; files = ( 9DE7C8FD1AE688DA001556E5 /* UIKit.framework in Frameworks */, - 96325E8A190E892600A97911 /* AdSupport.framework in Frameworks */, 9679921118BBAE2800394606 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9679921A18BBAE2800394606 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9679922518BBAE2800394606 /* libAdjust.a in Frameworks */, - 96325E8C190E8D6B00A97911 /* AdSupport.framework in Frameworks */, - 9679922018BBAE2800394606 /* Foundation.framework in Frameworks */, - 9601C1A31A31DE0D00A9AE21 /* SystemConfiguration.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9D0E2DFE210B570600133B4F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1474,13 +1068,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9D7431E31EB9F9B700969F14 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9DE354CE2100726300D211C9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1505,40 +1092,53 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0AB1C97227DD450D00509231 /* AdjustSdkStatic */ = { + 0A584B922C3E8B320071A651 /* ModuleMap */ = { + isa = PBXGroup; + children = ( + 0A584B982C3E8C9A0071A651 /* module.modulemap */, + ); + path = ModuleMap; + sourceTree = ""; + }; + 0A584B932C3E8B5D0071A651 /* AdjustSignature */ = { + isa = PBXGroup; + children = ( + 0A584B962C3E8C710071A651 /* AdjustSigSdk.xcframework */, + ); + path = AdjustSignature; + sourceTree = ""; + }; + 0A584B952C3E8B8D0071A651 /* UmbrellaHeaders */ = { isa = PBXGroup; children = ( - 0AB1C97327DD450D00509231 /* AdjustSdk.h */, - 0AB1C9F827DD5C2400509231 /* module.modulemap */, + 0A584B9C2C3E8CA50071A651 /* sdk */, + 0A584B9A2C3E8CA50071A651 /* webbridge */, ); - path = AdjustSdkStatic; + path = UmbrellaHeaders; sourceTree = ""; }; - 0AB1CA2627DF462200509231 /* AdjustSdkTvStatic */ = { + 0A584B9A2C3E8CA50071A651 /* webbridge */ = { isa = PBXGroup; children = ( - 0AB1CA2E27DF493500509231 /* module.modulemap */, - 0AB1CA2727DF462200509231 /* AdjustSdkTv.h */, + 0A584B992C3E8CA50071A651 /* AdjustSdk.h */, ); - path = AdjustSdkTvStatic; + path = webbridge; sourceTree = ""; }; - 0AB1CA6927DF5D3200509231 /* AdjustSdkImStatic */ = { + 0A584B9C2C3E8CA50071A651 /* sdk */ = { isa = PBXGroup; children = ( - 0AB1CA7127DF5FFE00509231 /* module.modulemap */, - 0AB1CA6A27DF5D3200509231 /* AdjustSdkIm.h */, + 0A584B9B2C3E8CA50071A651 /* AdjustSdk.h */, ); - path = AdjustSdkImStatic; + path = sdk; sourceTree = ""; }; - 0AB1CAD627DF671300509231 /* AdjustSdkWebBridgeStatic */ = { + 0A584DBD2C40FCA30071A651 /* Info */ = { isa = PBXGroup; children = ( - 0AB1CB4427DF6C8E00509231 /* module.modulemap */, - 0AB1CAD727DF671300509231 /* AdjustSdkWebBridge.h */, + 0A584DED2C45BD160071A651 /* Info.plist */, ); - path = AdjustSdkWebBridgeStatic; + path = Info; sourceTree = ""; }; 52BD7375221C3EDB004F2E87 /* Products */ = { @@ -1552,14 +1152,6 @@ name = Products; sourceTree = ""; }; - 6F0841FB2007749C00568A31 /* AdjustUnitTests */ = { - isa = PBXGroup; - children = ( - 96E5E39B18BBB49E008E7B30 /* Adjust-Prefix.pch */, - ); - path = AdjustUnitTests; - sourceTree = ""; - }; 6F0842192007766700568A31 /* Products */ = { isa = PBXGroup; children = ( @@ -1589,43 +1181,28 @@ children = ( 9648C5F51CD1770300A3B049 /* AdjustBridge.h */, 9648C5F61CD1770300A3B049 /* AdjustBridge.m */, - 968595EC1D0B25970011CA2B /* AdjustBridgeRegister.h */, - 968595ED1D0B25970011CA2B /* AdjustBridgeRegister.m */, - 9648C5E51CD1765E00A3B049 /* WebViewJavascriptBridge */, + 07D5CAB12C50EF3100C112DC /* AdjustBridgeRegister.h */, + 07D5CAC42C50EF3100C112DC /* AdjustBridgeRegister.m */, + 07000F902C47BEAF00F40775 /* AdjustBridgeConstants.h */, + 07000F912C47BEAF00F40775 /* AdjustBridgeConstants.m */, + 07D5CAFA2C57DA2400C112DC /* AdjustBridgeUtil.h */, + 07D5CB0D2C57DA2400C112DC /* AdjustBridgeUtil.m */, ); path = AdjustBridge; sourceTree = SOURCE_ROOT; }; - 9648C5E51CD1765E00A3B049 /* WebViewJavascriptBridge */ = { - isa = PBXGroup; - children = ( - 9648C5E81CD1765E00A3B049 /* WebViewJavascriptBridge_JS.h */, - 9648C5E91CD1765E00A3B049 /* WebViewJavascriptBridge_JS.m */, - 9648C5EA1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.h */, - 9648C5EB1CD1765E00A3B049 /* WebViewJavascriptBridgeBase.m */, - 9648C5EC1CD1765E00A3B049 /* WKWebViewJavascriptBridge.h */, - 9648C5ED1CD1765E00A3B049 /* WKWebViewJavascriptBridge.m */, - ); - path = WebViewJavascriptBridge; - sourceTree = ""; - }; 9679920418BBAE2800394606 = { isa = PBXGroup; children = ( 96E5E34B18BBB48A008E7B30 /* Adjust */, - 9DFA37AE1C0F219400782607 /* AdjustSdk */, - 0AB1C97227DD450D00509231 /* AdjustSdkStatic */, - 9DE354D32100726300D211C9 /* AdjustSdkIm */, - 0AB1CA6927DF5D3200509231 /* AdjustSdkImStatic */, - 9DFB06111D747070006D48FC /* AdjustSdkTv */, - 0AB1CA2627DF462200509231 /* AdjustSdkTvStatic */, 9648C5E41CD1765E00A3B049 /* AdjustBridge */, - 9D0E2E03210B570600133B4F /* AdjustSdkWebBridge */, - 0AB1CAD627DF671300509231 /* AdjustSdkWebBridgeStatic */, 96E5E39A18BBB49E008E7B30 /* AdjustTests */, 9D449DAC1E6ED20400E7E80B /* Example Apps */, - 0AB1C9F627DD5B5100509231 /* ModuleMap */, + 0A584B932C3E8B5D0071A651 /* AdjustSignature */, + 0A584DBD2C40FCA30071A651 /* Info */, + 0A584B922C3E8B320071A651 /* ModuleMap */, 9679920F18BBAE2800394606 /* Frameworks */, + 0A584B952C3E8B8D0071A651 /* UmbrellaHeaders */, 9679920E18BBAE2800394606 /* Products */, ); sourceTree = ""; @@ -1634,17 +1211,15 @@ isa = PBXGroup; children = ( 9679920D18BBAE2800394606 /* libAdjust.a */, - 9679921D18BBAE2800394606 /* AdjustTests.xctest */, 9DFA37AD1C0F219400782607 /* AdjustSdk.framework */, 9615158F1CD2CB2C0022D336 /* libAdjustBridge.a */, - 9DFB06101D747070006D48FC /* AdjustSdkTv.framework */, - 9D7431E61EB9F9B700969F14 /* AdjustExampleTests.app */, - 9DE354D22100726300D211C9 /* AdjustSdkIm.framework */, - 9D0E2E02210B570600133B4F /* AdjustSdkWebBridge.framework */, + 9DFB06101D747070006D48FC /* AdjustSdk.framework */, + 9DE354D22100726300D211C9 /* AdjustSdk.framework */, + 9D0E2E02210B570600133B4F /* AdjustSdk.framework */, 0AB1C97127DD450D00509231 /* libAdjustSdk.a */, - 0AB1CA2527DF462200509231 /* libAdjustSdkTv.a */, - 0AB1CA6827DF5D3200509231 /* libAdjustSdkIm.a */, - 0AB1CAD527DF671300509231 /* libAdjustSdkWebBridge.a */, + 0AB1CA2527DF462200509231 /* libAdjustSdk.a */, + 0AB1CA6827DF5D3200509231 /* libAdjustSdk.a */, + 0AB1CAD527DF671300509231 /* libAdjustSdk.a */, ); name = Products; sourceTree = ""; @@ -1663,96 +1238,43 @@ name = Frameworks; sourceTree = ""; }; - 96CD2BDB1A13BFC600A40AFB /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 96CD2BDC1A13BFC600A40AFB /* NSString+ADJAdditions.h */, - 96CD2BDD1A13BFC600A40AFB /* NSString+ADJAdditions.m */, - 96C93DF31AC47F2E00B53F56 /* NSData+ADJAdditions.h */, - 96C93DF41AC47F2E00B53F56 /* NSData+ADJAdditions.m */, - 9DF381BB260E990B0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF381A8260E990B0033F5A1 /* NSNumber+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; - }; 96E5E34B18BBB48A008E7B30 /* Adjust */ = { isa = PBXGroup; children = ( - 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */, - 96CD2BDB1A13BFC600A40AFB /* ADJAdditions */, - 96E5E34C18BBB48A008E7B30 /* Adjust.h */, - 96E5E34D18BBB48A008E7B30 /* Adjust.m */, - 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */, - 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */, - 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */, - 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */, - 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */, - 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */, - 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */, - 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */, - 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */, - 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */, - 96E5E37318BBB48A008E7B30 /* ADJLogger.h */, - 96E5E37418BBB48A008E7B30 /* ADJLogger.m */, - 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */, - 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */, - 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */, - 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */, - 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */, - 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */, - 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */, - 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */, - 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */, - 96E5E38018BBB48A008E7B30 /* ADJUtil.m */, - 9609BC6819EEA55800E02303 /* ADJEvent.h */, - 9609BC6919EEA55800E02303 /* ADJEvent.m */, - 969952CD1A012F5300928462 /* ADJAttributionHandler.h */, - 969952CE1A012F5300928462 /* ADJAttributionHandler.m */, + 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */, + 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */, + 9D775B3C2A1F4B19009D0BE8 /* ADJAppStorePurchase.h */, + 9D775B3D2A1F4B19009D0BE8 /* ADJAppStorePurchase.m */, + 9D2F23E02447CE5C00B7CA90 /* ADJAppStoreSubscription.h */, + 9D2F23E12447CE5C00B7CA90 /* ADJAppStoreSubscription.m */, 969952D01A01309200928462 /* ADJAttribution.h */, 969952D11A01309200928462 /* ADJAttribution.m */, 960A8BB71A029A8000F2BB95 /* ADJConfig.h */, 960A8BB81A029A8000F2BB95 /* ADJConfig.m */, - 96854A571B1F2779002B2874 /* ADJTimerOnce.h */, - 96854A581B1F2779002B2874 /* ADJTimerOnce.m */, - 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */, - 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */, - 96FCC5361C186426007BBFE1 /* ADJResponseData.h */, - 96FCC5371C186426007BBFE1 /* ADJResponseData.m */, - 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */, - 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */, - 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */, - 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */, - 9601CAE21C74B70600670879 /* ADJEventSuccess.h */, - 9601CAE31C74B70600670879 /* ADJEventSuccess.m */, + 9D7D3DEA2C49A8B200FACB18 /* ADJDeeplink.h */, + 9D7D3DEB2C49A8B200FACB18 /* ADJDeeplink.m */, + 9609BC6819EEA55800E02303 /* ADJEvent.h */, + 9609BC6919EEA55800E02303 /* ADJEvent.m */, 9601CAE61C74BAAE00670879 /* ADJEventFailure.h */, 9601CAE71C74BAAE00670879 /* ADJEventFailure.m */, - 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */, - 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */, - 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */, - 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */, - 96B6710E1D788EEC0090A023 /* ADJSessionParameters.h */, - 96B6710F1D788EEC0090A023 /* ADJSessionParameters.m */, - 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */, - 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */, - 9D2F23E02447CE5C00B7CA90 /* ADJSubscription.h */, - 9D2F23E12447CE5C00B7CA90 /* ADJSubscription.m */, - 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */, - 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */, - 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */, - 9D3A2ABD2625BEB800BD6E44 /* ADJAdRevenue.h */, - 9D3A2AAA2625BEB800BD6E44 /* ADJAdRevenue.m */, + 9601CAE21C74B70600670879 /* ADJEventSuccess.h */, + 9601CAE31C74B70600670879 /* ADJEventSuccess.m */, 6FAB784A2636DC0E00773869 /* ADJLinkResolution.h */, 6FAB784B2636DC0E00773869 /* ADJLinkResolution.m */, - 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */, - 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */, - 9D775B3C2A1F4B19009D0BE8 /* ADJPurchase.h */, - 9D775B3D2A1F4B19009D0BE8 /* ADJPurchase.m */, + 96E5E37318BBB48A008E7B30 /* ADJLogger.h */, + 96E5E37418BBB48A008E7B30 /* ADJLogger.m */, 9D775B572A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.h */, 9D775B582A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m */, - 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */, - 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */, + 968173851C3C2D36002AE1DE /* ADJSessionFailure.h */, + 968173861C3C2D36002AE1DE /* ADJSessionFailure.m */, + 968173811C3C2D07002AE1DE /* ADJSessionSuccess.h */, + 968173821C3C2D07002AE1DE /* ADJSessionSuccess.m */, + 9D651BF425B25A64006D69D6 /* ADJThirdPartySharing.h */, + 9D651BE125B25A64006D69D6 /* ADJThirdPartySharing.m */, + 96E5E34C18BBB48A008E7B30 /* Adjust.h */, + 96E5E34D18BBB48A008E7B30 /* Adjust.m */, + 9DB561722C072B060004CCAD /* Internal */, + 07BFEAA12A49E3DA004E29D9 /* PrivacyInfo.xcprivacy */, ); path = Adjust; sourceTree = ""; @@ -1764,7 +1286,6 @@ 6F0842182007766700568A31 /* AdjustTestLibrary.xcodeproj */, 6F084240200776A000568A31 /* AdjustTestApp.xcodeproj */, 6F7AF63F211878BC00F730B2 /* AdjustWebBridgeTestApp.xcodeproj */, - 6F0841FB2007749C00568A31 /* AdjustUnitTests */, ); path = AdjustTests; sourceTree = ""; @@ -1778,135 +1299,6 @@ name = Products; sourceTree = ""; }; - 9D0E2E03210B570600133B4F /* AdjustSdkWebBridge */ = { - isa = PBXGroup; - children = ( - 9D0E2E04210B570600133B4F /* AdjustSdkWebBridge.h */, - 9D0E2E16210B575600133B4F /* Adjust */, - 9D0E2E5B210B575600133B4F /* AdjustBridge */, - 9D0E2E05210B570600133B4F /* Info.plist */, - ); - path = AdjustSdkWebBridge; - sourceTree = ""; - }; - 9D0E2E16210B575600133B4F /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D0E2E3F210B575600133B4F /* ADJAdditions */, - 9D0E2E2F210B575600133B4F /* ADJActivityHandler.h */, - 9D0E2E59210B575600133B4F /* ADJActivityHandler.m */, - 9D0E2E22210B575600133B4F /* ADJActivityKind.h */, - 9D0E2E3D210B575600133B4F /* ADJActivityKind.m */, - 9D0E2E1C210B575600133B4F /* ADJActivityPackage.h */, - 9D0E2E49210B575600133B4F /* ADJActivityPackage.m */, - 9D0E2E4C210B575600133B4F /* ADJActivityState.h */, - 9D0E2E2B210B575600133B4F /* ADJActivityState.m */, - 9D0E2E29210B575600133B4F /* ADJAdjustFactory.h */, - 9D0E2E4D210B575600133B4F /* ADJAdjustFactory.m */, - 9D3A2ACF262650C300BD6E44 /* ADJAdRevenue.h */, - 9D3A2AD0262650C300BD6E44 /* ADJAdRevenue.m */, - 9D0E2E1F210B575600133B4F /* ADJAttribution.h */, - 9D0E2E46210B575600133B4F /* ADJAttribution.m */, - 9D0E2E36210B575600133B4F /* ADJAttributionHandler.h */, - 9D0E2E1A210B575600133B4F /* ADJAttributionHandler.m */, - 9D0E2E54210B575600133B4F /* ADJBackoffStrategy.h */, - 9D0E2E33210B575600133B4F /* ADJBackoffStrategy.m */, - 9D0E2E17210B575600133B4F /* ADJConfig.h */, - 9D0E2E39210B575600133B4F /* ADJConfig.m */, - 9D0E2E3B210B575600133B4F /* ADJEvent.h */, - 9D0E2E23210B575600133B4F /* ADJEvent.m */, - 9D0E2E4F210B575600133B4F /* ADJEventFailure.h */, - 9D0E2E28210B575600133B4F /* ADJEventFailure.m */, - 9D0E2E4E210B575600133B4F /* ADJEventSuccess.h */, - 9D0E2E2A210B575600133B4F /* ADJEventSuccess.m */, - 6FAB78912636DCE700773869 /* ADJLinkResolution.h */, - 6FAB78902636DCE700773869 /* ADJLinkResolution.m */, - 9D0E2E55210B575600133B4F /* ADJLogger.h */, - 9D0E2E32210B575600133B4F /* ADJLogger.m */, - 9D0E2E25210B575600133B4F /* ADJPackageBuilder.h */, - 9D0E2E52210B575600133B4F /* ADJPackageBuilder.m */, - 9D0E2E24210B575600133B4F /* ADJPackageHandler.h */, - 9D0E2E3A210B575600133B4F /* ADJPackageHandler.m */, - 9DF92D8E2630ED7B000FC3FC /* ADJPackageParams.h */, - 9DF92D8D2630ED7B000FC3FC /* ADJPackageParams.m */, - 0ABE89E02A8E49D40099CCF5 /* ADJPurchase.h */, - 0ABE89E12A8E49D40099CCF5 /* ADJPurchase.m */, - 0ABE89E22A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.h */, - 0ABE89E32A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.m */, - 0ABE89E42A8E49D40099CCF5 /* ADJPurchaseVerificationResult.h */, - 0ABE89DF2A8E49D40099CCF5 /* ADJPurchaseVerificationResult.m */, - 9D0E2E48210B575600133B4F /* ADJRequestHandler.h */, - 9D0E2E1D210B575600133B4F /* ADJRequestHandler.m */, - 9D0E2E26210B575600133B4F /* ADJResponseData.h */, - 9D0E2E50210B575600133B4F /* ADJResponseData.m */, - 9D0E2E3C210B575600133B4F /* ADJSdkClickHandler.h */, - 9D0E2E21210B575600133B4F /* ADJSdkClickHandler.m */, - 9D0E2E4B210B575600133B4F /* ADJSessionFailure.h */, - 9D0E2E2C210B575600133B4F /* ADJSessionFailure.m */, - 9D0E2E56210B575600133B4F /* ADJSessionParameters.h */, - 9D0E2E31210B575600133B4F /* ADJSessionParameters.m */, - 9D0E2E51210B575600133B4F /* ADJSessionSuccess.h */, - 9D0E2E27210B575600133B4F /* ADJSessionSuccess.m */, - 9D49D168290FEBD100042345 /* ADJSKAdNetwork.h */, - 9D49D169290FEBD100042345 /* ADJSKAdNetwork.m */, - 9D2F24032447DD6000B7CA90 /* ADJSubscription.h */, - 9D2F24022447DD6000B7CA90 /* ADJSubscription.m */, - 6F84511025B1B1380004C7C0 /* ADJThirdPartySharing.h */, - 6F84512325B1B1380004C7C0 /* ADJThirdPartySharing.m */, - 9D0E2E58210B575600133B4F /* ADJTimerCycle.h */, - 9D0E2E30210B575600133B4F /* ADJTimerCycle.m */, - 9D0E2E37210B575600133B4F /* ADJTimerOnce.h */, - 9D0E2E19210B575600133B4F /* ADJTimerOnce.m */, - 6FBEE93224E4232800FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE93324E4232800FEF3F1 /* ADJUrlStrategy.m */, - 9D0E2E34210B575600133B4F /* ADJUserDefaults.h */, - 9D0E2E53210B575600133B4F /* ADJUserDefaults.m */, - 9D0E2E1B210B575600133B4F /* Adjust.h */, - 9D0E2E35210B575600133B4F /* Adjust.m */, - 9D0E2E2D210B575600133B4F /* ADJUtil.h */, - 9D0E2E4A210B575600133B4F /* ADJUtil.m */, - ); - path = Adjust; - sourceTree = SOURCE_ROOT; - }; - 9D0E2E3F210B575600133B4F /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9D0E2E40210B575600133B4F /* NSString+ADJAdditions.m */, - 9D0E2E42210B575600133B4F /* NSData+ADJAdditions.m */, - 9D0E2E43210B575600133B4F /* NSData+ADJAdditions.h */, - 9D0E2E45210B575600133B4F /* NSString+ADJAdditions.h */, - 9DF3821B260E9B8D0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF3821A260E9B8D0033F5A1 /* NSNumber+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; - }; - 9D0E2E5B210B575600133B4F /* AdjustBridge */ = { - isa = PBXGroup; - children = ( - 9D0E2E69210B575600133B4F /* AdjustBridge.h */, - 9D0E2E5C210B575600133B4F /* AdjustBridge.m */, - 9D0E2E5D210B575600133B4F /* AdjustBridgeRegister.h */, - 9D0E2E6A210B575600133B4F /* AdjustBridgeRegister.m */, - 9D0E2E5E210B575600133B4F /* WebViewJavascriptBridge */, - ); - path = AdjustBridge; - sourceTree = SOURCE_ROOT; - }; - 9D0E2E5E210B575600133B4F /* WebViewJavascriptBridge */ = { - isa = PBXGroup; - children = ( - 9D0E2E63210B575600133B4F /* WebViewJavascriptBridge_JS.h */, - 9D0E2E66210B575600133B4F /* WebViewJavascriptBridge_JS.m */, - 9D0E2E68210B575600133B4F /* WKWebViewJavascriptBridge.h */, - 9D0E2E61210B575600133B4F /* WKWebViewJavascriptBridge.m */, - 9D0E2E64210B575600133B4F /* WebViewJavascriptBridgeBase.h */, - 9D0E2E5F210B575600133B4F /* WebViewJavascriptBridgeBase.m */, - ); - path = WebViewJavascriptBridge; - sourceTree = ""; - }; 9D449DAC1E6ED20400E7E80B /* Example Apps */ = { isa = PBXGroup; children = ( @@ -1963,322 +1355,267 @@ name = Products; sourceTree = ""; }; - 9DBE560823054FCC0065E19C /* Products */ = { + 9DB561722C072B060004CCAD /* Internal */ = { isa = PBXGroup; children = ( - 9DBE560C23054FCC0065E19C /* AdjustExample-ObjC.app */, + 96E5E36218BBB48A008E7B30 /* ADJActivityHandler.h */, + 96E5E36318BBB48A008E7B30 /* ADJActivityHandler.m */, + 96E5E36418BBB48A008E7B30 /* ADJActivityKind.h */, + 96E5E36518BBB48A008E7B30 /* ADJActivityKind.m */, + 96E5E36618BBB48A008E7B30 /* ADJActivityPackage.h */, + 96E5E36718BBB48A008E7B30 /* ADJActivityPackage.m */, + 96E5E36818BBB48A008E7B30 /* ADJActivityState.h */, + 96E5E36918BBB48A008E7B30 /* ADJActivityState.m */, + 9D52A31F2C071BBC00E0AA55 /* ADJAdditions.h */, + 9D52A3202C071BBC00E0AA55 /* ADJAdditions.m */, + 96E5E37118BBB48A008E7B30 /* ADJAdjustFactory.h */, + 96E5E37218BBB48A008E7B30 /* ADJAdjustFactory.m */, + 969952CD1A012F5300928462 /* ADJAttributionHandler.h */, + 969952CE1A012F5300928462 /* ADJAttributionHandler.m */, + 965B7F2E1CC78F6600098639 /* ADJBackoffStrategy.h */, + 965B7F2F1CC78F6600098639 /* ADJBackoffStrategy.m */, + 96B6710E1D788EEC0090A023 /* ADJGlobalParameters.h */, + 96B6710F1D788EEC0090A023 /* ADJGlobalParameters.m */, + 96E5E37518BBB48A008E7B30 /* ADJPackageBuilder.h */, + 96E5E37618BBB48A008E7B30 /* ADJPackageBuilder.m */, + 96E5E37718BBB48A008E7B30 /* ADJPackageHandler.h */, + 96E5E37818BBB48A008E7B30 /* ADJPackageHandler.m */, + 9DF92D812630ED02000FC3FC /* ADJPackageParams.h */, + 9DF92D822630ED02000FC3FC /* ADJPackageParams.m */, + 9D775B5F2A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h */, + 9D775B602A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.m */, + 96E5E37918BBB48A008E7B30 /* ADJRequestHandler.h */, + 96E5E37A18BBB48A008E7B30 /* ADJRequestHandler.m */, + 96FCC5361C186426007BBFE1 /* ADJResponseData.h */, + 96FCC5371C186426007BBFE1 /* ADJResponseData.m */, + 96164D701CC8FA73009431AB /* ADJSdkClickHandler.h */, + 96164D711CC8FA73009431AB /* ADJSdkClickHandler.m */, + 9DF212D22909E86A0056D579 /* ADJSKAdNetwork.h */, + 9DF212D32909E86A0056D579 /* ADJSKAdNetwork.m */, + 96854A5D1B1F278C002B2874 /* ADJTimerCycle.h */, + 96854A5E1B1F278C002B2874 /* ADJTimerCycle.m */, + 96854A571B1F2779002B2874 /* ADJTimerOnce.h */, + 96854A581B1F2779002B2874 /* ADJTimerOnce.m */, + 6FBEE8F124E2C26F00FEF3F1 /* ADJUrlStrategy.h */, + 6FBEE8F224E2C26F00FEF3F1 /* ADJUrlStrategy.m */, + 9DD0E9AC1F44690B00B2A759 /* ADJUserDefaults.h */, + 9DD0E9AD1F44690B00B2A759 /* ADJUserDefaults.m */, + 96E5E37F18BBB48A008E7B30 /* ADJUtil.h */, + 96E5E38018BBB48A008E7B30 /* ADJUtil.m */, ); - name = Products; + path = Internal; sourceTree = ""; }; - 9DE354D32100726300D211C9 /* AdjustSdkIm */ = { + 9DBE560823054FCC0065E19C /* Products */ = { isa = PBXGroup; children = ( - 9DE354D42100726300D211C9 /* AdjustSdkIm.h */, - 9DEAF0B0210072BC005CAEDB /* Adjust */, - 9DE354D52100726300D211C9 /* Info.plist */, + 9DBE560C23054FCC0065E19C /* AdjustExample-ObjC.app */, ); - path = AdjustSdkIm; + name = Products; sourceTree = ""; }; - 9DEAF0B0210072BC005CAEDB /* Adjust */ = { - isa = PBXGroup; - children = ( - 9DEAF0D9210072BC005CAEDB /* ADJAdditions */, - 9DEAF0C9210072BC005CAEDB /* ADJActivityHandler.h */, - 9DEAF0F3210072BC005CAEDB /* ADJActivityHandler.m */, - 9DEAF0BC210072BC005CAEDB /* ADJActivityKind.h */, - 9DEAF0D7210072BC005CAEDB /* ADJActivityKind.m */, - 9DEAF0B6210072BC005CAEDB /* ADJActivityPackage.h */, - 9DEAF0E3210072BC005CAEDB /* ADJActivityPackage.m */, - 9DEAF0E6210072BC005CAEDB /* ADJActivityState.h */, - 9DEAF0C5210072BC005CAEDB /* ADJActivityState.m */, - 9DEAF0C3210072BC005CAEDB /* ADJAdjustFactory.h */, - 9DEAF0E7210072BC005CAEDB /* ADJAdjustFactory.m */, - 9D3A2AC72626505800BD6E44 /* ADJAdRevenue.h */, - 9D3A2AC82626505800BD6E44 /* ADJAdRevenue.m */, - 9DEAF0B9210072BC005CAEDB /* ADJAttribution.h */, - 9DEAF0E0210072BC005CAEDB /* ADJAttribution.m */, - 9DEAF0D0210072BC005CAEDB /* ADJAttributionHandler.h */, - 9DEAF0B4210072BC005CAEDB /* ADJAttributionHandler.m */, - 9DEAF0EE210072BC005CAEDB /* ADJBackoffStrategy.h */, - 9DEAF0CD210072BC005CAEDB /* ADJBackoffStrategy.m */, - 9DEAF0B1210072BC005CAEDB /* ADJConfig.h */, - 9DEAF0D3210072BC005CAEDB /* ADJConfig.m */, - 9DEAF0D5210072BC005CAEDB /* ADJEvent.h */, - 9DEAF0BD210072BC005CAEDB /* ADJEvent.m */, - 9DEAF0E9210072BC005CAEDB /* ADJEventFailure.h */, - 9DEAF0C2210072BC005CAEDB /* ADJEventFailure.m */, - 9DEAF0E8210072BC005CAEDB /* ADJEventSuccess.h */, - 9DEAF0C4210072BC005CAEDB /* ADJEventSuccess.m */, - 6FAB78762636DCB600773869 /* ADJLinkResolution.h */, - 6FAB78772636DCB600773869 /* ADJLinkResolution.m */, - 9DEAF0EF210072BC005CAEDB /* ADJLogger.h */, - 9DEAF0CC210072BC005CAEDB /* ADJLogger.m */, - 9DEAF0BF210072BC005CAEDB /* ADJPackageBuilder.h */, - 9DEAF0EC210072BC005CAEDB /* ADJPackageBuilder.m */, - 9DEAF0BE210072BC005CAEDB /* ADJPackageHandler.h */, - 9DEAF0D4210072BC005CAEDB /* ADJPackageHandler.m */, - 9DF92D892630ED59000FC3FC /* ADJPackageParams.h */, - 9DF92D8A2630ED59000FC3FC /* ADJPackageParams.m */, - 0ABE89C72A8E49B50099CCF5 /* ADJPurchase.h */, - 0ABE89CA2A8E49B50099CCF5 /* ADJPurchase.m */, - 0ABE89CC2A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.h */, - 0ABE89C82A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.m */, - 0ABE89C92A8E49B50099CCF5 /* ADJPurchaseVerificationResult.h */, - 0ABE89CB2A8E49B50099CCF5 /* ADJPurchaseVerificationResult.m */, - 9DEAF0E2210072BC005CAEDB /* ADJRequestHandler.h */, - 9DEAF0B7210072BC005CAEDB /* ADJRequestHandler.m */, - 9DEAF0C0210072BC005CAEDB /* ADJResponseData.h */, - 9DEAF0EA210072BC005CAEDB /* ADJResponseData.m */, - 9DEAF0D6210072BC005CAEDB /* ADJSdkClickHandler.h */, - 9DEAF0BB210072BC005CAEDB /* ADJSdkClickHandler.m */, - 9DEAF0E5210072BC005CAEDB /* ADJSessionFailure.h */, - 9DEAF0C6210072BC005CAEDB /* ADJSessionFailure.m */, - 9DEAF0F0210072BC005CAEDB /* ADJSessionParameters.h */, - 9DEAF0CB210072BC005CAEDB /* ADJSessionParameters.m */, - 9DEAF0EB210072BC005CAEDB /* ADJSessionSuccess.h */, - 9DEAF0C1210072BC005CAEDB /* ADJSessionSuccess.m */, - 9D49D160290FEBB200042345 /* ADJSKAdNetwork.h */, - 9D49D161290FEBB200042345 /* ADJSKAdNetwork.m */, - 9D2F23FA2447DD2500B7CA90 /* ADJSubscription.h */, - 9D2F23FB2447DD2500B7CA90 /* ADJSubscription.m */, - 9D651C8625B26DF4006D69D6 /* ADJThirdPartySharing.h */, - 9D651C8725B26DF5006D69D6 /* ADJThirdPartySharing.m */, - 9DEAF0F2210072BC005CAEDB /* ADJTimerCycle.h */, - 9DEAF0CA210072BC005CAEDB /* ADJTimerCycle.m */, - 9DEAF0D1210072BC005CAEDB /* ADJTimerOnce.h */, - 9DEAF0B3210072BC005CAEDB /* ADJTimerOnce.m */, - 6FBEE92A24E4230700FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE92B24E4230700FEF3F1 /* ADJUrlStrategy.m */, - 9DEAF0CE210072BC005CAEDB /* ADJUserDefaults.h */, - 9DEAF0ED210072BC005CAEDB /* ADJUserDefaults.m */, - 9DEAF0B5210072BC005CAEDB /* Adjust.h */, - 9DEAF0CF210072BC005CAEDB /* Adjust.m */, - 9DEAF0C7210072BC005CAEDB /* ADJUtil.h */, - 9DEAF0E4210072BC005CAEDB /* ADJUtil.m */, +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0A584B9E2C3E93E00071A651 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 07D5CAC52C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */, + 07000F922C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */, + 07D5CB0E2C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */, + 0A584B9F2C3E93EF0071A651 /* AdjustBridge.h in Headers */, ); - path = Adjust; - sourceTree = SOURCE_ROOT; - }; - 9DEAF0D9210072BC005CAEDB /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DEAF0DA210072BC005CAEDB /* NSString+ADJAdditions.m */, - 9DEAF0DC210072BC005CAEDB /* NSData+ADJAdditions.m */, - 9DEAF0DD210072BC005CAEDB /* NSData+ADJAdditions.h */, - 9DEAF0DF210072BC005CAEDB /* NSString+ADJAdditions.h */, - 9DF38201260E9B0A0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF38200260E9B0A0033F5A1 /* NSNumber+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9DF9C8C81D6F3CA5008E362F /* Adjust */ = { - isa = PBXGroup; - children = ( - 9DF9C8D11D6F3CA5008E362F /* ADJAdditions */, - 9DF9C8C91D6F3CA5008E362F /* ADJActivityHandler.h */, - 9DF9C8CA1D6F3CA5008E362F /* ADJActivityHandler.m */, - 9DF9C8CB1D6F3CA5008E362F /* ADJActivityKind.h */, - 9DF9C8CC1D6F3CA5008E362F /* ADJActivityKind.m */, - 9DF9C8CD1D6F3CA5008E362F /* ADJActivityPackage.h */, - 9DF9C8CE1D6F3CA5008E362F /* ADJActivityPackage.m */, - 9DF9C8CF1D6F3CA5008E362F /* ADJActivityState.h */, - 9DF9C8D01D6F3CA5008E362F /* ADJActivityState.m */, - 9DF9C8D81D6F3CA5008E362F /* ADJAdjustFactory.h */, - 9DF9C8D91D6F3CA5008E362F /* ADJAdjustFactory.m */, - 9DF9C8DA1D6F3CA5008E362F /* ADJAttribution.h */, - 9DF9C8DB1D6F3CA5008E362F /* ADJAttribution.m */, - 9DF9C8DC1D6F3CA5008E362F /* ADJAttributionHandler.h */, - 9DF9C8DD1D6F3CA5008E362F /* ADJAttributionHandler.m */, - 9DF9C8DE1D6F3CA5008E362F /* ADJBackoffStrategy.h */, - 9DF9C8DF1D6F3CA5008E362F /* ADJBackoffStrategy.m */, - 9DF9C8E01D6F3CA5008E362F /* ADJConfig.h */, - 9DF9C8E11D6F3CA5008E362F /* ADJConfig.m */, - 9DF9C8E41D6F3CA5008E362F /* ADJEvent.h */, - 9DF9C8E51D6F3CA5008E362F /* ADJEvent.m */, - 9DF9C8E61D6F3CA5008E362F /* ADJEventFailure.h */, - 9DF9C8E71D6F3CA5008E362F /* ADJEventFailure.m */, - 9DF9C8E81D6F3CA5008E362F /* ADJEventSuccess.h */, - 9DF9C8E91D6F3CA5008E362F /* ADJEventSuccess.m */, - 9DF9C8EC1D6F3CA5008E362F /* ADJLogger.h */, - 9DF9C8ED1D6F3CA5008E362F /* ADJLogger.m */, - 9DF9C8EE1D6F3CA5008E362F /* ADJPackageBuilder.h */, - 9DF9C8EF1D6F3CA5008E362F /* ADJPackageBuilder.m */, - 9DF92D852630ED3D000FC3FC /* ADJPackageParams.h */, - 9DF92D862630ED3D000FC3FC /* ADJPackageParams.m */, - 9DF9C8F01D6F3CA5008E362F /* ADJPackageHandler.h */, - 9DF9C8F11D6F3CA5008E362F /* ADJPackageHandler.m */, - 9DF9C8F21D6F3CA5008E362F /* ADJRequestHandler.h */, - 9DF9C8F31D6F3CA5008E362F /* ADJRequestHandler.m */, - 9DF9C8F41D6F3CA5008E362F /* ADJResponseData.h */, - 9DF9C8F51D6F3CA5008E362F /* ADJResponseData.m */, - 9DF9C8F61D6F3CA5008E362F /* ADJSdkClickHandler.h */, - 9DF9C8F71D6F3CA5008E362F /* ADJSdkClickHandler.m */, - 9DF9C8F81D6F3CA5008E362F /* ADJSessionFailure.h */, - 9DF9C8F91D6F3CA5008E362F /* ADJSessionFailure.m */, - 9DF9C8FA1D6F3CA5008E362F /* ADJSessionSuccess.h */, - 9DF9C8FB1D6F3CA5008E362F /* ADJSessionSuccess.m */, - 9DF9C8FE1D6F3CA5008E362F /* ADJTimerCycle.h */, - 9DF9C8FF1D6F3CA5008E362F /* ADJTimerCycle.m */, - 9DF9C9001D6F3CA5008E362F /* ADJTimerOnce.h */, - 9DF9C9011D6F3CA5008E362F /* ADJTimerOnce.m */, - 9DF9C9041D6F3CA5008E362F /* Adjust.h */, - 9DF9C9051D6F3CA5008E362F /* Adjust.m */, - 9DF9C9061D6F3CA5008E362F /* ADJUtil.h */, - 9DF9C9071D6F3CA5008E362F /* ADJUtil.m */, - 96B671121D788F4A0090A023 /* ADJSessionParameters.h */, - 96B671131D788F4A0090A023 /* ADJSessionParameters.m */, - 9D2F23F72447DCE800B7CA90 /* ADJSubscription.h */, - 9D2F23F62447DCE800B7CA90 /* ADJSubscription.m */, - 6FBEE92524E422EB00FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE92424E422EB00FEF3F1 /* ADJUrlStrategy.m */, - 6FBE0C6C2577CDAC00EC2CE0 /* ADJThirdPartySharing.h */, - 6FBE0C6D2577CDAC00EC2CE0 /* ADJThirdPartySharing.m */, - 9D3A2AC42626501D00BD6E44 /* ADJAdRevenue.h */, - 9D3A2AC32626501D00BD6E44 /* ADJAdRevenue.m */, - 6FAB78692636DC8400773869 /* ADJLinkResolution.h */, - 6FAB786A2636DC8400773869 /* ADJLinkResolution.m */, - 9D49D14A290FEBA200042345 /* ADJSKAdNetwork.h */, - 9D49D15D290FEBA200042345 /* ADJSKAdNetwork.m */, - 0ABE89BE2A8E49500099CCF5 /* ADJPurchase.h */, - 0ABE89BF2A8E49500099CCF5 /* ADJPurchase.m */, - 0ABE89C02A8E49500099CCF5 /* ADJPurchaseVerificationHandler.h */, - 0ABE89BB2A8E49500099CCF5 /* ADJPurchaseVerificationHandler.m */, - 0ABE89BC2A8E49500099CCF5 /* ADJPurchaseVerificationResult.h */, - 0ABE89BD2A8E49500099CCF5 /* ADJPurchaseVerificationResult.m */, + 0A584CDA2C3E95940071A651 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A584CDB2C3E95B10071A651 /* ADJAdRevenue.h in Headers */, + 0A584CDC2C3E95B10071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584CDD2C3E95B10071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584CDE2C3E95B10071A651 /* ADJAttribution.h in Headers */, + 0A584CDF2C3E95B10071A651 /* ADJConfig.h in Headers */, + 0A584CE02C3E95B10071A651 /* ADJEvent.h in Headers */, + 0A584CE12C3E95B10071A651 /* ADJEventFailure.h in Headers */, + 0A584CE22C3E95B10071A651 /* ADJEventSuccess.h in Headers */, + 0A584CE32C3E95B10071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DF62C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584CE42C3E95B10071A651 /* ADJLogger.h in Headers */, + 0A584CE52C3E95B10071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584CE62C3E95B10071A651 /* ADJSessionFailure.h in Headers */, + 0A584CE72C3E95B10071A651 /* ADJSessionSuccess.h in Headers */, + 0A584CE82C3E95B10071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584CE92C3E95B10071A651 /* Adjust.h in Headers */, + 0A584CEA2C3E95B10071A651 /* AdjustSdk.h in Headers */, + 0A584CEB2C3E95BF0071A651 /* ADJActivityHandler.h in Headers */, + 0A584CEC2C3E95BF0071A651 /* ADJActivityKind.h in Headers */, + 0A584CED2C3E95BF0071A651 /* ADJActivityPackage.h in Headers */, + 0A584CEE2C3E95BF0071A651 /* ADJActivityState.h in Headers */, + 0A584CEF2C3E95BF0071A651 /* ADJAdditions.h in Headers */, + 0A584CF02C3E95BF0071A651 /* ADJAdjustFactory.h in Headers */, + 0A584CF12C3E95BF0071A651 /* ADJAttributionHandler.h in Headers */, + 0A584CF22C3E95BF0071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584CF32C3E95BF0071A651 /* ADJGlobalParameters.h in Headers */, + 0A584CF42C3E95BF0071A651 /* ADJPackageBuilder.h in Headers */, + 0A584CF52C3E95BF0071A651 /* ADJPackageHandler.h in Headers */, + 0A584CF62C3E95BF0071A651 /* ADJPackageParams.h in Headers */, + 0A584CF72C3E95BF0071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584CF82C3E95BF0071A651 /* ADJRequestHandler.h in Headers */, + 0A584CF92C3E95BF0071A651 /* ADJResponseData.h in Headers */, + 0A584CFA2C3E95BF0071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584CFB2C3E95BF0071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584CFC2C3E95BF0071A651 /* ADJTimerCycle.h in Headers */, + 0A584CFD2C3E95BF0071A651 /* ADJTimerOnce.h in Headers */, + 0A584CFE2C3E95BF0071A651 /* ADJUrlStrategy.h in Headers */, + 0A584CFF2C3E95BF0071A651 /* ADJUserDefaults.h in Headers */, + 0A584D002C3E95BF0071A651 /* ADJUtil.h in Headers */, ); - path = Adjust; - sourceTree = SOURCE_ROOT; - }; - 9DF9C8D11D6F3CA5008E362F /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF9C8D21D6F3CA5008E362F /* NSData+ADJAdditions.h */, - 9DF9C8D31D6F3CA5008E362F /* NSData+ADJAdditions.m */, - 9DF9C8D41D6F3CA5008E362F /* NSString+ADJAdditions.h */, - 9DF9C8D51D6F3CA5008E362F /* NSString+ADJAdditions.m */, - 9DF381F4260E9AF50033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF381F3260E9AF50033F5A1 /* NSNumber+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9DFA37AE1C0F219400782607 /* AdjustSdk */ = { - isa = PBXGroup; - children = ( - 9DFA37B51C0F21D600782607 /* AdjustSdk.h */, - 9DF9C8C81D6F3CA5008E362F /* Adjust */, - 9DFA37B61C0F21D600782607 /* Info.plist */, + 0A584D012C3E96090071A651 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A584D022C3E96250071A651 /* ADJAdRevenue.h in Headers */, + 0A584D032C3E96250071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584D042C3E96250071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584D052C3E96250071A651 /* ADJAttribution.h in Headers */, + 0A584D062C3E96250071A651 /* ADJConfig.h in Headers */, + 0A584D072C3E96250071A651 /* ADJEvent.h in Headers */, + 0A584D082C3E96250071A651 /* ADJEventFailure.h in Headers */, + 0A584D092C3E96250071A651 /* ADJEventSuccess.h in Headers */, + 0A584D0A2C3E96250071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DF92C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584D0B2C3E96250071A651 /* ADJLogger.h in Headers */, + 0A584D0C2C3E96250071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584D0D2C3E96250071A651 /* ADJSessionFailure.h in Headers */, + 0A584D0E2C3E96250071A651 /* ADJSessionSuccess.h in Headers */, + 0A584D0F2C3E96250071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584D102C3E96250071A651 /* Adjust.h in Headers */, + 0A584D112C3E96250071A651 /* AdjustSdk.h in Headers */, + 0A584D122C3E96390071A651 /* ADJActivityHandler.h in Headers */, + 0A584D132C3E96390071A651 /* ADJActivityKind.h in Headers */, + 0A584D142C3E96390071A651 /* ADJActivityPackage.h in Headers */, + 0A584D152C3E96390071A651 /* ADJActivityState.h in Headers */, + 0A584D162C3E96390071A651 /* ADJAdditions.h in Headers */, + 0A584D172C3E96390071A651 /* ADJAdjustFactory.h in Headers */, + 0A584D182C3E96390071A651 /* ADJAttributionHandler.h in Headers */, + 0A584D192C3E96390071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584D1A2C3E96390071A651 /* ADJGlobalParameters.h in Headers */, + 0A584D1B2C3E96390071A651 /* ADJPackageBuilder.h in Headers */, + 0A584D1C2C3E96390071A651 /* ADJPackageHandler.h in Headers */, + 0A584D1D2C3E96390071A651 /* ADJPackageParams.h in Headers */, + 0A584D1E2C3E96390071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584D1F2C3E96390071A651 /* ADJRequestHandler.h in Headers */, + 0A584D202C3E96390071A651 /* ADJResponseData.h in Headers */, + 0A584D212C3E96390071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584D222C3E96390071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584D232C3E96390071A651 /* ADJTimerCycle.h in Headers */, + 0A584D242C3E96390071A651 /* ADJTimerOnce.h in Headers */, + 0A584D252C3E96390071A651 /* ADJUrlStrategy.h in Headers */, + 0A584D262C3E96390071A651 /* ADJUserDefaults.h in Headers */, + 0A584D272C3E96390071A651 /* ADJUtil.h in Headers */, ); - path = AdjustSdk; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9DFB06111D747070006D48FC /* AdjustSdkTv */ = { - isa = PBXGroup; - children = ( - 9DFB06121D747070006D48FC /* AdjustSdkTv.h */, - 9DFB06191D7470C0006D48FC /* Adjust */, - 9DFB06141D747070006D48FC /* Info.plist */, + 0A584D282C3E967D0071A651 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A584D292C3E968A0071A651 /* ADJAdRevenue.h in Headers */, + 0A584D2A2C3E968A0071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584D2B2C3E968A0071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584D2C2C3E968A0071A651 /* ADJAttribution.h in Headers */, + 0A584D2D2C3E968A0071A651 /* ADJConfig.h in Headers */, + 0A584D2E2C3E968A0071A651 /* ADJEvent.h in Headers */, + 0A584D2F2C3E968A0071A651 /* ADJEventFailure.h in Headers */, + 0A584D302C3E968A0071A651 /* ADJEventSuccess.h in Headers */, + 0A584D312C3E968A0071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DFA2C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584D322C3E968A0071A651 /* ADJLogger.h in Headers */, + 0A584D332C3E968A0071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584D342C3E968A0071A651 /* ADJSessionFailure.h in Headers */, + 0A584D352C3E968A0071A651 /* ADJSessionSuccess.h in Headers */, + 0A584D362C3E968A0071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584D372C3E968A0071A651 /* Adjust.h in Headers */, + 0A584D382C3E968A0071A651 /* AdjustSdk.h in Headers */, + 0A584D392C3E96960071A651 /* ADJActivityHandler.h in Headers */, + 0A584D3A2C3E96960071A651 /* ADJActivityKind.h in Headers */, + 0A584D3B2C3E96960071A651 /* ADJActivityPackage.h in Headers */, + 0A584D3C2C3E96960071A651 /* ADJActivityState.h in Headers */, + 0A584D3D2C3E96960071A651 /* ADJAdditions.h in Headers */, + 0A584D3E2C3E96960071A651 /* ADJAdjustFactory.h in Headers */, + 0A584D3F2C3E96960071A651 /* ADJAttributionHandler.h in Headers */, + 0A584D402C3E96960071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584D412C3E96960071A651 /* ADJGlobalParameters.h in Headers */, + 0A584D422C3E96960071A651 /* ADJPackageBuilder.h in Headers */, + 0A584D432C3E96960071A651 /* ADJPackageHandler.h in Headers */, + 0A584D442C3E96960071A651 /* ADJPackageParams.h in Headers */, + 0A584D452C3E96960071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584D462C3E96960071A651 /* ADJRequestHandler.h in Headers */, + 0A584D472C3E96960071A651 /* ADJResponseData.h in Headers */, + 0A584D482C3E96960071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584D492C3E96960071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584D4A2C3E96960071A651 /* ADJTimerCycle.h in Headers */, + 0A584D4B2C3E96960071A651 /* ADJTimerOnce.h in Headers */, + 0A584D4C2C3E96960071A651 /* ADJUrlStrategy.h in Headers */, + 0A584D4D2C3E96960071A651 /* ADJUserDefaults.h in Headers */, + 0A584D4E2C3E96960071A651 /* ADJUtil.h in Headers */, ); - path = AdjustSdkTv; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9DFB06191D7470C0006D48FC /* Adjust */ = { - isa = PBXGroup; - children = ( - 9DFB06221D7470C0006D48FC /* ADJAdditions */, - 9DFB061A1D7470C0006D48FC /* ADJActivityHandler.h */, - 9DFB061B1D7470C0006D48FC /* ADJActivityHandler.m */, - 9DFB061C1D7470C0006D48FC /* ADJActivityKind.h */, - 9DFB061D1D7470C0006D48FC /* ADJActivityKind.m */, - 9DFB061E1D7470C0006D48FC /* ADJActivityPackage.h */, - 9DFB061F1D7470C0006D48FC /* ADJActivityPackage.m */, - 9DFB06201D7470C0006D48FC /* ADJActivityState.h */, - 9DFB06211D7470C0006D48FC /* ADJActivityState.m */, - 9DFB06291D7470C0006D48FC /* ADJAdjustFactory.h */, - 9DFB062A1D7470C0006D48FC /* ADJAdjustFactory.m */, - 9DFB062B1D7470C0006D48FC /* ADJAttribution.h */, - 9DFB062C1D7470C0006D48FC /* ADJAttribution.m */, - 9DFB062D1D7470C0006D48FC /* ADJAttributionHandler.h */, - 9DFB062E1D7470C0006D48FC /* ADJAttributionHandler.m */, - 9DFB062F1D7470C0006D48FC /* ADJBackoffStrategy.h */, - 9DFB06301D7470C0006D48FC /* ADJBackoffStrategy.m */, - 9DFB06311D7470C0006D48FC /* ADJConfig.h */, - 9DFB06321D7470C0006D48FC /* ADJConfig.m */, - 9DFB06331D7470C0006D48FC /* ADJPackageParams.h */, - 9DFB06341D7470C0006D48FC /* ADJPackageParams.m */, - 9DFB06351D7470C0006D48FC /* ADJEvent.h */, - 9DFB06361D7470C0006D48FC /* ADJEvent.m */, - 9DFB06371D7470C0006D48FC /* ADJEventFailure.h */, - 9DFB06381D7470C0006D48FC /* ADJEventFailure.m */, - 9DFB06391D7470C0006D48FC /* ADJEventSuccess.h */, - 9DFB063A1D7470C0006D48FC /* ADJEventSuccess.m */, - 9DFB063D1D7470C0006D48FC /* ADJLogger.h */, - 9DFB063E1D7470C0006D48FC /* ADJLogger.m */, - 9DFB063F1D7470C0006D48FC /* ADJPackageBuilder.h */, - 9DFB06401D7470C0006D48FC /* ADJPackageBuilder.m */, - 9DFB06411D7470C0006D48FC /* ADJPackageHandler.h */, - 9DFB06421D7470C0006D48FC /* ADJPackageHandler.m */, - 9DFB06431D7470C0006D48FC /* ADJRequestHandler.h */, - 9DFB06441D7470C0006D48FC /* ADJRequestHandler.m */, - 9DFB06451D7470C0006D48FC /* ADJResponseData.h */, - 9DFB06461D7470C0006D48FC /* ADJResponseData.m */, - 9DFB06471D7470C0006D48FC /* ADJSdkClickHandler.h */, - 9DFB06481D7470C0006D48FC /* ADJSdkClickHandler.m */, - 9DFB06491D7470C0006D48FC /* ADJSessionFailure.h */, - 9DFB064A1D7470C0006D48FC /* ADJSessionFailure.m */, - 9DFB064B1D7470C0006D48FC /* ADJSessionSuccess.h */, - 9DFB064C1D7470C0006D48FC /* ADJSessionSuccess.m */, - 9DFB064F1D7470C0006D48FC /* ADJTimerCycle.h */, - 9DFB06501D7470C0006D48FC /* ADJTimerCycle.m */, - 9DFB06511D7470C0006D48FC /* ADJTimerOnce.h */, - 9DFB06521D7470C0006D48FC /* ADJTimerOnce.m */, - 9DFB06551D7470C0006D48FC /* Adjust.h */, - 9DFB06561D7470C0006D48FC /* Adjust.m */, - 9DFB06571D7470C0006D48FC /* ADJUtil.h */, - 9DFB06581D7470C0006D48FC /* ADJUtil.m */, - 96B671161D788F7A0090A023 /* ADJSessionParameters.h */, - 96B671171D788F7A0090A023 /* ADJSessionParameters.m */, - 9D2F23FE2447DD3600B7CA90 /* ADJSubscription.h */, - 9D2F23FF2447DD3700B7CA90 /* ADJSubscription.m */, - 6FBEE92E24E4231300FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE92F24E4231300FEF3F1 /* ADJUrlStrategy.m */, - 9D651C9425B26E1B006D69D6 /* ADJThirdPartySharing.h */, - 9D651C9325B26E1B006D69D6 /* ADJThirdPartySharing.m */, - 9D3A2ACB2626508F00BD6E44 /* ADJAdRevenue.h */, - 9D3A2ACC2626508F00BD6E44 /* ADJAdRevenue.m */, - 6FAB78832636DCCD00773869 /* ADJLinkResolution.h */, - 6FAB78842636DCCD00773869 /* ADJLinkResolution.m */, - 9D49D164290FEBC000042345 /* ADJSKAdNetwork.h */, - 9D49D165290FEBC000042345 /* ADJSKAdNetwork.m */, - 0ABE89D42A8E49C20099CCF5 /* ADJPurchase.h */, - 0ABE89D32A8E49C20099CCF5 /* ADJPurchase.m */, - 0ABE89D52A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.h */, - 0ABE89D62A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.m */, - 0ABE89D72A8E49C20099CCF5 /* ADJPurchaseVerificationResult.h */, - 0ABE89D82A8E49C20099CCF5 /* ADJPurchaseVerificationResult.m */, + 0A584D4F2C3E96B90071A651 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A584D502C3E96C70071A651 /* ADJAdRevenue.h in Headers */, + 0A584D512C3E96C70071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584D522C3E96C70071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584D532C3E96C70071A651 /* ADJAttribution.h in Headers */, + 0A584D542C3E96C70071A651 /* ADJConfig.h in Headers */, + 07D5CAC72C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */, + 0A584D552C3E96C70071A651 /* ADJEvent.h in Headers */, + 0A584D562C3E96C70071A651 /* ADJEventFailure.h in Headers */, + 0A584D572C3E96C70071A651 /* ADJEventSuccess.h in Headers */, + 0A584D582C3E96C70071A651 /* ADJLinkResolution.h in Headers */, + 0A584D592C3E96C70071A651 /* ADJLogger.h in Headers */, + 0A584D5A2C3E96C70071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584D5B2C3E96C70071A651 /* ADJSessionFailure.h in Headers */, + 0A584D5C2C3E96C70071A651 /* ADJSessionSuccess.h in Headers */, + 0A584D5D2C3E96C70071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584D5E2C3E96C70071A651 /* Adjust.h in Headers */, + 0A584D602C3E96E20071A651 /* AdjustBridge.h in Headers */, + 0A584D5F2C3E96C70071A651 /* AdjustSdk.h in Headers */, + 0A584D652C3E97020071A651 /* ADJActivityHandler.h in Headers */, + 0A584D662C3E97020071A651 /* ADJActivityKind.h in Headers */, + 0A584D672C3E97020071A651 /* ADJActivityPackage.h in Headers */, + 0A584D682C3E97020071A651 /* ADJActivityState.h in Headers */, + 0A584D692C3E97020071A651 /* ADJAdditions.h in Headers */, + 0A584D6A2C3E97020071A651 /* ADJAdjustFactory.h in Headers */, + 0A584D6B2C3E97020071A651 /* ADJAttributionHandler.h in Headers */, + 0A584D6C2C3E97020071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584D6D2C3E97020071A651 /* ADJGlobalParameters.h in Headers */, + 07000F942C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */, + 0A584D6E2C3E97020071A651 /* ADJPackageBuilder.h in Headers */, + 0A584D6F2C3E97020071A651 /* ADJPackageHandler.h in Headers */, + 0A584D702C3E97020071A651 /* ADJPackageParams.h in Headers */, + 0A584D712C3E97020071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584D722C3E97020071A651 /* ADJRequestHandler.h in Headers */, + 0A584D732C3E97020071A651 /* ADJResponseData.h in Headers */, + 0A584D742C3E97020071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584D752C3E97020071A651 /* ADJSKAdNetwork.h in Headers */, + 07D5CB102C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */, + 0A584D762C3E97020071A651 /* ADJTimerCycle.h in Headers */, + 0A584D772C3E97020071A651 /* ADJTimerOnce.h in Headers */, + 0A584D782C3E97020071A651 /* ADJUrlStrategy.h in Headers */, + 0A584D792C3E97020071A651 /* ADJUserDefaults.h in Headers */, + 9D7D3DFC2C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584D7A2C3E97020071A651 /* ADJUtil.h in Headers */, ); - path = Adjust; - sourceTree = SOURCE_ROOT; - }; - 9DFB06221D7470C0006D48FC /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DFB06231D7470C0006D48FC /* NSData+ADJAdditions.h */, - 9DFB06241D7470C0006D48FC /* NSData+ADJAdditions.m */, - 9DFB06251D7470C0006D48FC /* NSString+ADJAdditions.h */, - 9DFB06261D7470C0006D48FC /* NSString+ADJAdditions.m */, - 9DF3820D260E9B740033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF3820E260E9B740033F5A1 /* NSNumber+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ 96BCFBCC1AC9920E005A65C5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2286,23 +1623,23 @@ 96BCFBCD1AC99231005A65C5 /* Adjust.h in Headers */, 96BCFBCE1AC99235005A65C5 /* ADJEvent.h in Headers */, 96BCFBD01AC9923F005A65C5 /* ADJConfig.h in Headers */, - 6FBEE92824E422EB00FEF3F1 /* ADJUrlStrategy.h in Headers */, 9D363AC31BDA50FA00B47FE9 /* ADJLogger.h in Headers */, 96BCFBD11AC99246005A65C5 /* ADJAttribution.h in Headers */, 9DF212D42909E86A0056D579 /* ADJSKAdNetwork.h in Headers */, - 9DF381BD260E990B0033F5A1 /* NSNumber+ADJAdditions.h in Headers */, - 9D2F23E22447CE5C00B7CA90 /* ADJSubscription.h in Headers */, + 9D2F23E22447CE5C00B7CA90 /* ADJAppStoreSubscription.h in Headers */, 9601CAE81C74BAAE00670879 /* ADJEventFailure.h in Headers */, + 9D52A3212C071BBC00E0AA55 /* ADJAdditions.h in Headers */, + 9D7D3DEC2C49A8B200FACB18 /* ADJDeeplink.h in Headers */, 968173871C3C2D36002AE1DE /* ADJSessionFailure.h in Headers */, 968173831C3C2D07002AE1DE /* ADJSessionSuccess.h in Headers */, 9DF92D832630ED02000FC3FC /* ADJPackageParams.h in Headers */, 9601CAE41C74B70600670879 /* ADJEventSuccess.h in Headers */, 9D3A2ABF2625BEB800BD6E44 /* ADJAdRevenue.h in Headers */, + 9DB561852C072BA10004CCAD /* ADJUrlStrategy.h in Headers */, + 0A584B9D2C3E937E0071A651 /* AdjustSdk.h in Headers */, 6FAB784C2636DC0E00773869 /* ADJLinkResolution.h in Headers */, 9D651BF625B25A64006D69D6 /* ADJThirdPartySharing.h in Headers */, - 9D775B3E2A1F4B19009D0BE8 /* ADJPurchase.h in Headers */, - 96BCFBD41AC99338005A65C5 /* NSData+ADJAdditions.h in Headers */, - 96BCFBD21AC99332005A65C5 /* NSString+ADJAdditions.h in Headers */, + 9D775B3E2A1F4B19009D0BE8 /* ADJAppStorePurchase.h in Headers */, 96BCFBD51AC9933E005A65C5 /* ADJActivityHandler.h in Headers */, 9DD0E9AE1F44690B00B2A759 /* ADJUserDefaults.h in Headers */, 96BCFBD61AC99345005A65C5 /* ADJActivityKind.h in Headers */, @@ -2320,7 +1657,7 @@ 96FCC53A1C186426007BBFE1 /* ADJResponseData.h in Headers */, 965B7F301CC78F6600098639 /* ADJBackoffStrategy.h in Headers */, 96164D721CC8FA73009431AB /* ADJSdkClickHandler.h in Headers */, - 96B671101D788EEC0090A023 /* ADJSessionParameters.h in Headers */, + 96B671101D788EEC0090A023 /* ADJGlobalParameters.h in Headers */, 9D775B612A1F9CC5009D0BE8 /* ADJPurchaseVerificationHandler.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2329,51 +1666,49 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9D0E2E06210B570600133B4F /* AdjustSdkWebBridge.h in Headers */, - 9D0E2EBA210B575600133B4F /* AdjustBridge.h in Headers */, - 9D0E2EAF210B575600133B4F /* AdjustBridgeRegister.h in Headers */, - 9D0E2EB9210B575600133B4F /* WKWebViewJavascriptBridge.h in Headers */, - 9D0E2EB4210B575600133B4F /* WebViewJavascriptBridge_JS.h in Headers */, - 9D0E2EB5210B575600133B4F /* WebViewJavascriptBridgeBase.h in Headers */, - 9D0E2E6F210B575600133B4F /* Adjust.h in Headers */, - 9D0E2E6B210B575600133B4F /* ADJConfig.h in Headers */, - 9D0E2E8F210B575600133B4F /* ADJEvent.h in Headers */, - 9D0E2E73210B575600133B4F /* ADJAttribution.h in Headers */, - 9D2F24052447DD6000B7CA90 /* ADJSubscription.h in Headers */, - 9DF3821D260E9B8D0033F5A1 /* NSNumber+ADJAdditions.h in Headers */, - 9D0E2EA2210B575600133B4F /* ADJEventFailure.h in Headers */, - 9D0E2EA1210B575600133B4F /* ADJEventSuccess.h in Headers */, - 9D0E2E9E210B575600133B4F /* ADJSessionFailure.h in Headers */, - 9D0E2EA4210B575600133B4F /* ADJSessionSuccess.h in Headers */, - 9D0E2EA8210B575600133B4F /* ADJLogger.h in Headers */, - 9D3A2AD1262650C300BD6E44 /* ADJAdRevenue.h in Headers */, - 6FAB78932636DCE700773869 /* ADJLinkResolution.h in Headers */, - 6F84512425B1B1380004C7C0 /* ADJThirdPartySharing.h in Headers */, - 0ABE89E82A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */, - 0ABE89E62A8E49D40099CCF5 /* ADJPurchase.h in Headers */, - 0ABE89EA2A8E49D40099CCF5 /* ADJPurchaseVerificationResult.h in Headers */, - 9D49D16A290FEBD100042345 /* ADJSKAdNetwork.h in Headers */, - 9D0E2E7D210B575600133B4F /* ADJAdjustFactory.h in Headers */, - 9D0E2E76210B575600133B4F /* ADJActivityKind.h in Headers */, - 9D0E2E88210B575600133B4F /* ADJUserDefaults.h in Headers */, - 9D0E2E8B210B575600133B4F /* ADJTimerOnce.h in Headers */, - 9DF92D902630ED7B000FC3FC /* ADJPackageParams.h in Headers */, - 9D0E2EAB210B575600133B4F /* ADJTimerCycle.h in Headers */, - 9D0E2E7A210B575600133B4F /* ADJResponseData.h in Headers */, - 9D0E2E98210B575600133B4F /* NSString+ADJAdditions.h in Headers */, - 9D0E2EA7210B575600133B4F /* ADJBackoffStrategy.h in Headers */, - 6FBEE93424E4232800FEF3F1 /* ADJUrlStrategy.h in Headers */, - 9D0E2E90210B575600133B4F /* ADJSdkClickHandler.h in Headers */, - 9D0E2E81210B575600133B4F /* ADJUtil.h in Headers */, - 9D0E2E78210B575600133B4F /* ADJPackageHandler.h in Headers */, - 9D0E2EA9210B575600133B4F /* ADJSessionParameters.h in Headers */, - 9D0E2E9B210B575600133B4F /* ADJRequestHandler.h in Headers */, - 9D0E2E83210B575600133B4F /* ADJActivityHandler.h in Headers */, - 9D0E2E79210B575600133B4F /* ADJPackageBuilder.h in Headers */, - 9D0E2E70210B575600133B4F /* ADJActivityPackage.h in Headers */, - 9D0E2E8A210B575600133B4F /* ADJAttributionHandler.h in Headers */, - 9D0E2E96210B575600133B4F /* NSData+ADJAdditions.h in Headers */, - 9D0E2E9F210B575600133B4F /* ADJActivityState.h in Headers */, + 0A584CAF2C3E95560071A651 /* ADJAdRevenue.h in Headers */, + 0A584CB02C3E95560071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584CB12C3E95560071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584CB22C3E95560071A651 /* ADJAttribution.h in Headers */, + 0A584CB32C3E95560071A651 /* ADJConfig.h in Headers */, + 07D5CAC62C50EF3100C112DC /* AdjustBridgeRegister.h in Headers */, + 0A584CB42C3E95560071A651 /* ADJEvent.h in Headers */, + 0A584CB52C3E95560071A651 /* ADJEventFailure.h in Headers */, + 0A584CB62C3E95560071A651 /* ADJEventSuccess.h in Headers */, + 0A584CB72C3E95570071A651 /* ADJLinkResolution.h in Headers */, + 0A584CB82C3E95570071A651 /* ADJLogger.h in Headers */, + 0A584CB92C3E95570071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584CBA2C3E95570071A651 /* ADJSessionFailure.h in Headers */, + 0A584CBB2C3E95570071A651 /* ADJSessionSuccess.h in Headers */, + 0A584CBC2C3E95570071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584CBD2C3E95570071A651 /* Adjust.h in Headers */, + 0A584CBE2C3E95570071A651 /* AdjustBridge.h in Headers */, + 0A584CC32C3E95570071A651 /* AdjustSdk.h in Headers */, + 0A584CC42C3E95700071A651 /* ADJActivityHandler.h in Headers */, + 0A584CC52C3E95700071A651 /* ADJActivityKind.h in Headers */, + 0A584CC62C3E95700071A651 /* ADJActivityPackage.h in Headers */, + 0A584CC72C3E95700071A651 /* ADJActivityState.h in Headers */, + 0A584CC82C3E95700071A651 /* ADJAdditions.h in Headers */, + 0A584CC92C3E95700071A651 /* ADJAdjustFactory.h in Headers */, + 0A584CCA2C3E95700071A651 /* ADJAttributionHandler.h in Headers */, + 0A584CCB2C3E95700071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584CCC2C3E95700071A651 /* ADJGlobalParameters.h in Headers */, + 07000F932C47BEAF00F40775 /* AdjustBridgeConstants.h in Headers */, + 0A584CCD2C3E95700071A651 /* ADJPackageBuilder.h in Headers */, + 0A584CCE2C3E95700071A651 /* ADJPackageHandler.h in Headers */, + 0A584CCF2C3E95700071A651 /* ADJPackageParams.h in Headers */, + 0A584CD02C3E95700071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584CD12C3E95700071A651 /* ADJRequestHandler.h in Headers */, + 0A584CD22C3E95710071A651 /* ADJResponseData.h in Headers */, + 0A584CD32C3E95710071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584CD42C3E95710071A651 /* ADJSKAdNetwork.h in Headers */, + 07D5CB0F2C57DA2400C112DC /* AdjustBridgeUtil.h in Headers */, + 0A584CD52C3E95710071A651 /* ADJTimerCycle.h in Headers */, + 0A584CD62C3E95710071A651 /* ADJTimerOnce.h in Headers */, + 0A584CD72C3E95710071A651 /* ADJUrlStrategy.h in Headers */, + 0A584CD82C3E95710071A651 /* ADJUserDefaults.h in Headers */, + 9D7D3DF42C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584CD92C3E95710071A651 /* ADJUtil.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2381,46 +1716,45 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9DE354D62100726300D211C9 /* AdjustSdkIm.h in Headers */, - 9DEAF0F9210072BC005CAEDB /* Adjust.h in Headers */, - 6FBEE92C24E4230800FEF3F1 /* ADJUrlStrategy.h in Headers */, - 9DEAF0F5210072BC005CAEDB /* ADJConfig.h in Headers */, - 9DEAF119210072BC005CAEDB /* ADJEvent.h in Headers */, - 9D2F23FC2447DD2500B7CA90 /* ADJSubscription.h in Headers */, - 9DEAF0FD210072BC005CAEDB /* ADJAttribution.h in Headers */, - 9DEAF12E210072BC005CAEDB /* ADJSessionSuccess.h in Headers */, - 9DEAF132210072BC005CAEDB /* ADJLogger.h in Headers */, - 9DEAF12C210072BC005CAEDB /* ADJEventFailure.h in Headers */, - 9DEAF128210072BC005CAEDB /* ADJSessionFailure.h in Headers */, - 9DEAF12B210072BC005CAEDB /* ADJEventSuccess.h in Headers */, - 9D3A2AC92626505800BD6E44 /* ADJAdRevenue.h in Headers */, - 6FAB78782636DCB600773869 /* ADJLinkResolution.h in Headers */, - 9D651C8825B26DF5006D69D6 /* ADJThirdPartySharing.h in Headers */, - 0ABE89CD2A8E49B50099CCF5 /* ADJPurchase.h in Headers */, - 0ABE89CF2A8E49B50099CCF5 /* ADJPurchaseVerificationResult.h in Headers */, - 9DF92D8B2630ED59000FC3FC /* ADJPackageParams.h in Headers */, - 9DEAF107210072BC005CAEDB /* ADJAdjustFactory.h in Headers */, - 9DEAF100210072BC005CAEDB /* ADJActivityKind.h in Headers */, - 9DEAF112210072BC005CAEDB /* ADJUserDefaults.h in Headers */, - 9DEAF115210072BC005CAEDB /* ADJTimerOnce.h in Headers */, - 9DEAF135210072BC005CAEDB /* ADJTimerCycle.h in Headers */, - 9DEAF104210072BC005CAEDB /* ADJResponseData.h in Headers */, - 9D49D162290FEBB200042345 /* ADJSKAdNetwork.h in Headers */, - 9DEAF122210072BC005CAEDB /* NSString+ADJAdditions.h in Headers */, - 9DEAF131210072BC005CAEDB /* ADJBackoffStrategy.h in Headers */, - 9DF38203260E9B0A0033F5A1 /* NSNumber+ADJAdditions.h in Headers */, - 9DEAF11A210072BC005CAEDB /* ADJSdkClickHandler.h in Headers */, - 9DEAF10B210072BC005CAEDB /* ADJUtil.h in Headers */, - 9DEAF102210072BC005CAEDB /* ADJPackageHandler.h in Headers */, - 9DEAF133210072BC005CAEDB /* ADJSessionParameters.h in Headers */, - 9DEAF125210072BC005CAEDB /* ADJRequestHandler.h in Headers */, - 9DEAF10D210072BC005CAEDB /* ADJActivityHandler.h in Headers */, - 0ABE89D22A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */, - 9DEAF103210072BC005CAEDB /* ADJPackageBuilder.h in Headers */, - 9DEAF0FA210072BC005CAEDB /* ADJActivityPackage.h in Headers */, - 9DEAF114210072BC005CAEDB /* ADJAttributionHandler.h in Headers */, - 9DEAF120210072BC005CAEDB /* NSData+ADJAdditions.h in Headers */, - 9DEAF129210072BC005CAEDB /* ADJActivityState.h in Headers */, + 0A584C142C3E94B50071A651 /* ADJAdRevenue.h in Headers */, + 0A584C152C3E94B50071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584C162C3E94B50071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584C172C3E94B50071A651 /* ADJAttribution.h in Headers */, + 0A584C182C3E94B50071A651 /* ADJConfig.h in Headers */, + 0A584C192C3E94B50071A651 /* ADJEvent.h in Headers */, + 0A584C1A2C3E94B50071A651 /* ADJEventFailure.h in Headers */, + 0A584C1B2C3E94B50071A651 /* ADJEventSuccess.h in Headers */, + 0A584C1C2C3E94B50071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DF12C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584C1D2C3E94B50071A651 /* ADJLogger.h in Headers */, + 0A584C1E2C3E94B50071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584C1F2C3E94B50071A651 /* ADJSessionFailure.h in Headers */, + 0A584C202C3E94B50071A651 /* ADJSessionSuccess.h in Headers */, + 0A584C212C3E94B50071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584C222C3E94B50071A651 /* Adjust.h in Headers */, + 0A584C232C3E94B50071A651 /* AdjustSdk.h in Headers */, + 0A584C242C3E94C70071A651 /* ADJActivityHandler.h in Headers */, + 0A584C252C3E94C70071A651 /* ADJActivityKind.h in Headers */, + 0A584C262C3E94C70071A651 /* ADJActivityPackage.h in Headers */, + 0A584C272C3E94C70071A651 /* ADJActivityState.h in Headers */, + 0A584C282C3E94C70071A651 /* ADJAdditions.h in Headers */, + 0A584C292C3E94C70071A651 /* ADJAdjustFactory.h in Headers */, + 0A584C2A2C3E94C70071A651 /* ADJAttributionHandler.h in Headers */, + 0A584C2B2C3E94C80071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584C2C2C3E94C80071A651 /* ADJGlobalParameters.h in Headers */, + 0A584C2D2C3E94C80071A651 /* ADJPackageBuilder.h in Headers */, + 0A584C2E2C3E94C80071A651 /* ADJPackageHandler.h in Headers */, + 0A584C2F2C3E94C80071A651 /* ADJPackageParams.h in Headers */, + 0A584C302C3E94C80071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584C312C3E94C80071A651 /* ADJRequestHandler.h in Headers */, + 0A584C322C3E94C80071A651 /* ADJResponseData.h in Headers */, + 0A584C332C3E94C80071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584C342C3E94C80071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584C352C3E94C80071A651 /* ADJTimerCycle.h in Headers */, + 0A584C362C3E94C80071A651 /* ADJTimerOnce.h in Headers */, + 0A584C372C3E94C80071A651 /* ADJUrlStrategy.h in Headers */, + 0A584C382C3E94C80071A651 /* ADJUserDefaults.h in Headers */, + 0A584C392C3E94C80071A651 /* ADJUtil.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2428,46 +1762,45 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9DFA37B71C0F21D600782607 /* AdjustSdk.h in Headers */, - 9DF9C9431D6F3CA5008E362F /* Adjust.h in Headers */, - 9DF9C9231D6F3CA5008E362F /* ADJEvent.h in Headers */, - 6FBEE92924E422EB00FEF3F1 /* ADJUrlStrategy.h in Headers */, - 9DF9C91F1D6F3CA5008E362F /* ADJConfig.h in Headers */, - 9DF9C92B1D6F3CA5008E362F /* ADJLogger.h in Headers */, - 9DF9C9191D6F3CA5008E362F /* ADJAttribution.h in Headers */, - 9D2F23F92447DCE800B7CA90 /* ADJSubscription.h in Headers */, - 9DF9C9251D6F3CA5008E362F /* ADJEventFailure.h in Headers */, - 9DF9C9271D6F3CA5008E362F /* ADJEventSuccess.h in Headers */, - 9DF9C9391D6F3CA5008E362F /* ADJSessionSuccess.h in Headers */, - 9DF9C9371D6F3CA5008E362F /* ADJSessionFailure.h in Headers */, - 9D3A2AC62626501D00BD6E44 /* ADJAdRevenue.h in Headers */, - 6FAB786B2636DC8400773869 /* ADJLinkResolution.h in Headers */, - 6FBE0C6E2577CDAC00EC2CE0 /* ADJThirdPartySharing.h in Headers */, - 0ABE89C42A8E49500099CCF5 /* ADJPurchase.h in Headers */, - 0ABE89C22A8E49500099CCF5 /* ADJPurchaseVerificationResult.h in Headers */, - 9DF92D872630ED3D000FC3FC /* ADJPackageParams.h in Headers */, - 9DDF24431F7BE4BA001C1A70 /* ADJUserDefaults.h in Headers */, - 9DF9C9111D6F3CA5008E362F /* NSData+ADJAdditions.h in Headers */, - 9DF9C9131D6F3CA5008E362F /* NSString+ADJAdditions.h in Headers */, - 9DF9C9091D6F3CA5008E362F /* ADJActivityHandler.h in Headers */, - 9DF9C90B1D6F3CA5008E362F /* ADJActivityKind.h in Headers */, - 9DF9C90D1D6F3CA5008E362F /* ADJActivityPackage.h in Headers */, - 9D49D15E290FEBA200042345 /* ADJSKAdNetwork.h in Headers */, - 9DF9C90F1D6F3CA5008E362F /* ADJActivityState.h in Headers */, - 9DF381F6260E9AF50033F5A1 /* NSNumber+ADJAdditions.h in Headers */, - 9DF9C9171D6F3CA5008E362F /* ADJAdjustFactory.h in Headers */, - 9DF9C92D1D6F3CA5008E362F /* ADJPackageBuilder.h in Headers */, - 9DF9C92F1D6F3CA5008E362F /* ADJPackageHandler.h in Headers */, - 9DF9C9311D6F3CA5008E362F /* ADJRequestHandler.h in Headers */, - 9DF9C9451D6F3CA5008E362F /* ADJUtil.h in Headers */, - 9DF9C91B1D6F3CA5008E362F /* ADJAttributionHandler.h in Headers */, - 9DF9C93F1D6F3CA5008E362F /* ADJTimerOnce.h in Headers */, - 0ABE89C62A8E49500099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */, - 9DF9C93D1D6F3CA5008E362F /* ADJTimerCycle.h in Headers */, - 9DF9C9331D6F3CA5008E362F /* ADJResponseData.h in Headers */, - 96164D861CCA4D27009431AB /* ADJBackoffStrategy.h in Headers */, - 96164D841CCA4D10009431AB /* ADJSdkClickHandler.h in Headers */, - 96B671141D788F4A0090A023 /* ADJSessionParameters.h in Headers */, + 0A584BC92C3E944F0071A651 /* ADJAdRevenue.h in Headers */, + 0A584BCA2C3E944F0071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584BCB2C3E944F0071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584BCC2C3E944F0071A651 /* ADJAttribution.h in Headers */, + 0A584BCD2C3E944F0071A651 /* ADJConfig.h in Headers */, + 0A584BCE2C3E944F0071A651 /* ADJEvent.h in Headers */, + 0A584BCF2C3E944F0071A651 /* ADJEventFailure.h in Headers */, + 0A584BD02C3E944F0071A651 /* ADJEventSuccess.h in Headers */, + 0A584BD12C3E944F0071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DEE2C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584BD22C3E944F0071A651 /* ADJLogger.h in Headers */, + 0A584BD32C3E944F0071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584BD42C3E944F0071A651 /* ADJSessionFailure.h in Headers */, + 0A584BD52C3E944F0071A651 /* ADJSessionSuccess.h in Headers */, + 0A584BD62C3E944F0071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584BD72C3E944F0071A651 /* Adjust.h in Headers */, + 0A584BD82C3E944F0071A651 /* AdjustSdk.h in Headers */, + 0A584BD92C3E945D0071A651 /* ADJActivityHandler.h in Headers */, + 0A584BDA2C3E945D0071A651 /* ADJActivityKind.h in Headers */, + 0A584BDB2C3E945D0071A651 /* ADJActivityPackage.h in Headers */, + 0A584BDC2C3E945D0071A651 /* ADJActivityState.h in Headers */, + 0A584BDD2C3E945D0071A651 /* ADJAdditions.h in Headers */, + 0A584BDE2C3E945D0071A651 /* ADJAdjustFactory.h in Headers */, + 0A584BDF2C3E945D0071A651 /* ADJAttributionHandler.h in Headers */, + 0A584BE02C3E945D0071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584BE12C3E945D0071A651 /* ADJGlobalParameters.h in Headers */, + 0A584BE22C3E945D0071A651 /* ADJPackageBuilder.h in Headers */, + 0A584BE32C3E945D0071A651 /* ADJPackageHandler.h in Headers */, + 0A584BE42C3E945D0071A651 /* ADJPackageParams.h in Headers */, + 0A584BE52C3E945D0071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584BE62C3E945D0071A651 /* ADJRequestHandler.h in Headers */, + 0A584BE72C3E945D0071A651 /* ADJResponseData.h in Headers */, + 0A584BE82C3E945D0071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584BE92C3E945D0071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584BEA2C3E945D0071A651 /* ADJTimerCycle.h in Headers */, + 0A584BEB2C3E945D0071A651 /* ADJTimerOnce.h in Headers */, + 0A584BEC2C3E945D0071A651 /* ADJUrlStrategy.h in Headers */, + 0A584BED2C3E945D0071A651 /* ADJUserDefaults.h in Headers */, + 0A584BEE2C3E945D0071A651 /* ADJUtil.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2475,46 +1808,45 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9DFB06131D747070006D48FC /* AdjustSdkTv.h in Headers */, - 9DFB06941D7470C0006D48FC /* Adjust.h in Headers */, - 9DFB06741D7470C0006D48FC /* ADJEvent.h in Headers */, - 6FBEE93024E4231400FEF3F1 /* ADJUrlStrategy.h in Headers */, - 9DFB06701D7470C0006D48FC /* ADJConfig.h in Headers */, - 9DFB067C1D7470C0006D48FC /* ADJLogger.h in Headers */, - 9DFB066A1D7470C0006D48FC /* ADJAttribution.h in Headers */, - 9D2F24002447DD3700B7CA90 /* ADJSubscription.h in Headers */, - 9DFB06761D7470C0006D48FC /* ADJEventFailure.h in Headers */, - 9DFB06781D7470C0006D48FC /* ADJEventSuccess.h in Headers */, - 9DFB068A1D7470C0006D48FC /* ADJSessionSuccess.h in Headers */, - 9DFB06881D7470C0006D48FC /* ADJSessionFailure.h in Headers */, - 9D3A2ACD2626508F00BD6E44 /* ADJAdRevenue.h in Headers */, - 6FAB78852636DCCD00773869 /* ADJLinkResolution.h in Headers */, - 9D651C9625B26E1B006D69D6 /* ADJThirdPartySharing.h in Headers */, - 0ABE89DA2A8E49C20099CCF5 /* ADJPurchase.h in Headers */, - 0ABE89DD2A8E49C20099CCF5 /* ADJPurchaseVerificationResult.h in Headers */, - 9DDF24451F7BE4E7001C1A70 /* ADJUserDefaults.h in Headers */, - 9DFB06621D7470C0006D48FC /* NSData+ADJAdditions.h in Headers */, - 9DFB06641D7470C0006D48FC /* NSString+ADJAdditions.h in Headers */, - 9DFB065A1D7470C0006D48FC /* ADJActivityHandler.h in Headers */, - 9DFB065C1D7470C0006D48FC /* ADJActivityKind.h in Headers */, - 9DFB065E1D7470C0006D48FC /* ADJActivityPackage.h in Headers */, - 9DFB06601D7470C0006D48FC /* ADJActivityState.h in Headers */, - 9D49D166290FEBC000042345 /* ADJSKAdNetwork.h in Headers */, - 9DF3820F260E9B740033F5A1 /* NSNumber+ADJAdditions.h in Headers */, - 9DFB06681D7470C0006D48FC /* ADJAdjustFactory.h in Headers */, - 9DFB067E1D7470C0006D48FC /* ADJPackageBuilder.h in Headers */, - 9DFB06801D7470C0006D48FC /* ADJPackageHandler.h in Headers */, - 9DFB06821D7470C0006D48FC /* ADJRequestHandler.h in Headers */, - 9DFB06961D7470C0006D48FC /* ADJUtil.h in Headers */, - 9DFB06721D7470C0006D48FC /* ADJPackageParams.h in Headers */, - 9DFB066C1D7470C0006D48FC /* ADJAttributionHandler.h in Headers */, - 9DFB06901D7470C0006D48FC /* ADJTimerOnce.h in Headers */, - 9DFB068E1D7470C0006D48FC /* ADJTimerCycle.h in Headers */, - 9DFB06841D7470C0006D48FC /* ADJResponseData.h in Headers */, - 9DFB066E1D7470C0006D48FC /* ADJBackoffStrategy.h in Headers */, - 9DFB06861D7470C0006D48FC /* ADJSdkClickHandler.h in Headers */, - 96B671181D788F7A0090A023 /* ADJSessionParameters.h in Headers */, - 0ABE89DB2A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584C5F2C3E94FA0071A651 /* ADJAdRevenue.h in Headers */, + 0A584C602C3E94FA0071A651 /* ADJAppStorePurchase.h in Headers */, + 0A584C612C3E94FA0071A651 /* ADJAppStoreSubscription.h in Headers */, + 0A584C622C3E94FA0071A651 /* ADJAttribution.h in Headers */, + 0A584C632C3E94FA0071A651 /* ADJConfig.h in Headers */, + 0A584C642C3E94FA0071A651 /* ADJEvent.h in Headers */, + 0A584C652C3E94FA0071A651 /* ADJEventFailure.h in Headers */, + 0A584C662C3E94FA0071A651 /* ADJEventSuccess.h in Headers */, + 0A584C672C3E94FA0071A651 /* ADJLinkResolution.h in Headers */, + 9D7D3DF22C49A8B200FACB18 /* ADJDeeplink.h in Headers */, + 0A584C682C3E94FA0071A651 /* ADJLogger.h in Headers */, + 0A584C692C3E94FA0071A651 /* ADJPurchaseVerificationResult.h in Headers */, + 0A584C6A2C3E94FA0071A651 /* ADJSessionFailure.h in Headers */, + 0A584C6B2C3E94FA0071A651 /* ADJSessionSuccess.h in Headers */, + 0A584C6C2C3E94FA0071A651 /* ADJThirdPartySharing.h in Headers */, + 0A584C6D2C3E94FA0071A651 /* Adjust.h in Headers */, + 0A584C6E2C3E94FA0071A651 /* AdjustSdk.h in Headers */, + 0A584C6F2C3E950A0071A651 /* ADJActivityHandler.h in Headers */, + 0A584C702C3E950A0071A651 /* ADJActivityKind.h in Headers */, + 0A584C712C3E950A0071A651 /* ADJActivityPackage.h in Headers */, + 0A584C722C3E950A0071A651 /* ADJActivityState.h in Headers */, + 0A584C732C3E950A0071A651 /* ADJAdditions.h in Headers */, + 0A584C742C3E950A0071A651 /* ADJAdjustFactory.h in Headers */, + 0A584C752C3E950A0071A651 /* ADJAttributionHandler.h in Headers */, + 0A584C762C3E950A0071A651 /* ADJBackoffStrategy.h in Headers */, + 0A584C772C3E950A0071A651 /* ADJGlobalParameters.h in Headers */, + 0A584C782C3E950A0071A651 /* ADJPackageBuilder.h in Headers */, + 0A584C792C3E950A0071A651 /* ADJPackageHandler.h in Headers */, + 0A584C7A2C3E950B0071A651 /* ADJPackageParams.h in Headers */, + 0A584C7B2C3E950B0071A651 /* ADJPurchaseVerificationHandler.h in Headers */, + 0A584C7C2C3E950B0071A651 /* ADJRequestHandler.h in Headers */, + 0A584C7D2C3E950B0071A651 /* ADJResponseData.h in Headers */, + 0A584C7E2C3E950B0071A651 /* ADJSdkClickHandler.h in Headers */, + 0A584C7F2C3E950B0071A651 /* ADJSKAdNetwork.h in Headers */, + 0A584C802C3E950B0071A651 /* ADJTimerCycle.h in Headers */, + 0A584C812C3E950B0071A651 /* ADJTimerOnce.h in Headers */, + 0A584C822C3E950B0071A651 /* ADJUrlStrategy.h in Headers */, + 0A584C832C3E950B0071A651 /* ADJUserDefaults.h in Headers */, + 0A584C842C3E950B0071A651 /* ADJUtil.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2525,9 +1857,9 @@ isa = PBXNativeTarget; buildConfigurationList = 0AB1C98B27DD450D00509231 /* Build configuration list for PBXNativeTarget "AdjustSdkStatic" */; buildPhases = ( + 0A584CDA2C3E95940071A651 /* Headers */, 0AB1C96D27DD450D00509231 /* Sources */, 0AB1C96E27DD450D00509231 /* Frameworks */, - 0AB1C96F27DD450D00509231 /* CopyFiles */, 0AB1C9C727DD4E6400509231 /* ShellScript */, ); buildRules = ( @@ -2543,9 +1875,9 @@ isa = PBXNativeTarget; buildConfigurationList = 0AB1CA2B27DF462200509231 /* Build configuration list for PBXNativeTarget "AdjustSdkTvStatic" */; buildPhases = ( + 0A584D012C3E96090071A651 /* Headers */, 0AB1CA2127DF462200509231 /* Sources */, 0AB1CA2227DF462200509231 /* Frameworks */, - 0AB1CA2327DF462200509231 /* CopyFiles */, 0AB1CA5F27DF4A4F00509231 /* ShellScript */, ); buildRules = ( @@ -2554,16 +1886,16 @@ ); name = AdjustSdkTvStatic; productName = AdjustSdkTvStatic; - productReference = 0AB1CA2527DF462200509231 /* libAdjustSdkTv.a */; + productReference = 0AB1CA2527DF462200509231 /* libAdjustSdk.a */; productType = "com.apple.product-type.library.static"; }; 0AB1CA6727DF5D3200509231 /* AdjustSdkImStatic */ = { isa = PBXNativeTarget; buildConfigurationList = 0AB1CA6E27DF5D3200509231 /* Build configuration list for PBXNativeTarget "AdjustSdkImStatic" */; buildPhases = ( + 0A584D282C3E967D0071A651 /* Headers */, 0AB1CA6427DF5D3200509231 /* Sources */, 0AB1CA6527DF5D3200509231 /* Frameworks */, - 0AB1CA6627DF5D3200509231 /* CopyFiles */, 0AB1CAA227DF62E300509231 /* ShellScript */, ); buildRules = ( @@ -2572,16 +1904,16 @@ ); name = AdjustSdkImStatic; productName = AdjustSdkImStatic; - productReference = 0AB1CA6827DF5D3200509231 /* libAdjustSdkIm.a */; + productReference = 0AB1CA6827DF5D3200509231 /* libAdjustSdk.a */; productType = "com.apple.product-type.library.static"; }; 0AB1CAD427DF671300509231 /* AdjustSdkWebBridgeStatic */ = { isa = PBXNativeTarget; buildConfigurationList = 0AB1CADB27DF671300509231 /* Build configuration list for PBXNativeTarget "AdjustSdkWebBridgeStatic" */; buildPhases = ( + 0A584D4F2C3E96B90071A651 /* Headers */, 0AB1CAD127DF671300509231 /* Sources */, 0AB1CAD227DF671300509231 /* Frameworks */, - 0AB1CAD327DF671300509231 /* CopyFiles */, 0AB1CB4327DF6C6A00509231 /* ShellScript */, ); buildRules = ( @@ -2590,16 +1922,16 @@ ); name = AdjustSdkWebBridgeStatic; productName = AdjustSdkWebBridgeStatic; - productReference = 0AB1CAD527DF671300509231 /* libAdjustSdkWebBridge.a */; + productReference = 0AB1CAD527DF671300509231 /* libAdjustSdk.a */; productType = "com.apple.product-type.library.static"; }; 9615158E1CD2CB2C0022D336 /* AdjustBridge */ = { isa = PBXNativeTarget; buildConfigurationList = 9615159E1CD2CB2C0022D336 /* Build configuration list for PBXNativeTarget "AdjustBridge" */; buildPhases = ( + 0A584B9E2C3E93E00071A651 /* Headers */, 9615158B1CD2CB2C0022D336 /* Sources */, 9615158C1CD2CB2C0022D336 /* Frameworks */, - 9615158D1CD2CB2C0022D336 /* CopyFiles */, ); buildRules = ( ); @@ -2629,25 +1961,6 @@ productReference = 9679920D18BBAE2800394606 /* libAdjust.a */; productType = "com.apple.product-type.library.static"; }; - 9679921C18BBAE2800394606 /* AdjustTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9679923318BBAE2800394606 /* Build configuration list for PBXNativeTarget "AdjustTests" */; - buildPhases = ( - 9679921918BBAE2800394606 /* Sources */, - 9679921A18BBAE2800394606 /* Frameworks */, - 9679921B18BBAE2800394606 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 9679922418BBAE2800394606 /* PBXTargetDependency */, - 9D7432051EB9F9CF00969F14 /* PBXTargetDependency */, - ); - name = AdjustTests; - productName = AdjustTests; - productReference = 9679921D18BBAE2800394606 /* AdjustTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 9D0E2E01210B570600133B4F /* AdjustSdkWebBridge */ = { isa = PBXNativeTarget; buildConfigurationList = 9D0E2E15210B570600133B4F /* Build configuration list for PBXNativeTarget "AdjustSdkWebBridge" */; @@ -2663,26 +1976,9 @@ ); name = AdjustSdkWebBridge; productName = AdjustSdkWebBridge; - productReference = 9D0E2E02210B570600133B4F /* AdjustSdkWebBridge.framework */; + productReference = 9D0E2E02210B570600133B4F /* AdjustSdk.framework */; productType = "com.apple.product-type.framework"; }; - 9D7431E51EB9F9B700969F14 /* AdjustExampleTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9D7432031EB9F9B700969F14 /* Build configuration list for PBXNativeTarget "AdjustExampleTests" */; - buildPhases = ( - 9D7431E21EB9F9B700969F14 /* Sources */, - 9D7431E31EB9F9B700969F14 /* Frameworks */, - 9D7431E41EB9F9B700969F14 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AdjustExampleTests; - productName = AdjustExampleTests; - productReference = 9D7431E61EB9F9B700969F14 /* AdjustExampleTests.app */; - productType = "com.apple.product-type.application"; - }; 9DE354D12100726300D211C9 /* AdjustSdkIm */ = { isa = PBXNativeTarget; buildConfigurationList = 9DE354E52100726300D211C9 /* Build configuration list for PBXNativeTarget "AdjustSdkIm" */; @@ -2698,7 +1994,7 @@ ); name = AdjustSdkIm; productName = AdjustSdkIm; - productReference = 9DE354D22100726300D211C9 /* AdjustSdkIm.framework */; + productReference = 9DE354D22100726300D211C9 /* AdjustSdk.framework */; productType = "com.apple.product-type.framework"; }; 9DFA37AC1C0F219400782607 /* AdjustSdk */ = { @@ -2709,7 +2005,6 @@ 9DFA37A91C0F219400782607 /* Frameworks */, 9DFA37AA1C0F219400782607 /* Headers */, 9DFA37AB1C0F219400782607 /* Resources */, - 0A1B45AD2819601000C9BC30 /* ShellScript */, ); buildRules = ( ); @@ -2727,6 +2022,7 @@ 9DFB060B1D747070006D48FC /* Sources */, 9DFB060C1D747070006D48FC /* Frameworks */, 9DFB060D1D747070006D48FC /* Headers */, + 071684CB2C0471C300B8B9FD /* Resources */, ); buildRules = ( ); @@ -2734,7 +2030,7 @@ ); name = AdjustSdkTv; productName = AdjustSdkTv; - productReference = 9DFB06101D747070006D48FC /* AdjustSdkTv.framework */; + productReference = 9DFB06101D747070006D48FC /* AdjustSdk.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -2761,9 +2057,6 @@ 9615158E1CD2CB2C0022D336 = { CreatedOnToolsVersion = 7.3.1; }; - 9679921C18BBAE2800394606 = { - TestTargetID = 9D7431E51EB9F9B700969F14; - }; 96BCFBE71AC99FBD005A65C5 = { CreatedOnToolsVersion = 6.2; }; @@ -2771,11 +2064,6 @@ CreatedOnToolsVersion = 9.4.1; ProvisioningStyle = Manual; }; - 9D7431E51EB9F9B700969F14 = { - CreatedOnToolsVersion = 8.3.2; - DevelopmentTeam = QGUGW9AUMK; - ProvisioningStyle = Automatic; - }; 9DE354D12100726300D211C9 = { CreatedOnToolsVersion = 9.4.1; ProvisioningStyle = Manual; @@ -2854,8 +2142,6 @@ 9DE354D12100726300D211C9 /* AdjustSdkIm */, 9DFB060F1D747070006D48FC /* AdjustSdkTv */, 9D0E2E01210B570600133B4F /* AdjustSdkWebBridge */, - 9679921C18BBAE2800394606 /* AdjustTests */, - 9D7431E51EB9F9B700969F14 /* AdjustExampleTests */, 0AB1C97027DD450D00509231 /* AdjustSdkStatic */, 0AB1CA2427DF462200509231 /* AdjustSdkTvStatic */, 0AB1CA6727DF5D3200509231 /* AdjustSdkImStatic */, @@ -2987,10 +2273,11 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 9679921B18BBAE2800394606 /* Resources */ = { + 071684CB2C0471C300B8B9FD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 071684DE2C0471C800B8B9FD /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3002,13 +2289,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9D7431E41EB9F9B700969F14 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9DE354D02100726300D211C9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3022,31 +2302,12 @@ buildActionMask = 2147483647; files = ( 07BFEAA22A49E3DA004E29D9 /* PrivacyInfo.xcprivacy in Resources */, - 0AB1C9F727DD5B5100509231 /* ModuleMap in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0A1B45AD2819601000C9BC30 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = " -"; - }; 0AB1C9C727DD4E6400509231 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -3062,7 +2323,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/${TARGET_NAME}/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; + shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/ModuleMap/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; }; 0AB1CA5F27DF4A4F00509231 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -3079,7 +2340,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/${TARGET_NAME}/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; + shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/ModuleMap/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; }; 0AB1CAA227DF62E300509231 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -3096,7 +2357,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/${TARGET_NAME}/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; + shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/ModuleMap/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; }; 0AB1CB4327DF6C6A00509231 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -3113,7 +2374,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/${TARGET_NAME}/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; + shellScript = "set -e\n\nexport FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/static_framework/${PRODUCT_NAME}.framework\"\n\n# Create the path to the real Headers die\nmkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n# Create the required symlinks\n/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n\n# Copy the public headers into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n\n\n# Copy the static library into the framework\n/bin/cp -a \"${TARGET_BUILD_DIR}/lib${PRODUCT_NAME}.a\" \\\n\"${FRAMEWORK_LOCN}/Versions/A/${PRODUCT_NAME}\"\n\n# Add module.modulemap to static framework to make Swift users happy.\nmkdir -p \"${FRAMEWORK_LOCN}/Modules\"\ncp -a \"${SRCROOT}/ModuleMap/module.modulemap\" \"${FRAMEWORK_LOCN}/Modules/module.modulemap\"\n\n# Copy Resulting framework\nmkdir -p \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}\"\nditto \"${FRAMEWORK_LOCN}\" \"${SOURCE_ROOT}/sdk_distribution/${TARGET_NAME}/${PLATFORM_NAME}/${PRODUCT_NAME}.framework\"\n"; }; 9DE7C9011AE68F68001556E5 /* Build Framework */ = { isa = PBXShellScriptBuildPhase; @@ -3150,11 +2411,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0AB1C99727DD4A9500509231 /* NSString+ADJAdditions.m in Sources */, - 0AB1C99827DD4B3100509231 /* NSData+ADJAdditions.m in Sources */, - 0AB1C99927DD4B3100509231 /* NSNumber+ADJAdditions.m in Sources */, + 9D4CC6D52C0735B400A1E0C0 /* ADJAdditions.m in Sources */, 0AB1C99A27DD4B3100509231 /* Adjust.m in Sources */, 0AB1C99B27DD4B3100509231 /* ADJActivityHandler.m in Sources */, + 9D7D3DF72C49A8B200FACB18 /* ADJDeeplink.m in Sources */, 0AB1C99C27DD4B3100509231 /* ADJActivityKind.m in Sources */, 0AB1C99D27DD4B3100509231 /* ADJActivityPackage.m in Sources */, 0AB1C99E27DD4B3100509231 /* ADJActivityState.m in Sources */, @@ -3174,7 +2434,7 @@ 0AB1C9AA27DD4B3200509231 /* ADJTimerOnce.m in Sources */, 0AB1C9AB27DD4B3200509231 /* ADJTimerCycle.m in Sources */, 0AB1C9AC27DD4B3200509231 /* ADJResponseData.m in Sources */, - 9D775B522A1F4B3C009D0BE8 /* ADJPurchase.m in Sources */, + 9D775B522A1F4B3C009D0BE8 /* ADJAppStorePurchase.m in Sources */, 9D775B5B2A1F7C8B009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, 0AB1C9AD27DD4B3200509231 /* ADJSessionSuccess.m in Sources */, 0AB1C9AE27DD4B3200509231 /* ADJSessionFailure.m in Sources */, @@ -3182,9 +2442,9 @@ 0AB1C9B027DD4B3200509231 /* ADJEventFailure.m in Sources */, 0AB1C9B127DD4B3200509231 /* ADJBackoffStrategy.m in Sources */, 0AB1C9B227DD4B3200509231 /* ADJSdkClickHandler.m in Sources */, - 0AB1C9B327DD4B3200509231 /* ADJSessionParameters.m in Sources */, + 0AB1C9B327DD4B3200509231 /* ADJGlobalParameters.m in Sources */, 0AB1C9B427DD4B3200509231 /* ADJUserDefaults.m in Sources */, - 0AB1C9B527DD4B3200509231 /* ADJSubscription.m in Sources */, + 0AB1C9B527DD4B3200509231 /* ADJAppStoreSubscription.m in Sources */, 0AB1C9B627DD4B3200509231 /* ADJUrlStrategy.m in Sources */, 0AB1C9B727DD4B3200509231 /* ADJThirdPartySharing.m in Sources */, 0AB1C9B827DD4B3200509231 /* ADJAdRevenue.m in Sources */, @@ -3196,11 +2456,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0AB1CA2F27DF49CB00509231 /* NSString+ADJAdditions.m in Sources */, - 0AB1CA3027DF49CB00509231 /* NSData+ADJAdditions.m in Sources */, - 0AB1CA3127DF49CB00509231 /* NSNumber+ADJAdditions.m in Sources */, + 9D4CC6E82C0735BC00A1E0C0 /* ADJAdditions.m in Sources */, 0AB1CA3227DF49CB00509231 /* Adjust.m in Sources */, 0AB1CA3327DF49CB00509231 /* ADJActivityHandler.m in Sources */, + 9D7D3DF82C49A8B200FACB18 /* ADJDeeplink.m in Sources */, 0AB1CA3427DF49CC00509231 /* ADJActivityKind.m in Sources */, 0AB1CA3527DF49CC00509231 /* ADJActivityPackage.m in Sources */, 0AB1CA3627DF49CC00509231 /* ADJActivityState.m in Sources */, @@ -3220,7 +2479,7 @@ 0AB1CA4227DF49CC00509231 /* ADJTimerOnce.m in Sources */, 0AB1CA4327DF49CC00509231 /* ADJTimerCycle.m in Sources */, 0AB1CA4427DF49CC00509231 /* ADJResponseData.m in Sources */, - 9D775B532A1F4B3D009D0BE8 /* ADJPurchase.m in Sources */, + 9D775B532A1F4B3D009D0BE8 /* ADJAppStorePurchase.m in Sources */, 9D775B5C2A1F7C8C009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, 0AB1CA4527DF49CC00509231 /* ADJSessionSuccess.m in Sources */, 0AB1CA4627DF49CC00509231 /* ADJSessionFailure.m in Sources */, @@ -3228,9 +2487,9 @@ 0AB1CA4827DF49CC00509231 /* ADJEventFailure.m in Sources */, 0AB1CA4927DF49CC00509231 /* ADJBackoffStrategy.m in Sources */, 0AB1CA4A27DF49CC00509231 /* ADJSdkClickHandler.m in Sources */, - 0AB1CA4B27DF49CC00509231 /* ADJSessionParameters.m in Sources */, + 0AB1CA4B27DF49CC00509231 /* ADJGlobalParameters.m in Sources */, 0AB1CA4C27DF49CC00509231 /* ADJUserDefaults.m in Sources */, - 0AB1CA4D27DF49CC00509231 /* ADJSubscription.m in Sources */, + 0AB1CA4D27DF49CC00509231 /* ADJAppStoreSubscription.m in Sources */, 0AB1CA4E27DF49CC00509231 /* ADJUrlStrategy.m in Sources */, 0AB1CA4F27DF49CC00509231 /* ADJThirdPartySharing.m in Sources */, 0AB1CA5027DF49CC00509231 /* ADJAdRevenue.m in Sources */, @@ -3242,11 +2501,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0AB1CA7227DF61F200509231 /* NSString+ADJAdditions.m in Sources */, - 0AB1CA7327DF61F200509231 /* NSData+ADJAdditions.m in Sources */, - 0AB1CA7427DF61F200509231 /* NSNumber+ADJAdditions.m in Sources */, + 9D4CC6E92C0735C400A1E0C0 /* ADJAdditions.m in Sources */, 0AB1CA7527DF61F200509231 /* Adjust.m in Sources */, 0AB1CA7627DF61F200509231 /* ADJActivityHandler.m in Sources */, + 9D7D3DFB2C49A8B200FACB18 /* ADJDeeplink.m in Sources */, 0AB1CA7727DF61F200509231 /* ADJActivityKind.m in Sources */, 0AB1CA7827DF61F200509231 /* ADJActivityPackage.m in Sources */, 0AB1CA7927DF61F200509231 /* ADJActivityState.m in Sources */, @@ -3266,7 +2524,7 @@ 0AB1CA8527DF61F200509231 /* ADJTimerOnce.m in Sources */, 0AB1CA8627DF61F200509231 /* ADJTimerCycle.m in Sources */, 0AB1CA8727DF61F200509231 /* ADJResponseData.m in Sources */, - 9D775B542A1F4B3D009D0BE8 /* ADJPurchase.m in Sources */, + 9D775B542A1F4B3D009D0BE8 /* ADJAppStorePurchase.m in Sources */, 9D775B5D2A1F7C8C009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, 0AB1CA8827DF61F200509231 /* ADJSessionSuccess.m in Sources */, 0AB1CA8927DF61F200509231 /* ADJSessionFailure.m in Sources */, @@ -3274,9 +2532,9 @@ 0AB1CA8B27DF61F200509231 /* ADJEventFailure.m in Sources */, 0AB1CA8C27DF61F200509231 /* ADJBackoffStrategy.m in Sources */, 0AB1CA8D27DF61F200509231 /* ADJSdkClickHandler.m in Sources */, - 0AB1CA8E27DF61F200509231 /* ADJSessionParameters.m in Sources */, + 0AB1CA8E27DF61F200509231 /* ADJGlobalParameters.m in Sources */, 0AB1CA8F27DF61F200509231 /* ADJUserDefaults.m in Sources */, - 0AB1CA9027DF61F200509231 /* ADJSubscription.m in Sources */, + 0AB1CA9027DF61F200509231 /* ADJAppStoreSubscription.m in Sources */, 0AB1CA9127DF61F200509231 /* ADJUrlStrategy.m in Sources */, 0AB1CA9227DF61F200509231 /* ADJThirdPartySharing.m in Sources */, 0AB1CA9327DF61F200509231 /* ADJAdRevenue.m in Sources */, @@ -3288,9 +2546,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0AB1CB0927DF68C100509231 /* NSString+ADJAdditions.m in Sources */, - 0AB1CB0A27DF68C100509231 /* NSData+ADJAdditions.m in Sources */, - 0AB1CB0B27DF68C100509231 /* NSNumber+ADJAdditions.m in Sources */, + 9D4CC6EA2C0735CB00A1E0C0 /* ADJAdditions.m in Sources */, 0AB1CB0C27DF68C100509231 /* Adjust.m in Sources */, 0AB1CB0D27DF68C100509231 /* ADJActivityHandler.m in Sources */, 0AB1CB0E27DF68C100509231 /* ADJActivityKind.m in Sources */, @@ -3304,12 +2560,14 @@ 0AB1CB1627DF68C100509231 /* ADJRequestHandler.m in Sources */, 0AB1CB1727DF68C100509231 /* ADJUtil.m in Sources */, 0AB1CB1827DF68C100509231 /* ADJEvent.m in Sources */, + 07D5CB132C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */, 0AB1CB1927DF68C100509231 /* ADJAttributionHandler.m in Sources */, 0AB1CB1A27DF68C100509231 /* ADJAttribution.m in Sources */, 0AB1CB1B27DF68C100509231 /* ADJConfig.m in Sources */, 0AB1CB1C27DF68C100509231 /* ADJTimerOnce.m in Sources */, - 9D775B552A1F4B3E009D0BE8 /* ADJPurchase.m in Sources */, + 9D775B552A1F4B3E009D0BE8 /* ADJAppStorePurchase.m in Sources */, 0AB1CB1D27DF68C100509231 /* ADJTimerCycle.m in Sources */, + 07000F972C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */, 0AB1CB1E27DF68C100509231 /* ADJResponseData.m in Sources */, 0AB1CB1F27DF68C100509231 /* ADJSessionSuccess.m in Sources */, 0AB1CB2027DF68C100509231 /* ADJSessionFailure.m in Sources */, @@ -3319,19 +2577,17 @@ 9D775B662A1F9CD0009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */, 0AB1CB2427DF68C100509231 /* ADJSdkClickHandler.m in Sources */, 0A67F1DC2919642000AC684A /* ADJSKAdNetwork.m in Sources */, - 0AB1CB2527DF68C100509231 /* ADJSessionParameters.m in Sources */, + 07D5CACA2C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */, + 0AB1CB2527DF68C100509231 /* ADJGlobalParameters.m in Sources */, 9D775B5E2A1F7C8D009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, 0AB1CB2627DF68C100509231 /* ADJUserDefaults.m in Sources */, - 0AB1CB2727DF68C100509231 /* ADJSubscription.m in Sources */, + 0AB1CB2727DF68C100509231 /* ADJAppStoreSubscription.m in Sources */, 0AB1CB2827DF68C100509231 /* ADJUrlStrategy.m in Sources */, 0AB1CB2927DF68C100509231 /* ADJThirdPartySharing.m in Sources */, + 9D7D3DFD2C49A8B200FACB18 /* ADJDeeplink.m in Sources */, 0AB1CB2A27DF68C100509231 /* ADJAdRevenue.m in Sources */, 0AB1CB2B27DF68C100509231 /* ADJLinkResolution.m in Sources */, 0AB1CB2C27DF68DB00509231 /* AdjustBridge.m in Sources */, - 0AB1CB2D27DF68DB00509231 /* AdjustBridgeRegister.m in Sources */, - 0AB1CB2E27DF68DB00509231 /* WebViewJavascriptBridge_JS.m in Sources */, - 0AB1CB2F27DF68DB00509231 /* WebViewJavascriptBridgeBase.m in Sources */, - 0AB1CB3027DF68DB00509231 /* WKWebViewJavascriptBridge.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3340,10 +2596,9 @@ buildActionMask = 2147483647; files = ( 961515A71CD2CBB00022D336 /* AdjustBridge.m in Sources */, - 968595EE1D0B25970011CA2B /* AdjustBridgeRegister.m in Sources */, - 961515A41CD2CBA20022D336 /* WebViewJavascriptBridge_JS.m in Sources */, - 961515A61CD2CBAC0022D336 /* WKWebViewJavascriptBridge.m in Sources */, - 961515A51CD2CBA80022D336 /* WebViewJavascriptBridgeBase.m in Sources */, + 07D5CAC82C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */, + 07000F952C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */, + 07D5CB112C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3351,10 +2606,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 96C93DF51AC47F2E00B53F56 /* NSData+ADJAdditions.m in Sources */, - 96C0EFE01A3EF47A00B39F31 /* NSString+ADJAdditions.m in Sources */, + 9DB561862C072BAF0004CCAD /* ADJUrlStrategy.m in Sources */, 9DF92D842630ED02000FC3FC /* ADJPackageParams.m in Sources */, 96E5E38118BBB48A008E7B30 /* Adjust.m in Sources */, + 9D7D3DED2C49A8B200FACB18 /* ADJDeeplink.m in Sources */, 96E5E38B18BBB48A008E7B30 /* ADJActivityHandler.m in Sources */, 96E5E38C18BBB48A008E7B30 /* ADJActivityKind.m in Sources */, 96E5E38D18BBB48A008E7B30 /* ADJActivityPackage.m in Sources */, @@ -3366,16 +2621,16 @@ 96E5E39518BBB48A008E7B30 /* ADJPackageHandler.m in Sources */, 9D651BF525B25A64006D69D6 /* ADJThirdPartySharing.m in Sources */, 96E5E39418BBB48A008E7B30 /* ADJPackageBuilder.m in Sources */, + 9D52A3222C071BBC00E0AA55 /* ADJAdditions.m in Sources */, 96E5E39618BBB48A008E7B30 /* ADJRequestHandler.m in Sources */, - 9D2F23E32447CE5C00B7CA90 /* ADJSubscription.m in Sources */, + 9D2F23E32447CE5C00B7CA90 /* ADJAppStoreSubscription.m in Sources */, 96E5E39918BBB48A008E7B30 /* ADJUtil.m in Sources */, - 6FBEE92624E422EB00FEF3F1 /* ADJUrlStrategy.m in Sources */, 9609BC6A19EEA55800E02303 /* ADJEvent.m in Sources */, 9DF212D52909E86A0056D579 /* ADJSKAdNetwork.m in Sources */, 969952CF1A012F5300928462 /* ADJAttributionHandler.m in Sources */, 969952D21A01309200928462 /* ADJAttribution.m in Sources */, 960A8BB91A029A8000F2BB95 /* ADJConfig.m in Sources */, - 9D775B3F2A1F4B19009D0BE8 /* ADJPurchase.m in Sources */, + 9D775B3F2A1F4B19009D0BE8 /* ADJAppStorePurchase.m in Sources */, 9D775B5A2A1F7C7A009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, 96854A5A1B1F2779002B2874 /* ADJTimerOnce.m in Sources */, 96854A601B1F278C002B2874 /* ADJTimerCycle.m in Sources */, @@ -3387,18 +2642,8 @@ 9601CAE91C74BAAE00670879 /* ADJEventFailure.m in Sources */, 965B7F311CC78F6600098639 /* ADJBackoffStrategy.m in Sources */, 96164D731CC8FA73009431AB /* ADJSdkClickHandler.m in Sources */, - 96B671111D788EEC0090A023 /* ADJSessionParameters.m in Sources */, + 96B671111D788EEC0090A023 /* ADJGlobalParameters.m in Sources */, 9DD0E9AF1F44690B00B2A759 /* ADJUserDefaults.m in Sources */, - 9DF381BC260E990B0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9679921918BBAE2800394606 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 96CD2BE01A13BFC600A40AFB /* NSString+ADJAdditions.m in Sources */, - 96C93DF61AC47FE000B53F56 /* NSData+ADJAdditions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3406,57 +2651,48 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D0E2E93210B575600133B4F /* NSString+ADJAdditions.m in Sources */, - 9D3A2AD2262650C300BD6E44 /* ADJAdRevenue.m in Sources */, - 9D0E2E7E210B575600133B4F /* ADJEventSuccess.m in Sources */, - 9D0E2E7C210B575600133B4F /* ADJEventFailure.m in Sources */, - 9D0E2E7F210B575600133B4F /* ADJActivityState.m in Sources */, - 9D0E2EB0210B575600133B4F /* WebViewJavascriptBridgeBase.m in Sources */, - 9D0E2E95210B575600133B4F /* NSData+ADJAdditions.m in Sources */, - 9D0E2E75210B575600133B4F /* ADJSdkClickHandler.m in Sources */, - 9D0E2E85210B575600133B4F /* ADJSessionParameters.m in Sources */, - 9D0E2E9D210B575600133B4F /* ADJUtil.m in Sources */, - 9D0E2E89210B575600133B4F /* Adjust.m in Sources */, - 9D0E2EAC210B575600133B4F /* ADJActivityHandler.m in Sources */, - 9D0E2E80210B575600133B4F /* ADJSessionFailure.m in Sources */, - 9D0E2EB2210B575600133B4F /* WKWebViewJavascriptBridge.m in Sources */, - 9D0E2E7B210B575600133B4F /* ADJSessionSuccess.m in Sources */, - 9D0E2EB7210B575600133B4F /* WebViewJavascriptBridge_JS.m in Sources */, - 9D0E2E71210B575600133B4F /* ADJRequestHandler.m in Sources */, - 9D0E2E91210B575600133B4F /* ADJActivityKind.m in Sources */, - 9D0E2E9C210B575600133B4F /* ADJActivityPackage.m in Sources */, - 9D0E2E8E210B575600133B4F /* ADJPackageHandler.m in Sources */, - 9D0E2E86210B575600133B4F /* ADJLogger.m in Sources */, - 9D0E2E6D210B575600133B4F /* ADJTimerOnce.m in Sources */, - 9D0E2E77210B575600133B4F /* ADJEvent.m in Sources */, - 9D0E2E8D210B575600133B4F /* ADJConfig.m in Sources */, - 0ABE89E72A8E49D40099CCF5 /* ADJPurchase.m in Sources */, - 9D2F24042447DD6000B7CA90 /* ADJSubscription.m in Sources */, - 9DF3821C260E9B8D0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 9D0E2E6E210B575600133B4F /* ADJAttributionHandler.m in Sources */, - 0ABE89E92A8E49D40099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */, - 9DF92D8F2630ED7B000FC3FC /* ADJPackageParams.m in Sources */, - 9D49D16B290FEBD100042345 /* ADJSKAdNetwork.m in Sources */, - 9D0E2E87210B575600133B4F /* ADJBackoffStrategy.m in Sources */, - 9D0E2EBB210B575600133B4F /* AdjustBridgeRegister.m in Sources */, - 6F84512525B1B1380004C7C0 /* ADJThirdPartySharing.m in Sources */, - 0ABE89E52A8E49D40099CCF5 /* ADJPurchaseVerificationResult.m in Sources */, - 9D0E2E84210B575600133B4F /* ADJTimerCycle.m in Sources */, - 6FBEE93524E4232800FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9D0E2EA5210B575600133B4F /* ADJPackageBuilder.m in Sources */, - 9D0E2E99210B575600133B4F /* ADJAttribution.m in Sources */, - 9D0E2EA3210B575600133B4F /* ADJResponseData.m in Sources */, - 9D0E2EA0210B575600133B4F /* ADJAdjustFactory.m in Sources */, - 9D0E2EA6210B575600133B4F /* ADJUserDefaults.m in Sources */, - 9D0E2EAE210B575600133B4F /* AdjustBridge.m in Sources */, - 6FAB78922636DCE700773869 /* ADJLinkResolution.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9D7431E21EB9F9B700969F14 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( + 0A584C852C3E952B0071A651 /* ADJAdRevenue.m in Sources */, + 0A584C862C3E952B0071A651 /* ADJAppStorePurchase.m in Sources */, + 0A584C872C3E952C0071A651 /* ADJAppStoreSubscription.m in Sources */, + 0A584C882C3E952C0071A651 /* ADJAttribution.m in Sources */, + 0A584C892C3E952C0071A651 /* ADJConfig.m in Sources */, + 0A584C8A2C3E952C0071A651 /* ADJEvent.m in Sources */, + 0A584C8B2C3E952C0071A651 /* ADJEventFailure.m in Sources */, + 0A584C8C2C3E952C0071A651 /* ADJEventSuccess.m in Sources */, + 0A584C8D2C3E952C0071A651 /* ADJLinkResolution.m in Sources */, + 0A584C8E2C3E952C0071A651 /* ADJLogger.m in Sources */, + 0A584C8F2C3E952C0071A651 /* ADJPurchaseVerificationResult.m in Sources */, + 0A584C902C3E952C0071A651 /* ADJSessionFailure.m in Sources */, + 0A584C912C3E952C0071A651 /* ADJSessionSuccess.m in Sources */, + 0A584C922C3E952C0071A651 /* ADJThirdPartySharing.m in Sources */, + 07D5CB122C57DA2400C112DC /* AdjustBridgeUtil.m in Sources */, + 0A584C932C3E952C0071A651 /* Adjust.m in Sources */, + 0A584C942C3E952C0071A651 /* ADJActivityHandler.m in Sources */, + 0A584C952C3E952C0071A651 /* ADJActivityKind.m in Sources */, + 0A584C962C3E952C0071A651 /* ADJActivityPackage.m in Sources */, + 0A584C972C3E952C0071A651 /* ADJActivityState.m in Sources */, + 0A584C982C3E952C0071A651 /* ADJAdditions.m in Sources */, + 07000F962C47BEAF00F40775 /* AdjustBridgeConstants.m in Sources */, + 0A584C992C3E952C0071A651 /* ADJAdjustFactory.m in Sources */, + 0A584C9A2C3E952C0071A651 /* ADJAttributionHandler.m in Sources */, + 0A584C9B2C3E952C0071A651 /* ADJBackoffStrategy.m in Sources */, + 0A584C9C2C3E952C0071A651 /* ADJGlobalParameters.m in Sources */, + 0A584C9D2C3E952C0071A651 /* ADJPackageBuilder.m in Sources */, + 0A584C9E2C3E952C0071A651 /* ADJPackageHandler.m in Sources */, + 0A584C9F2C3E952C0071A651 /* ADJPackageParams.m in Sources */, + 0A584CA02C3E952C0071A651 /* ADJPurchaseVerificationHandler.m in Sources */, + 0A584CA12C3E952C0071A651 /* ADJRequestHandler.m in Sources */, + 07D5CAC92C50EF3100C112DC /* AdjustBridgeRegister.m in Sources */, + 0A584CA22C3E952C0071A651 /* ADJResponseData.m in Sources */, + 0A584CA32C3E952C0071A651 /* ADJSdkClickHandler.m in Sources */, + 0A584CA42C3E952C0071A651 /* ADJSKAdNetwork.m in Sources */, + 0A584CA52C3E952C0071A651 /* ADJTimerCycle.m in Sources */, + 0A584CA62C3E952C0071A651 /* ADJTimerOnce.m in Sources */, + 0A584CA72C3E952C0071A651 /* ADJUrlStrategy.m in Sources */, + 9D7D3DF52C49A8B200FACB18 /* ADJDeeplink.m in Sources */, + 0A584CA82C3E952C0071A651 /* ADJUserDefaults.m in Sources */, + 0A584CA92C3E952C0071A651 /* ADJUtil.m in Sources */, + 0A584CAA2C3E952C0071A651 /* AdjustBridge.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3464,45 +2700,44 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DEAF11D210072BC005CAEDB /* NSString+ADJAdditions.m in Sources */, - 9DEAF108210072BC005CAEDB /* ADJEventSuccess.m in Sources */, - 9DF92D8C2630ED59000FC3FC /* ADJPackageParams.m in Sources */, - 9DEAF106210072BC005CAEDB /* ADJEventFailure.m in Sources */, - 9DEAF109210072BC005CAEDB /* ADJActivityState.m in Sources */, - 9DEAF11F210072BC005CAEDB /* NSData+ADJAdditions.m in Sources */, - 9DEAF0FF210072BC005CAEDB /* ADJSdkClickHandler.m in Sources */, - 9DEAF10F210072BC005CAEDB /* ADJSessionParameters.m in Sources */, - 9DEAF127210072BC005CAEDB /* ADJUtil.m in Sources */, - 6FAB78792636DCB600773869 /* ADJLinkResolution.m in Sources */, - 9DEAF113210072BC005CAEDB /* Adjust.m in Sources */, - 9DEAF136210072BC005CAEDB /* ADJActivityHandler.m in Sources */, - 0ABE89CE2A8E49B50099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */, - 9D651C8925B26DF5006D69D6 /* ADJThirdPartySharing.m in Sources */, - 9DEAF10A210072BC005CAEDB /* ADJSessionFailure.m in Sources */, - 9DEAF105210072BC005CAEDB /* ADJSessionSuccess.m in Sources */, - 9D2F23FD2447DD2500B7CA90 /* ADJSubscription.m in Sources */, - 9DEAF0FB210072BC005CAEDB /* ADJRequestHandler.m in Sources */, - 9DEAF11B210072BC005CAEDB /* ADJActivityKind.m in Sources */, - 9DEAF126210072BC005CAEDB /* ADJActivityPackage.m in Sources */, - 9D49D163290FEBB200042345 /* ADJSKAdNetwork.m in Sources */, - 9DEAF118210072BC005CAEDB /* ADJPackageHandler.m in Sources */, - 9DEAF110210072BC005CAEDB /* ADJLogger.m in Sources */, - 9DEAF0F7210072BC005CAEDB /* ADJTimerOnce.m in Sources */, - 6FBEE92D24E4230800FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9DEAF101210072BC005CAEDB /* ADJEvent.m in Sources */, - 0ABE89D02A8E49B50099CCF5 /* ADJPurchase.m in Sources */, - 9DEAF117210072BC005CAEDB /* ADJConfig.m in Sources */, - 9D3A2ACA2626505800BD6E44 /* ADJAdRevenue.m in Sources */, - 0ABE89D12A8E49B50099CCF5 /* ADJPurchaseVerificationResult.m in Sources */, - 9DEAF0F8210072BC005CAEDB /* ADJAttributionHandler.m in Sources */, - 9DEAF111210072BC005CAEDB /* ADJBackoffStrategy.m in Sources */, - 9DEAF10E210072BC005CAEDB /* ADJTimerCycle.m in Sources */, - 9DEAF12F210072BC005CAEDB /* ADJPackageBuilder.m in Sources */, - 9DEAF123210072BC005CAEDB /* ADJAttribution.m in Sources */, - 9DEAF12D210072BC005CAEDB /* ADJResponseData.m in Sources */, - 9DEAF12A210072BC005CAEDB /* ADJAdjustFactory.m in Sources */, - 9DEAF130210072BC005CAEDB /* ADJUserDefaults.m in Sources */, - 9DF38202260E9B0A0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, + 0A584BEF2C3E949B0071A651 /* ADJAdRevenue.m in Sources */, + 0A584BF02C3E949B0071A651 /* ADJAppStorePurchase.m in Sources */, + 0A584BF12C3E949B0071A651 /* ADJAppStoreSubscription.m in Sources */, + 9D7D3DF02C49A8B200FACB18 /* ADJDeeplink.m in Sources */, + 0A584BF22C3E949B0071A651 /* ADJAttribution.m in Sources */, + 0A584BF32C3E949B0071A651 /* ADJConfig.m in Sources */, + 0A584BF42C3E949B0071A651 /* ADJEvent.m in Sources */, + 0A584BF52C3E949B0071A651 /* ADJEventFailure.m in Sources */, + 0A584BF62C3E949B0071A651 /* ADJEventSuccess.m in Sources */, + 0A584BF72C3E949B0071A651 /* ADJLinkResolution.m in Sources */, + 0A584BF82C3E949B0071A651 /* ADJLogger.m in Sources */, + 0A584BF92C3E949B0071A651 /* ADJPurchaseVerificationResult.m in Sources */, + 0A584BFA2C3E949B0071A651 /* ADJSessionFailure.m in Sources */, + 0A584BFB2C3E949B0071A651 /* ADJSessionSuccess.m in Sources */, + 0A584BFC2C3E949B0071A651 /* ADJThirdPartySharing.m in Sources */, + 0A584BFD2C3E949B0071A651 /* Adjust.m in Sources */, + 0A584BFE2C3E949B0071A651 /* ADJActivityHandler.m in Sources */, + 0A584BFF2C3E949B0071A651 /* ADJActivityKind.m in Sources */, + 0A584C002C3E949B0071A651 /* ADJActivityPackage.m in Sources */, + 0A584C012C3E949B0071A651 /* ADJActivityState.m in Sources */, + 0A584C022C3E949B0071A651 /* ADJAdditions.m in Sources */, + 0A584C032C3E949B0071A651 /* ADJAdjustFactory.m in Sources */, + 0A584C042C3E949B0071A651 /* ADJAttributionHandler.m in Sources */, + 0A584C052C3E949B0071A651 /* ADJBackoffStrategy.m in Sources */, + 0A584C062C3E949B0071A651 /* ADJGlobalParameters.m in Sources */, + 0A584C072C3E949B0071A651 /* ADJPackageBuilder.m in Sources */, + 0A584C082C3E949B0071A651 /* ADJPackageHandler.m in Sources */, + 0A584C092C3E949B0071A651 /* ADJPackageParams.m in Sources */, + 0A584C0A2C3E949B0071A651 /* ADJPurchaseVerificationHandler.m in Sources */, + 0A584C0B2C3E949B0071A651 /* ADJRequestHandler.m in Sources */, + 0A584C0C2C3E949B0071A651 /* ADJResponseData.m in Sources */, + 0A584C0D2C3E949B0071A651 /* ADJSdkClickHandler.m in Sources */, + 0A584C0E2C3E949B0071A651 /* ADJSKAdNetwork.m in Sources */, + 0A584C0F2C3E949B0071A651 /* ADJTimerCycle.m in Sources */, + 0A584C102C3E949B0071A651 /* ADJTimerOnce.m in Sources */, + 0A584C112C3E949B0071A651 /* ADJUrlStrategy.m in Sources */, + 0A584C122C3E949B0071A651 /* ADJUserDefaults.m in Sources */, + 0A584C132C3E949B0071A651 /* ADJUtil.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3510,45 +2745,44 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DDF243B1F7BE4A4001C1A70 /* ADJUserDefaults.m in Sources */, - 9DF9C9121D6F3CA5008E362F /* NSData+ADJAdditions.m in Sources */, - 9DF92D882630ED3D000FC3FC /* ADJPackageParams.m in Sources */, - 9DF9C9141D6F3CA5008E362F /* NSString+ADJAdditions.m in Sources */, - 9DF9C9441D6F3CA5008E362F /* Adjust.m in Sources */, - 9DF9C90A1D6F3CA5008E362F /* ADJActivityHandler.m in Sources */, - 9DF9C90C1D6F3CA5008E362F /* ADJActivityKind.m in Sources */, - 9DF9C90E1D6F3CA5008E362F /* ADJActivityPackage.m in Sources */, - 9DF9C9101D6F3CA5008E362F /* ADJActivityState.m in Sources */, - 6FAB786C2636DC8400773869 /* ADJLinkResolution.m in Sources */, - 9DF9C9181D6F3CA5008E362F /* ADJAdjustFactory.m in Sources */, - 9DF9C92C1D6F3CA5008E362F /* ADJLogger.m in Sources */, - 0ABE89C12A8E49500099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */, - 6FBE0C6F2577CDAC00EC2CE0 /* ADJThirdPartySharing.m in Sources */, - 9DF9C92E1D6F3CA5008E362F /* ADJPackageBuilder.m in Sources */, - 9DF9C9301D6F3CA5008E362F /* ADJPackageHandler.m in Sources */, - 9D2F23F82447DCE800B7CA90 /* ADJSubscription.m in Sources */, - 9DF9C9321D6F3CA5008E362F /* ADJRequestHandler.m in Sources */, - 9DF9C9461D6F3CA5008E362F /* ADJUtil.m in Sources */, - 9DF9C9241D6F3CA5008E362F /* ADJEvent.m in Sources */, - 9D49D15F290FEBA200042345 /* ADJSKAdNetwork.m in Sources */, - 9DF9C91C1D6F3CA5008E362F /* ADJAttributionHandler.m in Sources */, - 9DF9C91A1D6F3CA5008E362F /* ADJAttribution.m in Sources */, - 9DF9C9201D6F3CA5008E362F /* ADJConfig.m in Sources */, - 0ABE89C32A8E49500099CCF5 /* ADJPurchaseVerificationResult.m in Sources */, - 6FBEE92724E422EB00FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9DF9C9401D6F3CA5008E362F /* ADJTimerOnce.m in Sources */, - 9D3A2AC52626501D00BD6E44 /* ADJAdRevenue.m in Sources */, - 9DF9C93E1D6F3CA5008E362F /* ADJTimerCycle.m in Sources */, - 9DF9C9341D6F3CA5008E362F /* ADJResponseData.m in Sources */, - 9DF9C93A1D6F3CA5008E362F /* ADJSessionSuccess.m in Sources */, - 9DF9C9381D6F3CA5008E362F /* ADJSessionFailure.m in Sources */, - 9DF9C9281D6F3CA5008E362F /* ADJEventSuccess.m in Sources */, - 9DF9C9261D6F3CA5008E362F /* ADJEventFailure.m in Sources */, - 9DB457B01D743704004D69E8 /* ADJBackoffStrategy.m in Sources */, - 0ABE89C52A8E49500099CCF5 /* ADJPurchase.m in Sources */, - 9DB457B11D743704004D69E8 /* ADJSdkClickHandler.m in Sources */, - 96B671151D788F4A0090A023 /* ADJSessionParameters.m in Sources */, - 9DF381F5260E9AF50033F5A1 /* NSNumber+ADJAdditions.m in Sources */, + 0A584BA42C3E94230071A651 /* ADJAdRevenue.m in Sources */, + 0A584BA52C3E94230071A651 /* ADJAppStorePurchase.m in Sources */, + 0A584BA62C3E94240071A651 /* ADJAppStoreSubscription.m in Sources */, + 9D7D3DEF2C49A8B200FACB18 /* ADJDeeplink.m in Sources */, + 0A584BA72C3E94240071A651 /* ADJAttribution.m in Sources */, + 0A584BA82C3E94240071A651 /* ADJConfig.m in Sources */, + 0A584BA92C3E94240071A651 /* ADJEvent.m in Sources */, + 0A584BAA2C3E94240071A651 /* ADJEventFailure.m in Sources */, + 0A584BAB2C3E94240071A651 /* ADJEventSuccess.m in Sources */, + 0A584BAC2C3E94240071A651 /* ADJLinkResolution.m in Sources */, + 0A584BAD2C3E94240071A651 /* ADJLogger.m in Sources */, + 0A584BAE2C3E94240071A651 /* ADJPurchaseVerificationResult.m in Sources */, + 0A584BAF2C3E94240071A651 /* ADJSessionFailure.m in Sources */, + 0A584BB02C3E94240071A651 /* ADJSessionSuccess.m in Sources */, + 0A584BB12C3E94240071A651 /* ADJThirdPartySharing.m in Sources */, + 0A584BB22C3E94240071A651 /* Adjust.m in Sources */, + 0A584BB32C3E94240071A651 /* ADJActivityHandler.m in Sources */, + 0A584BB42C3E94240071A651 /* ADJActivityKind.m in Sources */, + 0A584BB52C3E94240071A651 /* ADJActivityPackage.m in Sources */, + 0A584BB62C3E94240071A651 /* ADJActivityState.m in Sources */, + 0A584BB72C3E94240071A651 /* ADJAdditions.m in Sources */, + 0A584BB82C3E94240071A651 /* ADJAdjustFactory.m in Sources */, + 0A584BB92C3E94240071A651 /* ADJAttributionHandler.m in Sources */, + 0A584BBA2C3E94240071A651 /* ADJBackoffStrategy.m in Sources */, + 0A584BBB2C3E94240071A651 /* ADJGlobalParameters.m in Sources */, + 0A584BBC2C3E94240071A651 /* ADJPackageBuilder.m in Sources */, + 0A584BBD2C3E94240071A651 /* ADJPackageHandler.m in Sources */, + 0A584BBE2C3E94240071A651 /* ADJPackageParams.m in Sources */, + 0A584BBF2C3E94240071A651 /* ADJPurchaseVerificationHandler.m in Sources */, + 0A584BC02C3E94240071A651 /* ADJRequestHandler.m in Sources */, + 0A584BC12C3E94240071A651 /* ADJResponseData.m in Sources */, + 0A584BC22C3E94240071A651 /* ADJSdkClickHandler.m in Sources */, + 0A584BC32C3E94240071A651 /* ADJSKAdNetwork.m in Sources */, + 0A584BC42C3E94240071A651 /* ADJTimerCycle.m in Sources */, + 0A584BC52C3E94240071A651 /* ADJTimerOnce.m in Sources */, + 0A584BC62C3E94240071A651 /* ADJUrlStrategy.m in Sources */, + 0A584BC72C3E94240071A651 /* ADJUserDefaults.m in Sources */, + 0A584BC82C3E94240071A651 /* ADJUtil.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3556,61 +2790,50 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DDF24441F7BE4DF001C1A70 /* ADJUserDefaults.m in Sources */, - 9DFB06631D7470C0006D48FC /* NSData+ADJAdditions.m in Sources */, - 9DFB06651D7470C0006D48FC /* NSString+ADJAdditions.m in Sources */, - 9DFB06951D7470C0006D48FC /* Adjust.m in Sources */, - 9DFB065B1D7470C0006D48FC /* ADJActivityHandler.m in Sources */, - 9DFB065D1D7470C0006D48FC /* ADJActivityKind.m in Sources */, - 0ABE89DC2A8E49C20099CCF5 /* ADJPurchaseVerificationHandler.m in Sources */, - 9DFB065F1D7470C0006D48FC /* ADJActivityPackage.m in Sources */, - 9DFB06611D7470C0006D48FC /* ADJActivityState.m in Sources */, - 9DFB06691D7470C0006D48FC /* ADJAdjustFactory.m in Sources */, - 6FAB78862636DCCD00773869 /* ADJLinkResolution.m in Sources */, - 9DFB067D1D7470C0006D48FC /* ADJLogger.m in Sources */, - 9D651C9525B26E1B006D69D6 /* ADJThirdPartySharing.m in Sources */, - 9DFB067F1D7470C0006D48FC /* ADJPackageBuilder.m in Sources */, - 9DFB06811D7470C0006D48FC /* ADJPackageHandler.m in Sources */, - 9D2F24012447DD3700B7CA90 /* ADJSubscription.m in Sources */, - 9DFB06831D7470C0006D48FC /* ADJRequestHandler.m in Sources */, - 9DFB06971D7470C0006D48FC /* ADJUtil.m in Sources */, - 9DFB06751D7470C0006D48FC /* ADJEvent.m in Sources */, - 9DFB06731D7470C0006D48FC /* ADJPackageParams.m in Sources */, - 9D49D167290FEBC000042345 /* ADJSKAdNetwork.m in Sources */, - 9DFB066D1D7470C0006D48FC /* ADJAttributionHandler.m in Sources */, - 9DFB066B1D7470C0006D48FC /* ADJAttribution.m in Sources */, - 9DFB06711D7470C0006D48FC /* ADJConfig.m in Sources */, - 0ABE89D92A8E49C20099CCF5 /* ADJPurchase.m in Sources */, - 6FBEE93124E4231400FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9DFB06911D7470C0006D48FC /* ADJTimerOnce.m in Sources */, - 9D3A2ACE2626508F00BD6E44 /* ADJAdRevenue.m in Sources */, - 9DFB068F1D7470C0006D48FC /* ADJTimerCycle.m in Sources */, - 0ABE89DE2A8E49C20099CCF5 /* ADJPurchaseVerificationResult.m in Sources */, - 9DFB06851D7470C0006D48FC /* ADJResponseData.m in Sources */, - 9DFB068B1D7470C0006D48FC /* ADJSessionSuccess.m in Sources */, - 9DFB06891D7470C0006D48FC /* ADJSessionFailure.m in Sources */, - 9DFB06791D7470C0006D48FC /* ADJEventSuccess.m in Sources */, - 9DFB06771D7470C0006D48FC /* ADJEventFailure.m in Sources */, - 9DFB066F1D7470C0006D48FC /* ADJBackoffStrategy.m in Sources */, - 9DFB06871D7470C0006D48FC /* ADJSdkClickHandler.m in Sources */, - 96B671191D788F7A0090A023 /* ADJSessionParameters.m in Sources */, - 9DF38210260E9B740033F5A1 /* NSNumber+ADJAdditions.m in Sources */, + 0A584C3A2C3E94E70071A651 /* ADJAdRevenue.m in Sources */, + 0A584C3B2C3E94E70071A651 /* ADJAppStorePurchase.m in Sources */, + 0A584C3C2C3E94E70071A651 /* ADJAppStoreSubscription.m in Sources */, + 9D7D3DF32C49A8B200FACB18 /* ADJDeeplink.m in Sources */, + 0A584C3D2C3E94E70071A651 /* ADJAttribution.m in Sources */, + 0A584C3E2C3E94E70071A651 /* ADJConfig.m in Sources */, + 0A584C3F2C3E94E70071A651 /* ADJEvent.m in Sources */, + 0A584C402C3E94E70071A651 /* ADJEventFailure.m in Sources */, + 0A584C412C3E94E70071A651 /* ADJEventSuccess.m in Sources */, + 0A584C422C3E94E70071A651 /* ADJLinkResolution.m in Sources */, + 0A584C432C3E94E70071A651 /* ADJLogger.m in Sources */, + 0A584C442C3E94E70071A651 /* ADJPurchaseVerificationResult.m in Sources */, + 0A584C452C3E94E70071A651 /* ADJSessionFailure.m in Sources */, + 0A584C462C3E94E70071A651 /* ADJSessionSuccess.m in Sources */, + 0A584C472C3E94E70071A651 /* ADJThirdPartySharing.m in Sources */, + 0A584C482C3E94E70071A651 /* Adjust.m in Sources */, + 0A584C492C3E94E70071A651 /* ADJActivityHandler.m in Sources */, + 0A584C4A2C3E94E70071A651 /* ADJActivityKind.m in Sources */, + 0A584C4B2C3E94E70071A651 /* ADJActivityPackage.m in Sources */, + 0A584C4C2C3E94E70071A651 /* ADJActivityState.m in Sources */, + 0A584C4D2C3E94E70071A651 /* ADJAdditions.m in Sources */, + 0A584C4E2C3E94E70071A651 /* ADJAdjustFactory.m in Sources */, + 0A584C4F2C3E94E70071A651 /* ADJAttributionHandler.m in Sources */, + 0A584C502C3E94E70071A651 /* ADJBackoffStrategy.m in Sources */, + 0A584C512C3E94E70071A651 /* ADJGlobalParameters.m in Sources */, + 0A584C522C3E94E70071A651 /* ADJPackageBuilder.m in Sources */, + 0A584C532C3E94E70071A651 /* ADJPackageHandler.m in Sources */, + 0A584C542C3E94E70071A651 /* ADJPackageParams.m in Sources */, + 0A584C552C3E94E70071A651 /* ADJPurchaseVerificationHandler.m in Sources */, + 0A584C562C3E94E70071A651 /* ADJRequestHandler.m in Sources */, + 0A584C572C3E94E70071A651 /* ADJResponseData.m in Sources */, + 0A584C582C3E94E70071A651 /* ADJSdkClickHandler.m in Sources */, + 0A584C592C3E94E70071A651 /* ADJSKAdNetwork.m in Sources */, + 0A584C5A2C3E94E70071A651 /* ADJTimerCycle.m in Sources */, + 0A584C5B2C3E94E70071A651 /* ADJTimerOnce.m in Sources */, + 0A584C5C2C3E94E70071A651 /* ADJUrlStrategy.m in Sources */, + 0A584C5D2C3E94E70071A651 /* ADJUserDefaults.m in Sources */, + 0A584C5E2C3E94E70071A651 /* ADJUtil.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 9679922418BBAE2800394606 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9679920C18BBAE2800394606 /* Adjust */; - targetProxy = 9679922318BBAE2800394606 /* PBXContainerItemProxy */; - }; - 9D7432051EB9F9CF00969F14 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9D7431E51EB9F9B700969F14 /* AdjustExampleTests */; - targetProxy = 9D7432041EB9F9CF00969F14 /* PBXContainerItemProxy */; - }; 9DE7C9001AE68EF1001556E5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 9679920C18BBAE2800394606 /* Adjust */; @@ -3634,7 +2857,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -3660,7 +2883,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -3691,17 +2914,17 @@ "$(inherited)", ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; - PRODUCT_NAME = AdjustSdkTv; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkTv; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; @@ -3719,17 +2942,17 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 15.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; - PRODUCT_NAME = AdjustSdkTv; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkTv; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Release; }; @@ -3753,12 +2976,12 @@ "ADJUST_IM=1", ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = AdjustSdkIm; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkIm; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -3779,12 +3002,12 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = "ADJUST_IM=1"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = AdjustSdkIm; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkIm; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -3793,6 +3016,7 @@ 0AB1CADC27DF671300509231 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + BITCODE_GENERATION_MODE = ""; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -3805,12 +3029,13 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = AdjustSdkWebBridge; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkWebBridge; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -3819,6 +3044,7 @@ 0AB1CADD27DF671300509231 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + BITCODE_GENERATION_MODE = ""; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; @@ -3830,12 +3056,13 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = AdjustSdkWebBridge; - PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdkWebBridge; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = AdjustSdk; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -3849,14 +3076,15 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustBridge; SKIP_INSTALL = YES; }; name = Debug; @@ -3869,13 +3097,14 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustBridge; SKIP_INSTALL = YES; }; name = Release; @@ -3884,7 +3113,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BITCODE_GENERATION_MODE = bitcode; + BITCODE_GENERATION_MODE = ""; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -3927,10 +3156,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-fembed-bitcode"; + OTHER_CFLAGS = ""; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; @@ -3938,7 +3168,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BITCODE_GENERATION_MODE = bitcode; + BITCODE_GENERATION_MODE = ""; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -3976,9 +3206,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_CFLAGS = "-fembed-bitcode"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + OTHER_CFLAGS = ""; SDKROOT = iphoneos; + TVOS_DEPLOYMENT_TARGET = 12.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -3986,23 +3217,23 @@ 9679923118BBAE2800394606 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - BITCODE_GENERATION_MODE = bitcode; + BITCODE_GENERATION_MODE = ""; CODE_SIGN_IDENTITY = "iPhone Developer"; DEAD_CODE_STRIPPING = NO; DSTROOT = /tmp/Adjust.dst; - ENABLE_BITCODE = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + ENABLE_BITCODE = ""; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(DEVELOPER_FRAMEWORKS_DIR)", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AdjustTests/AdjustUnitTests/Adjust-Prefix.pch"; + GCC_PREFIX_HEADER = ""; GCC_WARN_SIGN_COMPARE = YES; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = "include/$(PROJECT_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; STRIP_STYLE = "non-global"; }; @@ -4011,71 +3242,27 @@ 9679923218BBAE2800394606 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BITCODE_GENERATION_MODE = bitcode; + BITCODE_GENERATION_MODE = ""; CODE_SIGN_IDENTITY = "iPhone Developer"; DEAD_CODE_STRIPPING = NO; DSTROOT = /tmp/Adjust.dst; - ENABLE_BITCODE = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + ENABLE_BITCODE = ""; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(DEVELOPER_FRAMEWORKS_DIR)", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AdjustTests/AdjustUnitTests/Adjust-Prefix.pch"; + GCC_PREFIX_HEADER = ""; GCC_WARN_SIGN_COMPARE = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = "include/$(PROJECT_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = include/AdjustSdk; SKIP_INSTALL = YES; STRIP_STYLE = "non-global"; }; name = Release; }; - 9679923418BBAE2800394606 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AdjustTests/AdjustUnitTests/Adjust-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "AdjustTests/AdjustUnitTests/AdjustTests-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; - ONLY_ACTIVE_ARCH = NO; - OTHER_CFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "adjust.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AdjustExampleTests.app/AdjustExampleTests"; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - 9679923518BBAE2800394606 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEVELOPMENT_TEAM = QGUGW9AUMK; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "AdjustTests/AdjustUnitTests/Adjust-Prefix.pch"; - INFOPLIST_FILE = "AdjustTests/AdjustUnitTests/AdjustTests-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; - OTHER_CFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "adjust.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AdjustExampleTests.app/AdjustExampleTests"; - WRAPPER_EXTENSION = xctest; - }; - name = Release; - }; 96BCFBE91AC99FBD005A65C5 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4112,9 +3299,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkWebBridge/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4122,7 +3309,7 @@ ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkWebBridge; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = AdjustSdk; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4151,9 +3338,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkWebBridge/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4161,7 +3348,7 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkWebBridge; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = AdjustSdk; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4170,54 +3357,6 @@ }; name = Release; }; - 9D7431FA1EB9F9B700969F14 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = QGUGW9AUMK; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 9D7431FB1EB9F9B700969F14 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = QGUGW9AUMK; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; 9DE354D72100726300D211C9 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4243,9 +3382,9 @@ "$(inherited)", ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkIm/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4253,7 +3392,7 @@ ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkIm; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = AdjustSdk; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4283,9 +3422,9 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = "ADJUST_IM=1"; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkIm/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4293,7 +3432,7 @@ ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkIm; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = AdjustSdk; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4320,9 +3459,9 @@ EXCLUDED_ARCHS = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdk/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4359,9 +3498,9 @@ EXCLUDED_ARCHS = ""; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdk/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4397,7 +3536,7 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkTv/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4407,11 +3546,11 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkTv; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = AdjustSdk; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; VALID_ARCHS = "arm64 x86_64"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4435,7 +3574,7 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = AdjustSdkTv/Info.plist; + INFOPLIST_FILE = Info/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -4445,11 +3584,11 @@ MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustSdkTv; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = AdjustSdk; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; VALID_ARCHS = "arm64 x86_64"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -4522,15 +3661,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9679923318BBAE2800394606 /* Build configuration list for PBXNativeTarget "AdjustTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9679923418BBAE2800394606 /* Debug */, - 9679923518BBAE2800394606 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 96BCFBE81AC99FBD005A65C5 /* Build configuration list for PBXAggregateTarget "AdjustStatic" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4549,15 +3679,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9D7432031EB9F9B700969F14 /* Build configuration list for PBXNativeTarget "AdjustExampleTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9D7431FA1EB9F9B700969F14 /* Debug */, - 9D7431FB1EB9F9B700969F14 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 9DE354E52100726300D211C9 /* Build configuration list for PBXNativeTarget "AdjustSdkIm" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkIm.xcscheme b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkIm.xcscheme index d1dbb0785..94d400ef4 100644 --- a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkIm.xcscheme +++ b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkIm.xcscheme @@ -15,7 +15,7 @@ @@ -44,7 +44,7 @@ @@ -60,7 +60,7 @@ diff --git a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme index 0e9480f2e..5172a2b81 100644 --- a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme +++ b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkTv.xcscheme @@ -15,7 +15,7 @@ @@ -44,7 +44,7 @@ @@ -60,7 +60,7 @@ diff --git a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkWebBridge.xcscheme b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkWebBridge.xcscheme index 280533ba7..d4e3b7d9a 100644 --- a/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkWebBridge.xcscheme +++ b/Adjust.xcodeproj/xcshareddata/xcschemes/AdjustSdkWebBridge.xcscheme @@ -15,7 +15,7 @@ @@ -44,7 +44,7 @@ @@ -60,7 +60,7 @@ diff --git a/Adjust/ADJAdditions/NSData+ADJAdditions.h b/Adjust/ADJAdditions/NSData+ADJAdditions.h deleted file mode 100644 index 45a10c478..000000000 --- a/Adjust/ADJAdditions/NSData+ADJAdditions.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// NSData+ADJAdditions.h -// Adjust SDK -// -// Created by Pedro Filipe (@nonelse) on 26th March 2015. -// Copyright (c) 2015-2021 Adjust GmbH. All rights reserved. -// - -#import - -@interface NSData(ADJAdditions) - -- (NSString *)adjEncodeBase64; - -@end diff --git a/Adjust/ADJAdditions/NSData+ADJAdditions.m b/Adjust/ADJAdditions/NSData+ADJAdditions.m deleted file mode 100644 index fa2f9b5b4..000000000 --- a/Adjust/ADJAdditions/NSData+ADJAdditions.m +++ /dev/null @@ -1,66 +0,0 @@ -// -// NSData+ADJAdditions.m -// Adjust SDK -// -// Created by Pedro Filipe (@nonelse) on 26th March 2015. -// Copyright (c) 2015-2021 Adjust GmbH. All rights reserved. -// - -#import "NSData+ADJAdditions.h" - -@implementation NSData(ADJAdditions) - -static const char _base64EncodingTable[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -// http://stackoverflow.com/a/4727124 -- (NSString *)adjEncodeBase64 { - const unsigned char* objRawData = self.bytes; - char* objPointer; - char* strResult; - - // get the raw data length and ensure we actually have data - NSUInteger intLength = self.length; - if (intLength == 0) { - return nil; - } - - // setup the string-based result placeholder and pointer within that placeholder - strResult = (char *)calloc((((intLength + 2) / 3) * 4) + 1, sizeof(char)); - objPointer = strResult; - - // iterate through everything - while (intLength > 2) { // keep going until we have less than 24 bits - *objPointer++ = _base64EncodingTable[objRawData[0] >> 2]; - *objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)]; - *objPointer++ = _base64EncodingTable[((objRawData[1] & 0x0f) << 2) + (objRawData[2] >> 6)]; - *objPointer++ = _base64EncodingTable[objRawData[2] & 0x3f]; - - // we just handled 3 octets (24 bits) of data - objRawData += 3; - intLength -= 3; - } - - // now deal with the tail end of things - if (intLength != 0) { - *objPointer++ = _base64EncodingTable[objRawData[0] >> 2]; - if (intLength > 1) { - *objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)]; - *objPointer++ = _base64EncodingTable[(objRawData[1] & 0x0f) << 2]; - *objPointer++ = '='; - } else { - *objPointer++ = _base64EncodingTable[(objRawData[0] & 0x03) << 4]; - *objPointer++ = '='; - *objPointer++ = '='; - } - } - - // terminate the string-based result - *objPointer = '\0'; - - // return the results as an NSString object - NSString *encodedString = [NSString stringWithCString:strResult encoding:NSASCIIStringEncoding]; - free(strResult); - return encodedString; -} - -@end diff --git a/Adjust/ADJAdditions/NSNumber+ADJAdditions.h b/Adjust/ADJAdditions/NSNumber+ADJAdditions.h deleted file mode 100644 index 5db40a886..000000000 --- a/Adjust/ADJAdditions/NSNumber+ADJAdditions.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// NSNumber+ADJAdditions.h -// Adjust SDK -// -// Created by Uglješa Erceg (@uerceg) on 26th March 2021. -// Copyright (c) 2021 Adjust GmbH. All rights reserved. -// - -#import - -@interface NSNumber(ADJAdditions) - -+ (BOOL)adjIsEqual:(NSNumber *)first toNumber:(NSNumber *)second; - -@end diff --git a/Adjust/ADJAdditions/NSNumber+ADJAdditions.m b/Adjust/ADJAdditions/NSNumber+ADJAdditions.m deleted file mode 100644 index b148e4b78..000000000 --- a/Adjust/ADJAdditions/NSNumber+ADJAdditions.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// NSNumber+ADJAdditions.m -// Adjust SDK -// -// Created by Uglješa Erceg (@uerceg) on 26th March 2021. -// Copyright (c) 2021 Adjust GmbH. All rights reserved. -// - -#import "NSNumber+ADJAdditions.h" - -@implementation NSNumber(ADJAdditions) - -+ (BOOL)adjIsEqual:(NSNumber *)first toNumber:(NSNumber *)second { - if (first == nil && second == nil) { - return YES; - } - return [first isEqualToNumber:second]; -} - -@end diff --git a/Adjust/ADJAdditions/NSString+ADJAdditions.h b/Adjust/ADJAdditions/NSString+ADJAdditions.h deleted file mode 100644 index ace931844..000000000 --- a/Adjust/ADJAdditions/NSString+ADJAdditions.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// NSString+ADJAdditions.h -// Adjust SDK -// -// Created by Christian Wellenbrock (@wellle) on 23rd July 2012. -// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved. -// - -#import - -@interface NSString(ADJAdditions) - -- (NSString *)adjSha256; -- (NSString *)adjTrim; -- (NSString *)adjUrlEncode; -- (NSString *)adjUrlDecode; - -+ (NSString *)adjJoin:(NSString *)strings, ...; -+ (BOOL) adjIsEqual:(NSString *)first toString:(NSString *)second; - -@end diff --git a/Adjust/ADJAdditions/NSString+ADJAdditions.m b/Adjust/ADJAdditions/NSString+ADJAdditions.m deleted file mode 100644 index bd94e6ba9..000000000 --- a/Adjust/ADJAdditions/NSString+ADJAdditions.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// NSString+ADJAdditions.m -// Adjust SDK -// -// Created by Christian Wellenbrock (@wellle) on 23rd July 2012. -// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved. -// - -#import - -#import "NSString+ADJAdditions.h" - -@implementation NSString(ADJAdditions) - -+ (NSString *)adjJoin:(NSString *)first, ... { - NSString *iter, *result = first; - va_list strings; - va_start(strings, first); - while ((iter = va_arg(strings, NSString*))) { - NSString *capitalized = iter.capitalizedString; - result = [result stringByAppendingString:capitalized]; - } - va_end(strings); - return result; -} - -+ (BOOL)adjIsEqual:(NSString *)first toString:(NSString *)second { - if (first == nil && second == nil) { - return YES; - } - return [first isEqualToString:second]; -} - -- (NSString *)adjTrim { - return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; -} - -- (NSString *)adjUrlEncode { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( - NULL, - (CFStringRef)self, - NULL, - (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", - CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))); -#pragma clang diagnostic pop - // Alternative: - // return [self stringByAddingPercentEncodingWithAllowedCharacters: - // [NSCharacterSet characterSetWithCharactersInString:@"!*'\"();:@&=+$,/?%#[]% "]]; -} - -- (NSString *)adjUrlDecode { - return (NSString *)CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapes( - kCFAllocatorDefault, - (CFStringRef)self, - CFSTR(""))); -} - -- (NSString *)adjSha256 { - const char* str = [self UTF8String]; - unsigned char result[CC_SHA256_DIGEST_LENGTH]; - CC_SHA256(str, (CC_LONG)strlen(str), result); - NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; - for (int i = 0; i +@interface ADJAppStorePurchase : NSObject @property (nonatomic, copy, readonly, nonnull) NSString *transactionId; -@property (nonatomic, copy, readonly, nonnull) NSData *receipt; - @property (nonatomic, copy, readonly, nonnull) NSString *productId; - (nullable id)initWithTransactionId:(nonnull NSString *)transactionId - productId:(nonnull NSString *)productId - andReceipt:(nonnull NSData *)receipt; + productId:(nonnull NSString *)productId; @end diff --git a/Adjust/ADJPurchase.m b/Adjust/ADJAppStorePurchase.m similarity index 65% rename from Adjust/ADJPurchase.m rename to Adjust/ADJAppStorePurchase.m index 4313250a0..136823180 100644 --- a/Adjust/ADJPurchase.m +++ b/Adjust/ADJAppStorePurchase.m @@ -6,13 +6,12 @@ // Copyright © 2023 Adjust. All rights reserved. // -#import "ADJPurchase.h" +#import "ADJAppStorePurchase.h" -@implementation ADJPurchase +@implementation ADJAppStorePurchase - (nullable id)initWithTransactionId:(NSString *)transactionId - productId:(NSString *)productId - andReceipt:(NSData *)receipt { + productId:(NSString *)productId { self = [super init]; if (self == nil) { return nil; @@ -20,17 +19,15 @@ - (nullable id)initWithTransactionId:(NSString *)transactionId _transactionId = [transactionId copy]; _productId = [productId copy]; - _receipt = [receipt copy]; return self; } - (id)copyWithZone:(NSZone *)zone { - ADJPurchase *copy = [[[self class] allocWithZone:zone] init]; + ADJAppStorePurchase *copy = [[[self class] allocWithZone:zone] init]; if (copy) { copy->_transactionId = [self.transactionId copyWithZone:zone]; - copy->_receipt = [self.receipt copyWithZone:zone]; copy->_productId = [self.productId copyWithZone:zone]; } diff --git a/Adjust/ADJSubscription.h b/Adjust/ADJAppStoreSubscription.h similarity index 63% rename from Adjust/ADJSubscription.h rename to Adjust/ADJAppStoreSubscription.h index 92f5395ed..b50e087db 100644 --- a/Adjust/ADJSubscription.h +++ b/Adjust/ADJAppStoreSubscription.h @@ -1,5 +1,5 @@ // -// ADJSubscription.h +// ADJAppStoreSubscription.h // Adjust // // Created by Uglješa Erceg on 16.04.20. @@ -8,30 +8,25 @@ #import -@interface ADJSubscription : NSObject +@interface ADJAppStoreSubscription : NSObject -@property (nonatomic, copy, readonly, nonnull) NSDecimalNumber *price; // [M] revenue +@property (nonatomic, copy, readonly, nonnull) NSDecimalNumber *price; -@property (nonatomic, copy, readonly, nonnull) NSString *currency; // [M] currency +@property (nonatomic, copy, readonly, nonnull) NSString *currency; -@property (nonatomic, copy, readonly, nonnull) NSString *transactionId; // [M] transaction_id +@property (nonatomic, copy, readonly, nonnull) NSString *transactionId; -@property (nonatomic, copy, readonly, nonnull) NSData *receipt; // [M] receipt +@property (nonatomic, copy, readonly, nonnull) NSDate *transactionDate; -@property (nonatomic, copy, readonly, nonnull) NSString *billingStore; // [M] billing_store +@property (nonatomic, copy, readonly, nonnull) NSString *salesRegion; -@property (nonatomic, copy, readonly, nonnull) NSDate *transactionDate; // [O] transaction_date +@property (nonatomic, copy, readonly, nonnull) NSDictionary *callbackParameters; -@property (nonatomic, copy, readonly, nonnull) NSString *salesRegion; // [O] sales_region - -@property (nonatomic, copy, readonly, nonnull) NSDictionary *callbackParameters; // [O] callback_params - -@property (nonatomic, copy, readonly, nonnull) NSDictionary *partnerParameters; // [O] partner_params +@property (nonatomic, copy, readonly, nonnull) NSDictionary *partnerParameters; - (nullable id)initWithPrice:(nonnull NSDecimalNumber *)price currency:(nonnull NSString *)currency - transactionId:(nonnull NSString *)transactionId - andReceipt:(nonnull NSData *)receipt; + transactionId:(nonnull NSString *)transactionId; - (void)setTransactionDate:(nonnull NSDate *)transactionDate; diff --git a/Adjust/ADJSubscription.m b/Adjust/ADJAppStoreSubscription.m similarity index 88% rename from Adjust/ADJSubscription.m rename to Adjust/ADJAppStoreSubscription.m index 4b7b76cc1..939e3ba04 100644 --- a/Adjust/ADJSubscription.m +++ b/Adjust/ADJAppStoreSubscription.m @@ -1,5 +1,5 @@ // -// ADJSubscription.m +// ADJAppStoreSubscription.m // Adjust // // Created by Uglješa Erceg on 16.04.20. @@ -7,10 +7,10 @@ // #import "ADJUtil.h" -#import "ADJSubscription.h" +#import "ADJAppStoreSubscription.h" #import "ADJAdjustFactory.h" -@interface ADJSubscription() +@interface ADJAppStoreSubscription() @property (nonatomic, weak) id logger; @@ -20,12 +20,11 @@ @interface ADJSubscription() @end -@implementation ADJSubscription +@implementation ADJAppStoreSubscription - (nullable id)initWithPrice:(nonnull NSDecimalNumber *)price currency:(nonnull NSString *)currency - transactionId:(nonnull NSString *)transactionId - andReceipt:(nonnull NSData *)receipt { + transactionId:(nonnull NSString *)transactionId { self = [super init]; if (self == nil) { return nil; @@ -34,8 +33,6 @@ - (nullable id)initWithPrice:(nonnull NSDecimalNumber *)price _price = [price copy]; _currency = [currency copy]; _transactionId = [transactionId copy]; - _receipt = [receipt copy]; - _billingStore = @"iOS"; _logger = ADJAdjustFactory.logger; @@ -123,14 +120,12 @@ - (nonnull NSDictionary *)partnerParameters { } - (id)copyWithZone:(NSZone *)zone { - ADJSubscription *copy = [[[self class] allocWithZone:zone] init]; + ADJAppStoreSubscription *copy = [[[self class] allocWithZone:zone] init]; if (copy) { copy->_price = [self.price copyWithZone:zone]; copy->_currency = [self.currency copyWithZone:zone]; copy->_transactionId = [self.transactionId copyWithZone:zone]; - copy->_receipt = [self.receipt copyWithZone:zone]; - copy->_billingStore = [self.billingStore copyWithZone:zone]; copy->_transactionDate = [self.transactionDate copyWithZone:zone]; copy->_salesRegion = [self.salesRegion copyWithZone:zone]; copy.mutableCallbackParameters = [self.mutableCallbackParameters copyWithZone:zone]; diff --git a/Adjust/ADJAttribution.h b/Adjust/ADJAttribution.h index 845a909aa..6266e183d 100644 --- a/Adjust/ADJAttribution.h +++ b/Adjust/ADJAttribution.h @@ -48,11 +48,6 @@ */ @property (nonatomic, copy, nullable) NSString *clickLabel; -/** - * @brief Adjust identifier value. - */ -@property (nonatomic, copy, nullable) NSString *adid; - /** * @brief Cost type. */ @@ -72,13 +67,10 @@ * @brief Make attribution object. * * @param jsonDict Dictionary holding attribution key value pairs. - * @param adid Adjust identifier value. * * @return Adjust attribution object. */ -+ (nullable ADJAttribution *)dataWithJsonDict:(nonnull NSDictionary *)jsonDict adid:(nonnull NSString *)adid; - -- (nullable id)initWithJsonDict:(nonnull NSDictionary *)jsonDict adid:(nonnull NSString *)adid; +- (nullable id)initWithJsonDict:(nonnull NSDictionary *)jsonDict; /** * @brief Check if given attribution equals current one. diff --git a/Adjust/ADJAttribution.m b/Adjust/ADJAttribution.m index f65e41caf..68c2a67f4 100644 --- a/Adjust/ADJAttribution.m +++ b/Adjust/ADJAttribution.m @@ -8,18 +8,11 @@ #import "ADJUtil.h" #import "ADJAttribution.h" -#import "NSString+ADJAdditions.h" -#import "NSNumber+ADJAdditions.h" +#import "ADJAdditions.h" @implementation ADJAttribution -+ (ADJAttribution *)dataWithJsonDict:(NSDictionary *)jsonDict - adid:(NSString *)adid { - return [[ADJAttribution alloc] initWithJsonDict:jsonDict adid:adid]; -} - -- (id)initWithJsonDict:(NSDictionary *)jsonDict - adid:(NSString *)adid { +- (id)initWithJsonDict:(NSDictionary *)jsonDict { self = [super init]; if (self == nil) { return nil; @@ -35,7 +28,6 @@ - (id)initWithJsonDict:(NSDictionary *)jsonDict self.adgroup = [jsonDict objectForKey:@"adgroup"]; self.creative = [jsonDict objectForKey:@"creative"]; self.clickLabel = [jsonDict objectForKey:@"click_label"]; - self.adid = adid; self.costType = [jsonDict objectForKey:@"cost_type"]; self.costAmount = [jsonDict objectForKey:@"cost_amount"]; self.costCurrency = [jsonDict objectForKey:@"cost_currency"]; @@ -47,37 +39,34 @@ - (BOOL)isEqualToAttribution:(ADJAttribution *)attribution { if (attribution == nil) { return NO; } - if (![NSString adjIsEqual:self.trackerToken toString:attribution.trackerToken]) { + if (![ADJAdditions adjIsStringEqual:self.trackerToken toString:attribution.trackerToken]) { return NO; } - if (![NSString adjIsEqual:self.trackerName toString:attribution.trackerName]) { + if (![ADJAdditions adjIsStringEqual:self.trackerName toString:attribution.trackerName]) { return NO; } - if (![NSString adjIsEqual:self.network toString:attribution.network]) { + if (![ADJAdditions adjIsStringEqual:self.network toString:attribution.network]) { return NO; } - if (![NSString adjIsEqual:self.campaign toString:attribution.campaign]) { + if (![ADJAdditions adjIsStringEqual:self.campaign toString:attribution.campaign]) { return NO; } - if (![NSString adjIsEqual:self.adgroup toString:attribution.adgroup]) { + if (![ADJAdditions adjIsStringEqual:self.adgroup toString:attribution.adgroup]) { return NO; } - if (![NSString adjIsEqual:self.creative toString:attribution.creative]) { + if (![ADJAdditions adjIsStringEqual:self.creative toString:attribution.creative]) { return NO; } - if (![NSString adjIsEqual:self.clickLabel toString:attribution.clickLabel]) { + if (![ADJAdditions adjIsStringEqual:self.clickLabel toString:attribution.clickLabel]) { return NO; } - if (![NSString adjIsEqual:self.adid toString:attribution.adid]) { + if (![ADJAdditions adjIsStringEqual:self.costType toString:attribution.costType]) { return NO; } - if (![NSString adjIsEqual:self.costType toString:attribution.costType]) { + if (![ADJAdditions adjIsNumberEqual:self.costAmount toNumber:attribution.costAmount]) { return NO; } - if (![NSNumber adjIsEqual:self.costAmount toNumber:attribution.costAmount]) { - return NO; - } - if (![NSString adjIsEqual:self.costCurrency toString:attribution.costCurrency]) { + if (![ADJAdditions adjIsStringEqual:self.costCurrency toString:attribution.costCurrency]) { return NO; } @@ -108,9 +97,6 @@ - (NSDictionary *)dictionary { if (self.clickLabel != nil) { [responseDataDic setObject:self.clickLabel forKey:@"click_label"]; } - if (self.adid != nil) { - [responseDataDic setObject:self.adid forKey:@"adid"]; - } if (self.costType != nil) { [responseDataDic setObject:self.costType forKey:@"costType"]; } @@ -125,9 +111,9 @@ - (NSDictionary *)dictionary { } - (NSString *)description { - return [NSString stringWithFormat:@"tt:%@ tn:%@ net:%@ cam:%@ adg:%@ cre:%@ cl:%@ adid:%@ ct:%@ ca:%@ cc:%@", + return [NSString stringWithFormat:@"tt:%@ tn:%@ net:%@ cam:%@ adg:%@ cre:%@ cl:%@ ct:%@ ca:%@ cc:%@", self.trackerToken, self.trackerName, self.network, self.campaign, - self.adgroup, self.creative, self.clickLabel, self.adid, self.costType, + self.adgroup, self.creative, self.clickLabel, self.costType, self.costAmount, self.costCurrency]; } @@ -162,7 +148,6 @@ - (id)copyWithZone:(NSZone *)zone { copy.adgroup = [self.adgroup copyWithZone:zone]; copy.creative = [self.creative copyWithZone:zone]; copy.clickLabel = [self.clickLabel copyWithZone:zone]; - copy.adid = [self.adid copyWithZone:zone]; copy.costType = [self.costType copyWithZone:zone]; copy.costAmount = [self.costAmount copyWithZone:zone]; copy.costCurrency = [self.costCurrency copyWithZone:zone]; @@ -187,7 +172,6 @@ - (id)initWithCoder:(NSCoder *)decoder { self.adgroup = [decoder decodeObjectForKey:@"adgroup"]; self.creative = [decoder decodeObjectForKey:@"creative"]; self.clickLabel = [decoder decodeObjectForKey:@"click_label"]; - self.adid = [decoder decodeObjectForKey:@"adid"]; self.costType = [decoder decodeObjectForKey:@"costType"]; self.costAmount = [decoder decodeObjectForKey:@"costAmount"]; self.costCurrency = [decoder decodeObjectForKey:@"costCurrency"]; @@ -203,7 +187,6 @@ - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:self.adgroup forKey:@"adgroup"]; [encoder encodeObject:self.creative forKey:@"creative"]; [encoder encodeObject:self.clickLabel forKey:@"click_label"]; - [encoder encodeObject:self.adid forKey:@"adid"]; [encoder encodeObject:self.costType forKey:@"costType"]; [encoder encodeObject:self.costAmount forKey:@"costAmount"]; [encoder encodeObject:self.costCurrency forKey:@"costCurrency"]; diff --git a/Adjust/ADJConfig.h b/Adjust/ADJConfig.h index e9b916e85..35c5f1ddc 100644 --- a/Adjust/ADJConfig.h +++ b/Adjust/ADJConfig.h @@ -8,12 +8,15 @@ #import -#import "ADJLogger.h" -#import "ADJAttribution.h" -#import "ADJEventSuccess.h" -#import "ADJEventFailure.h" -#import "ADJSessionSuccess.h" -#import "ADJSessionFailure.h" +@class ADJLogger; +@class ADJAttribution; +@class ADJEventSuccess; +@class ADJEventFailure; +@class ADJSessionSuccess; +@class ADJSessionFailure; +typedef NS_ENUM(NSUInteger, ADJLogLevel); + +#pragma mark - AdjustDelegate methods /** * @brief Optional delegate that will get informed about tracking results. @@ -34,67 +37,62 @@ /** * @brief Optional delegate method that gets called when an event is tracked with success. * - * @param eventSuccessResponseData The response information from tracking with success + * @param eventSuccessResponse The response information from tracking with success * * @note See ADJEventSuccess for details. */ -- (void)adjustEventTrackingSucceeded:(nullable ADJEventSuccess *)eventSuccessResponseData; +- (void)adjustEventTrackingSucceeded:(nullable ADJEventSuccess *)eventSuccessResponse; /** * @brief Optional delegate method that gets called when an event is tracked with failure. * - * @param eventFailureResponseData The response information from tracking with failure + * @param eventFailureResponse The response information from tracking with failure * * @note See ADJEventFailure for details. */ -- (void)adjustEventTrackingFailed:(nullable ADJEventFailure *)eventFailureResponseData; +- (void)adjustEventTrackingFailed:(nullable ADJEventFailure *)eventFailureResponse; /** - * @brief Optional delegate method that gets called when an session is tracked with success. + * @brief Optional delegate method that gets called when a session is tracked with success. * - * @param sessionSuccessResponseData The response information from tracking with success + * @param sessionSuccessResponse The response information from tracking with success * * @note See ADJSessionSuccess for details. */ -- (void)adjustSessionTrackingSucceeded:(nullable ADJSessionSuccess *)sessionSuccessResponseData; +- (void)adjustSessionTrackingSucceeded:(nullable ADJSessionSuccess *)sessionSuccessResponse; /** - * @brief Optional delegate method that gets called when an session is tracked with failure. + * @brief Optional delegate method that gets called when a session is tracked with failure. * - * @param sessionFailureResponseData The response information from tracking with failure + * @param sessionFailureResponse The response information from tracking with failure * * @note See ADJSessionFailure for details. */ -- (void)adjustSessionTrackingFailed:(nullable ADJSessionFailure *)sessionFailureResponseData; +- (void)adjustSessionTrackingFailed:(nullable ADJSessionFailure *)sessionFailureResponse; /** - * @brief Optional delegate method that gets called when a deferred deep link is about to be opened by the adjust SDK. + * @brief Optional delegate method that gets called when a deferred deep link is about to be + * opened by the Adjust SDK. * - * @param deeplink The deep link url that was received by the adjust SDK to be opened. + * @param deeplink The deferred deep link URL that was received by the Adjust SDK to be opened. * - * @return Boolean that indicates whether the deep link should be opened by the adjust SDK or not. + * @return Boolean that indicates whether the deep link should be opened by the Adjust SDK or not. */ -- (BOOL)adjustDeeplinkResponse:(nullable NSURL *)deeplink; +- (BOOL)adjustDeferredDeeplinkReceived:(nullable NSURL *)deeplink; /** - * @brief Optional SKAdNetwork pre 4.0 style delegate method that gets called when Adjust SDK sets conversion value for the user. + * @brief Optional SKAdNetwork delegate method that gets called when Adjust SDK updates conversion + * value for the user. + * The conversionData dictionary will contain string representation for the values set by + * Adjust SDK and possible API invocation error. + * Avalable keys are "conversion_value", "coarse_value", "lock_window" and "error". + * Example: {"conversion_value":"1", "coarse_value":"low", "lock_window":"false"} + * You can use this callback even while using pre 4.0 SKAdNetwork. + * In that case the dictionary will contain only "conversion_value" key. * - * @param conversionValue Conversion value used by Adjust SDK to invoke updateConversionValue: API. + * @param data Conversion parameters set by Adjust SDK. */ -- (void)adjustConversionValueUpdated:(nullable NSNumber *)conversionValue; - -/** - * @brief Optional SKAdNetwork 4.0 style delegate method that gets called when Adjust SDK sets conversion value for the user. - * You can use this callback even with using pre 4.0 SKAdNetwork. - * In that case you can expect coarseValue and lockWindow values to be nil. - * - * @param fineValue Conversion value set by Adjust SDK. - * @param coarseValue Coarse value set by Adjust SDK. - * @param lockWindow Lock window set by Adjust SDK. - */ -- (void)adjustConversionValueUpdated:(nullable NSNumber *)fineValue - coarseValue:(nullable NSString *)coarseValue - lockWindow:(nullable NSNumber *)lockWindow; +- (void)adjustSkanUpdatedWithConversionData:(nonnull NSDictionary *)data; @end @@ -103,19 +101,7 @@ */ @interface ADJConfig : NSObject -/** - * @brief SDK prefix. - * - * @note Not to be used by users, intended for non-native adjust SDKs only. - */ -@property (nonatomic, copy, nullable) NSString *sdkPrefix; - -/** - * @brief Default tracker to attribute organic installs to (optional). - */ -@property (nonatomic, copy, nullable) NSString *defaultTracker; - -@property (nonatomic, copy, nullable) NSString *externalDeviceId; +#pragma mark - ADJConfig readonly properties /** * @brief Adjust app token. @@ -128,114 +114,139 @@ @property (nonatomic, copy, readonly, nonnull) NSString *environment; /** - * @brief Change the verbosity of Adjust's logs. + * @brief Indicator of whether sending in the background is enabled or not. * - * @note You can increase or reduce the amount of logs from Adjust by passing - * one of the following parameters. Use ADJLogLevelSuppress to disable all logging. - * The desired minimum log level (default: info) - * Must be one of the following: - * - ADJLogLevelVerbose (enable all logging) - * - ADJLogLevelDebug (enable more logging) - * - ADJLogLevelInfo (the default) - * - ADJLogLevelWarn (disable info logging) - * - ADJLogLevelError (disable warnings as well) - * - ADJLogLevelAssert (disable errors as well) - * - ADJLogLevelSuppress (suppress all logging) + * @note It is disabled by default. */ -@property (nonatomic, assign) ADJLogLevel logLevel; +@property (nonatomic, readonly) BOOL isSendingInBackgroundEnabled; /** - * @brief Enable event buffering if your app triggers a lot of events. - * When enabled, events get buffered and only get tracked each - * minute. Buffered events are still persisted, of course. + * @brief Indicator of whether reading of AdServices.framework data is enabled or not. + * + * @note It is enabled by default. */ -@property (nonatomic, assign) BOOL eventBufferingEnabled; +@property (nonatomic, readonly) BOOL isAdServicesEnabled; /** - * @brief Set the optional delegate that will inform you about attribution or events. + * @brief Indicator of whether reading of IDFA is enabled or not. * - * @note See the AdjustDelegate declaration above for details. + * @note It is enabled by default. */ -@property (nonatomic, weak, nullable) NSObject *delegate; +@property (nonatomic, readonly) BOOL isIdfaReadingEnabled; /** - * @brief Enables sending in the background. + * @brief Indicator of whether reading of IDFV is enabled or not. + * + * @note It is enabled by default. */ -@property (nonatomic, assign) BOOL sendInBackground; +@property (nonatomic, readonly) BOOL isIdfvReadingEnabled; /** - * @brief Enables/disables reading of iAd framework data needed for ASA tracking. + * @brief Indicator of whether SKAdNetwork (SKAN) attribution is enabled or not. + * + * @note It is enabled by default. */ -@property (nonatomic, assign) BOOL allowiAdInfoReading DEPRECATED_MSG_ATTRIBUTE("Apple Search Ads attribution with usage of iAd.framework has been sunset by Apple as of February 7th 2023"); +@property (nonatomic, readonly) BOOL isSkanAttributionEnabled; /** - * @brief Enables/disables reading of AdServices framework data needed for attribution. + * @brief Set if cost data is needed in attribution response. + * + * @note It is disabled by default. */ -@property (nonatomic, assign) BOOL allowAdServicesInfoReading; +@property (nonatomic, readonly) BOOL isCostDataInAttributionEnabled; /** - * @brief Enables/disables reading of IDFA parameter. + * @brief Indicator of whether LinkMe feature is enabled or not. + * + * @note It is disabled by defailt. */ -@property (nonatomic, assign) BOOL allowIdfaReading; +@property (nonatomic, readonly) BOOL isLinkMeEnabled; /** - * @brief Enables delayed start of the SDK. + * @brief Enables caching of device IDs to read it only once. + * + * @note It is disabled by default. */ -@property (nonatomic, assign) double delayStart; +@property (nonatomic, readonly) BOOL isDeviceIdsReadingOnceEnabled; /** - * @brief Define how many seconds to wait for ATT status before sending the first data. + * @brief Array of domains to be used as part of the URL strategy. */ -@property (nonatomic, assign) NSUInteger attConsentWaitingInterval; +@property (nonatomic, copy, readonly, nullable) NSArray *urlStrategyDomains; /** - * @brief User agent for the requests. + * @brief Indicator of whether Adjust-like subdomains should be made out of custom set domains. */ -@property (nonatomic, copy, nullable) NSString *userAgent; +@property (nonatomic, readonly) BOOL useSubdomains; /** - * @brief Set if the device is known. + * @brief Indicator of whether URL strategy is a data residency one or not. */ -@property (nonatomic, assign) BOOL isDeviceKnown; +@property (nonatomic, readonly) BOOL isDataResidency; /** - * @brief Set if cost data is needed in attribution response. + * @brief Indicator of whether SDK should start in COPPA compliant mode or not. */ -@property (nonatomic, assign) BOOL needsCost; +@property (nonatomic, readonly) BOOL isCoppaComplianceEnabled; + +#pragma mark - AdjustConfig assignable properties /** - * @brief Adjust app secret id. + * @brief Set the optional delegate that will inform you about attribution or events. + * + * @note See the AdjustDelegate declaration above for details. */ -@property (nonatomic, copy, readonly, nullable) NSString *secretId; +@property (nonatomic, weak, nullable) NSObject *delegate; /** - * @brief Adjust app secret. + * @brief SDK prefix. + * + * @note Not to be used by users, intended for non-native adjust SDKs only. */ -@property (nonatomic, copy, readonly, nullable) NSString *appSecret; +@property (nonatomic, copy, nullable) NSString *sdkPrefix; /** - * @brief Adjust set app secret. + * @brief Change the verbosity of Adjust's logs. + * + * @note You can increase or reduce the amount of logs from Adjust by passing + * one of the following parameters. Use ADJLogLevelSuppress to disable all logging. + * The desired minimum log level (default: info) + * Must be one of the following: + * - ADJLogLevelVerbose (enable all logging) + * - ADJLogLevelDebug (enable more logging) + * - ADJLogLevelInfo (the default) + * - ADJLogLevelWarn (disable info logging) + * - ADJLogLevelError (disable warnings as well) + * - ADJLogLevelAssert (disable errors as well) + * - ADJLogLevelSuppress (suppress all logging) */ -- (void)setAppSecret:(NSUInteger)secretId - info1:(NSUInteger)info1 - info2:(NSUInteger)info2 - info3:(NSUInteger)info3 - info4:(NSUInteger)info4; - +@property (nonatomic, assign) ADJLogLevel logLevel; -@property (nonatomic, assign, readonly) BOOL isSKAdNetworkHandlingActive; +/** + * @brief Default tracker to attribute organic installs to (optional). + */ +@property (nonatomic, copy, nullable) NSString *defaultTracker; -- (void)deactivateSKAdNetworkHandling; +/** + * @brief Custom defined unique device ID (optional). + * + * @note Make sure to have a UNIQUE external ID for each user / device. + */ +@property (nonatomic, copy, nullable) NSString *externalDeviceId; /** - * @brief Adjust url strategy. + * @brief Define how many seconds to wait for ATT status before sending the first data. */ -@property (nonatomic, copy, readwrite, nullable) NSString *urlStrategy; +@property (nonatomic, assign) NSUInteger attConsentWaitingInterval; /** - * @brief Enables/disables linkMe + * @brief Maximum number of deduplication IDs to be stored by the SDK. + * + * @note If not set, maximum is 10. */ -@property (nonatomic, assign) BOOL linkMeEnabled; +@property (nonatomic, assign) NSInteger eventDeduplicationIdsMaxSize; + +# pragma mark - AdjustConfig construtors /** * @brief Get configuration object for the initialization of the Adjust SDK. @@ -250,11 +261,9 @@ * * @returns Adjust configuration object. */ -+ (nullable ADJConfig *)configWithAppToken:(nonnull NSString *)appToken - environment:(nonnull NSString *)environment; -- (nullable id)initWithAppToken:(nonnull NSString *)appToken - environment:(nonnull NSString *)environment; +- (nullable ADJConfig *)initWithAppToken:(nonnull NSString *)appToken + environment:(nonnull NSString *)environment; /** * @brief Configuration object for the initialization of the Adjust SDK. @@ -271,29 +280,77 @@ * * @returns Adjust configuration object. */ -+ (nullable ADJConfig *)configWithAppToken:(nonnull NSString *)appToken - environment:(nonnull NSString *)environment - allowSuppressLogLevel:(BOOL)allowSuppressLogLevel; +- (nullable ADJConfig *)initWithAppToken:(nonnull NSString *)appToken + environment:(nonnull NSString *)environment + suppressLogLevel:(BOOL)allowSuppressLogLevel; -- (nullable id)initWithAppToken:(nonnull NSString *)appToken - environment:(nonnull NSString *)environment - allowSuppressLogLevel:(BOOL)allowSuppressLogLevel; +#pragma mark - AdjustConfig instance methods /** - * @brief Check if adjust configuration object is valid. + * @brief Check if Adjust configuration object is valid. * - * @return Boolean indicating whether adjust config object is valid or not. + * @return Boolean indicating whether Adjust config object is valid or not. */ - (BOOL)isValid; - + /** - * @brief Enable COPPA (Children's Online Privacy Protection Act) compliant for the application. + * @brief A method for disabling SDK's handling of AdServices.framework. */ -@property (nonatomic, assign) BOOL coppaCompliantEnabled; +- (void)disableAdServices; /** - * @brief Enables caching of device ids to read it only once + * @brief A method for disabling the reading of IDFA parameter. + */ +- (void)disableIdfaReading; + +/** + * @brief A method for disabling the reading of IDFV parameter. + */ +- (void)disableIdfvReading; + +/** + * @brief A method for disabling SKAdNetwork (SKAN) attribution. + */ +- (void)disableSkanAttribution; + +/** + * @brief A method for enabling of sending in the background. + */ +- (void)enableSendingInBackground; + +/** + * @brief A method to enable LinkMe feature. + */ +- (void)enableLinkMe; + +/** + * @brief A method to enable reading of the device IDs just once. + */ +- (void)enableDeviceIdsReadingOnce; + +/** + * @brief A method to enable obtaining of cost data inside of the attribution callback. + */ +- (void)enableCostDataInAttribution; + +/** + * @brief A method to configure SDK to start in COPPA compliant mode. + */ +- (void)enableCoppaCompliance; + +/** + * @brief A method to set custom URL strategy. + * + * @param urlStrategyDomains Array of domains to be used as part of the URL strategy. + * @param useSubdomains Array of domains to be used as part of the URL strategy. + * @param isDataResidency Indicator of whether URL strategy is a data residency one or not. + * + * @note If not set, by default SDK will attempt to send traffic to: + * - {analytics,consent}.adjust.com + * - {analytics,consent}.adjust.world */ -@property (nonatomic, assign) BOOL readDeviceInfoOnceEnabled; +- (void)setUrlStrategy:(nullable NSArray *)urlStrategyDomains + useSubdomains:(BOOL)useSubdomains + isDataResidency:(BOOL)isDataResidency; @end diff --git a/Adjust/ADJConfig.m b/Adjust/ADJConfig.m index 2da00ec87..5918a3b13 100644 --- a/Adjust/ADJConfig.m +++ b/Adjust/ADJConfig.m @@ -10,7 +10,6 @@ #import "ADJAdjustFactory.h" #import "ADJLogger.h" #import "ADJUtil.h" -#import "Adjust.h" @interface ADJConfig() @@ -20,27 +19,16 @@ @interface ADJConfig() @implementation ADJConfig -+ (ADJConfig *)configWithAppToken:(NSString *)appToken - environment:(NSString *)environment { - return [[ADJConfig alloc] initWithAppToken:appToken environment:environment]; -} - -+ (ADJConfig *)configWithAppToken:(NSString *)appToken - environment:(NSString *)environment - allowSuppressLogLevel:(BOOL)allowSuppressLogLevel { - return [[ADJConfig alloc] initWithAppToken:appToken environment:environment allowSuppressLogLevel:allowSuppressLogLevel]; -} - -- (id)initWithAppToken:(NSString *)appToken - environment:(NSString *)environment { +- (nullable ADJConfig *)initWithAppToken:(nonnull NSString *)appToken + environment:(nonnull NSString *)environment { return [self initWithAppToken:appToken environment:environment - allowSuppressLogLevel:NO]; + suppressLogLevel:NO]; } -- (id)initWithAppToken:(NSString *)appToken - environment:(NSString *)environment - allowSuppressLogLevel:(BOOL)allowSuppressLogLevel { +- (nullable ADJConfig *)initWithAppToken:(nonnull NSString *)appToken + environment:(nonnull NSString *)environment + suppressLogLevel:(BOOL)allowSuppressLogLevel { self = [super init]; if (self == nil) { return nil; @@ -65,13 +53,16 @@ - (id)initWithAppToken:(NSString *)appToken _environment = environment; // default values - self.sendInBackground = NO; - self.eventBufferingEnabled = NO; - self.coppaCompliantEnabled = NO; - self.allowIdfaReading = YES; - self.allowAdServicesInfoReading = YES; - self.linkMeEnabled = NO; - _isSKAdNetworkHandlingActive = YES; + _isSendingInBackgroundEnabled = NO; + _isAdServicesEnabled = YES; + _isLinkMeEnabled = NO; + _isIdfaReadingEnabled = YES; + _isIdfvReadingEnabled = YES; + _isSkanAttributionEnabled = YES; + _eventDeduplicationIdsMaxSize = -1; + _isDeviceIdsReadingOnceEnabled = NO; + _isCostDataInAttributionEnabled = NO; + _isCoppaComplianceEnabled = NO; return self; } @@ -86,8 +77,58 @@ - (void)setLogLevel:(ADJLogLevel)logLevel isProductionEnvironment:[ADJEnvironmentProduction isEqualToString:environment]]; } -- (void)deactivateSKAdNetworkHandling { - _isSKAdNetworkHandlingActive = NO; +- (void)disableIdfaReading { + _isIdfaReadingEnabled = NO; +} + +- (void)disableIdfvReading { + _isIdfvReadingEnabled = NO; +} + +- (void)disableSkanAttribution { + _isSkanAttributionEnabled = NO; +} + +- (void)enableLinkMe { + _isLinkMeEnabled = YES; +} + +- (void)enableDeviceIdsReadingOnce { + _isDeviceIdsReadingOnceEnabled = YES; +} + +- (void)enableSendingInBackground { + _isSendingInBackgroundEnabled = YES; +} + +- (void)disableAdServices { + _isAdServicesEnabled = NO; +} + +- (void)enableCostDataInAttribution { + _isCostDataInAttributionEnabled = YES; +} + +- (void)enableCoppaCompliance { + _isCoppaComplianceEnabled = YES; +} + +- (void)setUrlStrategy:(nullable NSArray *)urlStrategyDomains + useSubdomains:(BOOL)useSubdomains + isDataResidency:(BOOL)isDataResidency { + if (urlStrategyDomains == nil) { + return; + } + if (urlStrategyDomains.count == 0) { + return; + } + + if (_urlStrategyDomains == nil) { + _urlStrategyDomains = [NSArray arrayWithArray:urlStrategyDomains]; + } + + _useSubdomains = useSubdomains; + _isDataResidency = isDataResidency; } - (void)setDelegate:(NSObject *)delegate { @@ -104,35 +145,29 @@ - (void)setDelegate:(NSObject *)delegate { [self.logger debug:@"Delegate implements adjustAttributionChanged:"]; hasResponseDelegate = YES; } - if ([delegate respondsToSelector:@selector(adjustEventTrackingSucceeded:)]) { [self.logger debug:@"Delegate implements adjustEventTrackingSucceeded:"]; hasResponseDelegate = YES; } - if ([delegate respondsToSelector:@selector(adjustEventTrackingFailed:)]) { [self.logger debug:@"Delegate implements adjustEventTrackingFailed:"]; hasResponseDelegate = YES; } - if ([delegate respondsToSelector:@selector(adjustSessionTrackingSucceeded:)]) { [self.logger debug:@"Delegate implements adjustSessionTrackingSucceeded:"]; hasResponseDelegate = YES; } - if ([delegate respondsToSelector:@selector(adjustSessionTrackingFailed:)]) { [self.logger debug:@"Delegate implements adjustSessionTrackingFailed:"]; hasResponseDelegate = YES; } - - if ([delegate respondsToSelector:@selector(adjustDeeplinkResponse:)]) { - [self.logger debug:@"Delegate implements adjustDeeplinkResponse:"]; + if ([delegate respondsToSelector:@selector(adjustDeferredDeeplinkReceived:)]) { + [self.logger debug:@"Delegate implements adjustDeferredDeeplinkReceived:"]; // does not enable hasDelegate flag implementsDeeplinkCallback = YES; } - - if ([delegate respondsToSelector:@selector(adjustConversionValueUpdated:)]) { - [self.logger debug:@"Delegate implements adjustConversionValueUpdated:"]; + if ([delegate respondsToSelector:@selector(adjustSkanUpdatedWithConversionData:)]) { + [self.logger debug:@"Delegate implements adjustSkanUpdatedWithConversionData:"]; hasResponseDelegate = YES; } @@ -177,19 +212,6 @@ - (BOOL)isValid { return self.appToken != nil; } -- (void)setAppSecret:(NSUInteger)secretId - info1:(NSUInteger)info1 - info2:(NSUInteger)info2 - info3:(NSUInteger)info3 - info4:(NSUInteger)info4 { - _secretId = [NSString stringWithFormat:@"%lu", (unsigned long)secretId]; - _appSecret = [NSString stringWithFormat:@"%lu%lu%lu%lu", - (unsigned long)info1, - (unsigned long)info2, - (unsigned long)info3, - (unsigned long)info4]; -} - - (id)copyWithZone:(NSZone *)zone { ADJConfig *copy = [[[self class] allocWithZone:zone] init]; if (copy) { @@ -198,24 +220,22 @@ - (id)copyWithZone:(NSZone *)zone { copy.logLevel = self.logLevel; copy.sdkPrefix = [self.sdkPrefix copyWithZone:zone]; copy.defaultTracker = [self.defaultTracker copyWithZone:zone]; - copy.eventBufferingEnabled = self.eventBufferingEnabled; - copy.sendInBackground = self.sendInBackground; - copy.allowIdfaReading = self.allowIdfaReading; - copy.allowAdServicesInfoReading = self.allowAdServicesInfoReading; - copy.delayStart = self.delayStart; + copy->_isSendingInBackgroundEnabled = self.isSendingInBackgroundEnabled; + copy->_isAdServicesEnabled = self.isAdServicesEnabled; copy.attConsentWaitingInterval = self.attConsentWaitingInterval; - copy.coppaCompliantEnabled = self.coppaCompliantEnabled; - copy.userAgent = [self.userAgent copyWithZone:zone]; copy.externalDeviceId = [self.externalDeviceId copyWithZone:zone]; - copy.isDeviceKnown = self.isDeviceKnown; - copy.needsCost = self.needsCost; - copy->_secretId = [self.secretId copyWithZone:zone]; - copy->_appSecret = [self.appSecret copyWithZone:zone]; - copy->_isSKAdNetworkHandlingActive = self.isSKAdNetworkHandlingActive; - copy->_urlStrategy = [self.urlStrategy copyWithZone:zone]; - copy.linkMeEnabled = self.linkMeEnabled; - copy.readDeviceInfoOnceEnabled = self.readDeviceInfoOnceEnabled; - // adjust delegate not copied + copy->_isCostDataInAttributionEnabled = self.isCostDataInAttributionEnabled; + copy->_isCoppaComplianceEnabled = self.isCoppaComplianceEnabled; + copy->_isSkanAttributionEnabled = self.isSkanAttributionEnabled; + copy->_urlStrategyDomains = [self.urlStrategyDomains copyWithZone:zone]; + copy->_useSubdomains = self.useSubdomains; + copy->_isDataResidency = self.isDataResidency; + copy->_isLinkMeEnabled = self.isLinkMeEnabled; + copy->_isIdfaReadingEnabled = self.isIdfaReadingEnabled; + copy->_isIdfvReadingEnabled = self.isIdfvReadingEnabled; + copy->_isDeviceIdsReadingOnceEnabled = self.isDeviceIdsReadingOnceEnabled; + copy.eventDeduplicationIdsMaxSize = self.eventDeduplicationIdsMaxSize; + // AdjustDelegate not copied } return copy; diff --git a/Adjust/ADJDeeplink.h b/Adjust/ADJDeeplink.h new file mode 100644 index 000000000..1e4595123 --- /dev/null +++ b/Adjust/ADJDeeplink.h @@ -0,0 +1,17 @@ +// +// ADJDeeplink.h +// Adjust +// +// Created by Uglješa Erceg (@uerceg) on 18th July 2024. +// Copyright © 2024-Present Adjust. All rights reserved. +// + +#import + +@interface ADJDeeplink : NSObject + +@property (nonatomic, copy, readonly, nonnull) NSURL *deeplink; + +- (nullable ADJDeeplink *)initWithDeeplink:(nonnull NSURL *)deeplink; + +@end diff --git a/Adjust/ADJDeeplink.m b/Adjust/ADJDeeplink.m new file mode 100644 index 000000000..8d4b52b07 --- /dev/null +++ b/Adjust/ADJDeeplink.m @@ -0,0 +1,24 @@ +// +// ADJDeeplink.m +// Adjust +// +// Created by Uglješa Erceg (@uerceg) on 18th July 2024. +// Copyright © 2024-Present Adjust. All rights reserved. +// + +#import "ADJDeeplink.h" + +@implementation ADJDeeplink + +- (id)initWithDeeplink:(NSURL *)deeplink { + self = [super init]; + if (self == nil) { + return nil; + } + + _deeplink = deeplink; + + return self; +} + +@end diff --git a/Adjust/ADJEvent.h b/Adjust/ADJEvent.h index a95e7d489..b64027cac 100644 --- a/Adjust/ADJEvent.h +++ b/Adjust/ADJEvent.h @@ -13,20 +13,25 @@ */ @interface ADJEvent : NSObject +/** + * @brief Event token. + */ +@property (nonatomic, copy, readonly, nonnull) NSString *eventToken; + /** * @brief Revenue attached to the event. */ @property (nonatomic, copy, readonly, nonnull) NSNumber *revenue; /** - * @brief Event token. + * @brief Currency value. */ -@property (nonatomic, copy, readonly, nonnull) NSString *eventToken; +@property (nonatomic, copy, readonly, nonnull) NSString *currency; /** - * @brief IAP transaction ID. + * @brief Deduplication ID. */ -@property (nonatomic, copy, readonly, nonnull) NSString *transactionId; +@property (nonatomic, copy, readonly, nonnull) NSString *deduplicationId; /** * @brief Custom user defined event ID. @@ -34,14 +39,14 @@ @property (nonatomic, copy, readonly, nonnull) NSString *callbackId; /** - * @brief Currency value. + * @brief IAP transaction ID. */ -@property (nonatomic, copy, readonly, nonnull) NSString *currency; +@property (nonatomic, copy, readonly, nonnull) NSString *transactionId; /** - * @brief IAP receipt. + * @brief IAP product ID. */ -@property (nonatomic, copy, readonly, nonnull) NSData *receipt; +@property (nonatomic, copy, readonly, nonnull) NSString *productId; /** * @brief List of partner parameters. @@ -53,46 +58,20 @@ */ @property (nonatomic, readonly, nonnull) NSDictionary *callbackParameters; -/** - * @brief Is the given receipt empty. - */ -@property (nonatomic, assign, readonly) BOOL emptyReceipt; - -/** - * @brief IAP product ID. - */ -@property (nonatomic, copy, readonly, nonnull) NSString *productId; - /** * @brief Create Event object with event token. * * @param eventToken Event token that is created in the dashboard * at http://adjust.com and should be six characters long. */ -+ (nullable ADJEvent *)eventWithEventToken:(nonnull NSString *)eventToken; - - (nullable id)initWithEventToken:(nonnull NSString *)eventToken; /** - * @brief Add a key-pair to a callback URL. - * - * @param key String key in the callback URL. - * @param value String value of the key in the Callback URL. - * - * @note In your dashboard at http://adjust.com you can assign a callback URL to each - * event type. That URL will get called every time the event is triggered. On - * top of that you can add callback parameters to the following method that - * will be forwarded to these callbacks. - */ -- (void)addCallbackParameter:(nonnull NSString *)key value:(nonnull NSString *)value; - -/** - * @brief Add a key-pair to be fowarded to a partner. + * @brief Check if created adjust event object is valid. * - * @param key String key to be fowarded to the partner. - * @param value String value of the key to be fowarded to the partner. + * @return Boolean indicating whether the adjust event object is valid or not. */ -- (void)addPartnerParameter:(nonnull NSString *)key value:(nonnull NSString *)value; +- (BOOL)isValid; /** * @brief Set the revenue and associated currency of the event. @@ -107,53 +86,56 @@ - (void)setRevenue:(double)amount currency:(nonnull NSString *)currency; /** - * @brief Set the transaction ID of a In-App Purchases to avoid revenue duplications. + * @brief Add a key-pair to a callback URL. * - * @note A transaction ID can be used to avoid duplicate revenue events. The last ten - * transaction identifiers are remembered. + * @param key String key in the callback URL. + * @param value String value of the key in the Callback URL. * - * @param transactionId The identifier used to avoid duplicate revenue events. + * @note In your dashboard at http://adjust.com you can assign a callback URL to each + * event type. That URL will get called every time the event is triggered. On + * top of that you can add callback parameters to the following method that + * will be forwarded to these callbacks. */ -- (void)setTransactionId:(nonnull NSString *)transactionId; +- (void)addCallbackParameter:(nonnull NSString *)key value:(nonnull NSString *)value; /** - * @brief Set the custom user defined ID for the event which will be reported in - * success/failure callbacks. + * @brief Add a key-pair to be forwarded to a partner. * - * @param callbackId Custom user defined identifier for the event + * @param key String key to be forwarded to the partner. + * @param value String value of the key to be forwarded to the partner. */ -- (void)setCallbackId:(nonnull NSString *)callbackId; +- (void)addPartnerParameter:(nonnull NSString *)key value:(nonnull NSString *)value; /** - * @brief Set the product ID of a In-App Purchases to perform IAP verification. + * @brief Set the deduplication ID to avoid events duplications. * - * @param productId The product ID of the purchased item. + * @note A deduplication ID can be used to avoid duplicate events. + * The number of last remembered deduplication identifiers can be set in deduplicationIdsMaxSize of ADJConfig. + * + * @param deduplicationId The identifier used to avoid duplicate events. */ -- (void)setProductId:(NSString * _Nonnull)productId; +- (void)setDeduplicationId:(nonnull NSString *)deduplicationId; /** - * @brief Set the receipt of a In-App Purchases to perform IAP verification. + * @brief Set the custom user defined ID for the event which will be reported in + * success/failure callbacks. * - * @param receipt The receipt obtained after successful IAP. + * @param callbackId Custom user defined identifier for the event */ -- (void)setReceipt:(NSData * _Nonnull)receipt; +- (void)setCallbackId:(nonnull NSString *)callbackId; /** - * @brief Check if created adjust event object is valid. + * @brief Set the transaction ID of an In-App Purchases to avoid revenue duplications. * - * @return Boolean indicating whether the adjust event object is valid or not. + * @param transactionId The identifier used to avoid duplicate revenue events. */ -- (BOOL)isValid; +- (void)setTransactionId:(nonnull NSString *)transactionId; /** - * @brief Validate a in-app-purchase receipt. - * - * @param receipt The receipt to validate. - * @param transactionId The identifier used to validate the receipt and to avoid duplicate revenue events. + * @brief Set the product ID of an In-App Purchases to perform IAP verification. * - * @note This method is obsolete and should not be used. - * For more information, visit: https://github.com/adjust/ios_purchase_sdk + * @param productId The product ID of the purchased item. */ -- (void)setReceipt:(nonnull NSData *)receipt transactionId:(nonnull NSString *)transactionId; +- (void)setProductId:(NSString * _Nonnull)productId; @end diff --git a/Adjust/ADJEvent.m b/Adjust/ADJEvent.m index e97de4da8..86a2311b4 100644 --- a/Adjust/ADJEvent.m +++ b/Adjust/ADJEvent.m @@ -13,17 +13,15 @@ @interface ADJEvent() @property (nonatomic, weak) id logger; + @property (nonatomic, strong) NSMutableDictionary *callbackMutableParameters; + @property (nonatomic, strong) NSMutableDictionary *partnerMutableParameters; @end @implementation ADJEvent -+ (ADJEvent *)eventWithEventToken:(NSString *)eventToken { - return [[ADJEvent alloc] initWithEventToken:eventToken]; -} - - (id)initWithEventToken:(NSString *)eventToken { self = [super init]; if (self == nil) { @@ -111,6 +109,12 @@ - (void)setTransactionId:(NSString *)transactionId { } } +- (void)setDeduplicationId:(NSString *)deduplicationId { + @synchronized (self) { + _deduplicationId = [deduplicationId copy]; + } +} + - (void)setCallbackId:(NSString *)callbackId { @synchronized (self) { _callbackId = [callbackId copy]; @@ -135,12 +139,6 @@ - (void)setProductId:(NSString *)productId { } } -- (void)setReceipt:(NSData *)receipt { - @synchronized (self) { - _receipt = [receipt copy]; - } -} - - (BOOL)checkEventToken:(NSString *)eventToken { if ([ADJUtil isNull:eventToken]) { [self.logger error:@"Missing Event Token"]; @@ -182,26 +180,6 @@ - (BOOL)isValid { return self.eventToken != nil; } -- (void)setReceipt:(NSData *)receipt transactionId:(NSString *)transactionId { - if (![self checkReceipt:receipt transactionId:transactionId]) { - return; - } - - if ([ADJUtil isNull:receipt] || [receipt length] == 0) { - _emptyReceipt = YES; - } - _receipt = receipt; - _transactionId = transactionId; -} - -- (BOOL)checkReceipt:(NSData *)receipt transactionId:(NSString *)transactionId { - if ([ADJUtil isNotNull:receipt] && [ADJUtil isNull:transactionId]) { - [self.logger error:@"Missing transactionId"]; - return NO; - } - return YES; -} - - (id)copyWithZone:(NSZone *)zone { ADJEvent *copy = [[[self class] allocWithZone:zone] init]; @@ -212,8 +190,7 @@ - (id)copyWithZone:(NSZone *)zone { copy.callbackMutableParameters = [self.callbackMutableParameters copyWithZone:zone]; copy.partnerMutableParameters = [self.partnerMutableParameters copyWithZone:zone]; copy->_transactionId = [self.transactionId copyWithZone:zone]; - copy->_receipt = [self.receipt copyWithZone:zone]; - copy->_emptyReceipt = self.emptyReceipt; + copy->_deduplicationId = [self.deduplicationId copyWithZone:zone]; copy->_productId = [self.productId copyWithZone:zone]; } diff --git a/Adjust/ADJEventFailure.h b/Adjust/ADJEventFailure.h index ff272bbc1..f10db1048 100644 --- a/Adjust/ADJEventFailure.h +++ b/Adjust/ADJEventFailure.h @@ -13,22 +13,22 @@ /** * @brief Message from the adjust backend. */ -@property (nonatomic, copy) NSString * message; +@property (nonatomic, copy) NSString *message; /** * @brief Timestamp from the adjust backend. */ -@property (nonatomic, copy) NSString * timeStamp; +@property (nonatomic, copy) NSString *timestamp; /** * @brief Adjust identifier of the device. */ -@property (nonatomic, copy) NSString * adid; +@property (nonatomic, copy) NSString *adid; /** * @brief Event token value. */ -@property (nonatomic, copy) NSString * eventToken; +@property (nonatomic, copy) NSString *eventToken; /** * @brief Event callback ID. @@ -45,11 +45,4 @@ */ @property (nonatomic, strong) NSDictionary *jsonResponse; -/** - * @brief Initialisation method. - * - * @return ADJEventFailure instance. - */ -+ (ADJEventFailure *)eventFailureResponseData; - @end diff --git a/Adjust/ADJEventFailure.m b/Adjust/ADJEventFailure.m index bf35abf60..07dd4abed 100644 --- a/Adjust/ADJEventFailure.m +++ b/Adjust/ADJEventFailure.m @@ -33,7 +33,7 @@ - (id)copyWithZone:(NSZone *)zone { if (copy) { copy.message = [self.message copyWithZone:zone]; - copy.timeStamp = [self.timeStamp copyWithZone:zone]; + copy.timestamp = [self.timestamp copyWithZone:zone]; copy.adid = [self.adid copyWithZone:zone]; copy.eventToken = [self.eventToken copyWithZone:zone]; copy.callbackId = [self.callbackId copyWithZone:zone]; @@ -49,7 +49,7 @@ - (id)copyWithZone:(NSZone *)zone { - (NSString *)description { return [NSString stringWithFormat: @"Event Failure msg:%@ time:%@ adid:%@ event:%@ cid:%@, retry:%@ json:%@", self.message, - self.timeStamp, + self.timestamp, self.adid, self.eventToken, self.callbackId, diff --git a/Adjust/ADJEventSuccess.h b/Adjust/ADJEventSuccess.h index 34214e21c..d956f6bbc 100644 --- a/Adjust/ADJEventSuccess.h +++ b/Adjust/ADJEventSuccess.h @@ -18,7 +18,7 @@ /** * @brief Timestamp from the adjust backend. */ -@property (nonatomic, copy) NSString *timeStamp; +@property (nonatomic, copy) NSString *timestamp; /** * @brief Adjust identifier of the device. @@ -40,11 +40,4 @@ */ @property (nonatomic, strong) NSDictionary *jsonResponse; -/** - * @brief Initialisation method. - * - * @return ADJEventSuccess instance. - */ -+ (ADJEventSuccess *)eventSuccessResponseData; - @end diff --git a/Adjust/ADJEventSuccess.m b/Adjust/ADJEventSuccess.m index 1a40be353..3ecb89e73 100644 --- a/Adjust/ADJEventSuccess.m +++ b/Adjust/ADJEventSuccess.m @@ -33,7 +33,7 @@ - (id)copyWithZone:(NSZone *)zone { if (copy) { copy.message = [self.message copyWithZone:zone]; - copy.timeStamp = [self.timeStamp copyWithZone:zone]; + copy.timestamp = [self.timestamp copyWithZone:zone]; copy.adid = [self.adid copyWithZone:zone]; copy.eventToken = [self.eventToken copyWithZone:zone]; copy.callbackId = [self.callbackId copyWithZone:zone]; @@ -48,7 +48,7 @@ - (id)copyWithZone:(NSZone *)zone { - (NSString *)description { return [NSString stringWithFormat: @"Event Success msg:%@ time:%@ adid:%@ event:%@ cid:%@ json:%@", self.message, - self.timeStamp, + self.timestamp, self.adid, self.eventToken, self.callbackId, diff --git a/Adjust/ADJLogger.h b/Adjust/ADJLogger.h index 95bb7433a..22284e9ec 100644 --- a/Adjust/ADJLogger.h +++ b/Adjust/ADJLogger.h @@ -7,7 +7,7 @@ // #import -typedef enum { +typedef NS_ENUM(NSUInteger, ADJLogLevel) { ADJLogLevelVerbose = 1, ADJLogLevelDebug = 2, ADJLogLevelInfo = 3, @@ -15,7 +15,7 @@ typedef enum { ADJLogLevelError = 5, ADJLogLevelAssert = 6, ADJLogLevelSuppress = 7 -} ADJLogLevel; +}; /** * @brief Adjust logger protocol. diff --git a/Adjust/ADJPurchaseVerificationResult.h b/Adjust/ADJPurchaseVerificationResult.h index 3e8f40409..13c85593d 100644 --- a/Adjust/ADJPurchaseVerificationResult.h +++ b/Adjust/ADJPurchaseVerificationResult.h @@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN /** * @property message * - * @brief Text message about current state of receipt verification. + * @brief Text message about current state of purchase verification. */ @property (nonatomic, copy) NSString *message; @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN /** * @property verificationStatus * - * @brief State of verification (success / failure / unknown / not verified) + * @brief State of purchase verification (success / failure / unknown / not verified) */ @property (nonatomic, copy) NSString *verificationStatus; diff --git a/Adjust/ADJSKAdNetwork.h b/Adjust/ADJSKAdNetwork.h deleted file mode 100644 index 947fe8d0b..000000000 --- a/Adjust/ADJSKAdNetwork.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// ADJSKAdNetwork.h -// Adjust -// -// Created by Uglješa Erceg (@uerceg) on 27th October 2022. -// Copyright © 2022-Present Adjust GmbH. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ADJSKAdNetwork : NSObject - -+ (nullable instancetype)getInstance; - -- (void)registerAppForAdNetworkAttribution; - -- (void)updateConversionValue:(NSInteger)conversionValue; - -- (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^)(NSError *error))completion; - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(NSString *)coarseValue - completionHandler:(void (^)(NSError *error))completion; - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(NSString *)coarseValue - lockWindow:(BOOL)lockWindow - completionHandler:(void (^)(NSError *error))completion; - -- (void)adjRegisterWithCompletionHandler:(void (^)(NSError *error))callback; - -- (void)adjUpdateConversionValue:(NSInteger)conversionValue - coarseValue:(NSString *)coarseValue - lockWindow:(NSNumber *)lockWindow - completionHandler:(void (^)(NSError *error))callback; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Adjust/ADJSessionFailure.h b/Adjust/ADJSessionFailure.h index 2ad9f2075..4acf2034b 100644 --- a/Adjust/ADJSessionFailure.h +++ b/Adjust/ADJSessionFailure.h @@ -18,7 +18,7 @@ /** * @brief Timestamp from the adjust backend. */ -@property (nonatomic, copy, nullable) NSString *timeStamp; +@property (nonatomic, copy, nullable) NSString *timestamp; /** * @brief Adjust identifier of the device. @@ -35,11 +35,4 @@ */ @property (nonatomic, strong, nullable) NSDictionary *jsonResponse; -/** - * @brief Initialisation method. - * - * @return ADJSessionFailure instance. - */ -+ (nullable ADJSessionFailure *)sessionFailureResponseData; - @end diff --git a/Adjust/ADJSessionFailure.m b/Adjust/ADJSessionFailure.m index b991dd786..29544fafc 100644 --- a/Adjust/ADJSessionFailure.m +++ b/Adjust/ADJSessionFailure.m @@ -33,7 +33,7 @@ - (id)copyWithZone:(NSZone *)zone { if (copy) { copy.message = [self.message copyWithZone:zone]; - copy.timeStamp = [self.timeStamp copyWithZone:zone]; + copy.timestamp = [self.timestamp copyWithZone:zone]; copy.adid = [self.adid copyWithZone:zone]; copy.willRetry = self.willRetry; copy.jsonResponse = [self.jsonResponse copyWithZone:zone]; @@ -47,7 +47,7 @@ - (id)copyWithZone:(NSZone *)zone { - (NSString *)description { return [NSString stringWithFormat: @"Session Failure msg:%@ time:%@ adid:%@ retry:%@ json:%@", self.message, - self.timeStamp, + self.timestamp, self.adid, self.willRetry ? @"YES" : @"NO", self.jsonResponse]; diff --git a/Adjust/ADJSessionSuccess.h b/Adjust/ADJSessionSuccess.h index 8d6a04cfc..b8717c9a3 100644 --- a/Adjust/ADJSessionSuccess.h +++ b/Adjust/ADJSessionSuccess.h @@ -18,7 +18,7 @@ /** * @brief Timestamp from the adjust backend. */ -@property (nonatomic, copy, nullable) NSString *timeStamp; +@property (nonatomic, copy, nullable) NSString *timestamp; /** * @brief Adjust identifier of the device. @@ -30,11 +30,4 @@ */ @property (nonatomic, strong, nullable) NSDictionary *jsonResponse; -/** - * @brief Initialisation method. - * - * @return ADJSessionSuccess instance. - */ -+ (nullable ADJSessionSuccess *)sessionSuccessResponseData; - @end diff --git a/Adjust/ADJSessionSuccess.m b/Adjust/ADJSessionSuccess.m index 28a734243..8b40053ab 100644 --- a/Adjust/ADJSessionSuccess.m +++ b/Adjust/ADJSessionSuccess.m @@ -33,7 +33,7 @@ - (id)copyWithZone:(NSZone *)zone { if (copy) { copy.message = [self.message copyWithZone:zone]; - copy.timeStamp = [self.timeStamp copyWithZone:zone]; + copy.timestamp = [self.timestamp copyWithZone:zone]; copy.adid = [self.adid copyWithZone:zone]; copy.jsonResponse = [self.jsonResponse copyWithZone:zone]; } @@ -46,7 +46,7 @@ - (id)copyWithZone:(NSZone *)zone { - (NSString *)description { return [NSString stringWithFormat: @"Session Success msg:%@ time:%@ adid:%@ json:%@", self.message, - self.timeStamp, + self.timestamp, self.adid, self.jsonResponse]; } diff --git a/Adjust/ADJThirdPartySharing.h b/Adjust/ADJThirdPartySharing.h index 29bceff6f..c5ab970fe 100644 --- a/Adjust/ADJThirdPartySharing.h +++ b/Adjust/ADJThirdPartySharing.h @@ -11,10 +11,12 @@ @interface ADJThirdPartySharing : NSObject @property (nonatomic, nullable, readonly, strong) NSNumber *enabled; + @property (nonatomic, nonnull, readonly, strong) NSMutableDictionary *granularOptions; + @property (nonatomic, nonnull, readonly, strong) NSMutableDictionary *partnerSharingSettings; -- (nullable id)initWithIsEnabledNumberBool:(nullable NSNumber *)isEnabledNumberBool; +- (nullable id)initWithIsEnabled:(nullable NSNumber *)isEnabled; - (void)addGranularOption:(nonnull NSString *)partnerName key:(nonnull NSString *)key diff --git a/Adjust/ADJThirdPartySharing.m b/Adjust/ADJThirdPartySharing.m index 7c4e9978d..c89fe0b34 100644 --- a/Adjust/ADJThirdPartySharing.m +++ b/Adjust/ADJThirdPartySharing.m @@ -12,13 +12,13 @@ @implementation ADJThirdPartySharing -- (nullable id)initWithIsEnabledNumberBool:(nullable NSNumber *)isEnabledNumberBool { +- (nullable id)initWithIsEnabled:(nullable NSNumber *)isEnabled { self = [super init]; if (self == nil) { return nil; } - _enabled = isEnabledNumberBool; + _enabled = isEnabled; _granularOptions = [[NSMutableDictionary alloc] init]; _partnerSharingSettings = [[NSMutableDictionary alloc] init]; diff --git a/Adjust/ADJUrlStrategy.m b/Adjust/ADJUrlStrategy.m deleted file mode 100644 index eef16f68c..000000000 --- a/Adjust/ADJUrlStrategy.m +++ /dev/null @@ -1,266 +0,0 @@ -// -// ADJUrlStrategy.m -// Adjust -// -// Created by Pedro S. on 11.08.20. -// Copyright © 2020 adjust GmbH. All rights reserved. -//analytics.adjust.com - - -#import "ADJUrlStrategy.h" -#import "Adjust.h" -#import "ADJAdjustFactory.h" - -static NSString * const baseUrlAnalytics = @"https://analytics.adjust.com"; -static NSString * const baseUrlConsent = @"https://consent.adjust.com"; -static NSString * const gdprUrl = @"https://gdpr.adjust.com"; -static NSString * const subscriptionUrl = @"https://subscription.adjust.com"; -static NSString * const purchaseVerificationUrl = @"https://ssrv.adjust.com"; - -static NSString * const baseUrlIndiaAnalytics = @"https://analytics.adjust.net.in"; -static NSString * const baseUrlIndiaConsent = @"https://consent.adjust.net.in"; -static NSString * const gdprUrlIndia = @"https://gdpr.adjust.net.in"; -static NSString * const subscriptionUrlIndia = @"https://subscription.adjust.net.in"; -static NSString * const purchaseVerificationUrlIndia = @"https://ssrv.adjust.net.in"; - -static NSString * const baseUrlChinaAnalytics = @"https://analytics.adjust.world"; -static NSString * const baseUrlChinaConsent = @"https://consent.adjust.world"; -static NSString * const gdprUrlChina = @"https://gdpr.adjust.world"; -static NSString * const subscriptionUrlChina = @"https://subscription.adjust.world"; -static NSString * const purchaseVerificationUrlChina = @"https://ssrv.adjust.world"; - -static NSString * const baseUrlCnAnalytics = @"https://analytics.adjust.cn"; -static NSString * const baseUrlCnConsent = @"https://consent.adjust.cn"; -static NSString * const gdprUrlCn = @"https://gdpr.adjust.cn"; -static NSString * const subscriptionUrlCn = @"https://subscription.adjust.cn"; -static NSString * const purchaseVerificationUrlCn = @"https://ssrv.adjust.cn"; - -static NSString * const baseUrlEUAnalytics = @"https://analytics.eu.adjust.com"; -static NSString * const baseUrlEUConsent = @"https://consent.eu.adjust.com"; -static NSString * const gdprUrlEU = @"https://gdpr.eu.adjust.com"; -static NSString * const subscriptionUrlEU = @"https://subscription.eu.adjust.com"; -static NSString * const purchaseVerificationUrlEU = @"https://ssrv.eu.adjust.com"; - -static NSString * const baseUrlTRAnalytics = @"https://analytics.tr.adjust.com"; -static NSString * const baseUrlTRConsent = @"https://consent.tr.adjust.com"; -static NSString * const gdprUrlTR = @"https://gdpr.tr.adjust.com"; -static NSString * const subscriptionUrlTR = @"https://subscription.tr.adjust.com"; -static NSString * const purchaseVerificationUrlTR = @"https://ssrv.tr.adjust.com"; - -static NSString * const baseUrlUSAnalytics = @"https://analytics.us.adjust.com"; -static NSString * const baseUrlUSConsent = @"https://consent.us.adjust.com"; -static NSString * const gdprUrlUS = @"https://gdpr.us.adjust.com"; -static NSString * const subscriptionUrlUS = @"https://subscription.us.adjust.com"; -static NSString * const purchaseVerificationUrlUS = @"https://ssrv.us.adjust.com"; - -static NSString *const testServerCustomEndPointKey = @"test_server_custom_end_point"; -static NSString *const testServerAdjustEndPointKey = @"test_server_adjust_end_point"; - - -@interface ADJUrlStrategy () - -@property (nonatomic, copy) NSArray *baseUrlAnalyticsChoicesArray; -@property (nonatomic, copy) NSArray *baseUrlConsentChoicesArray; -@property (nonatomic, copy) NSArray *gdprUrlChoicesArray; -@property (nonatomic, copy) NSArray *subscriptionUrlChoicesArray; -@property (nonatomic, copy) NSArray *purchaseVerificationUrlChoicesArray; - -@property (nonatomic, copy) NSString *urlOverwrite; - -@property (nonatomic, assign) BOOL wasLastAttemptSuccess; - -@property (nonatomic, assign) NSUInteger choiceIndex; -@property (nonatomic, assign) NSUInteger startingChoiceIndex; - -@end - -@implementation ADJUrlStrategy - -- (instancetype)initWithUrlStrategyInfo:(NSString *)urlStrategyInfo - extraPath:(NSString *)extraPath { - self = [super init]; - - _extraPath = extraPath ?: @""; - - _baseUrlAnalyticsChoicesArray = [ADJUrlStrategy baseUrlAnalyticsChoicesWithUrlStrategyInfo:urlStrategyInfo]; - _baseUrlConsentChoicesArray = [ADJUrlStrategy baseUrlConsentChoicesWithUrlStrategyInfo:urlStrategyInfo]; - _gdprUrlChoicesArray = [ADJUrlStrategy gdprUrlChoicesWithUrlStrategyInfo:urlStrategyInfo]; - _subscriptionUrlChoicesArray = [ADJUrlStrategy - subscriptionUrlChoicesWithUrlStrategyInfo:urlStrategyInfo]; - _purchaseVerificationUrlChoicesArray = [ADJUrlStrategy - purchaseVerificationUrlChoicesWithUrlStrategyInfo:urlStrategyInfo]; - - _urlOverwrite = [ADJAdjustFactory urlOverwrite]; - - _wasLastAttemptSuccess = NO; - _choiceIndex = 0; - _startingChoiceIndex = 0; - - return self; -} - -+ (NSArray *)baseUrlAnalyticsChoicesWithUrlStrategyInfo:(NSString *)urlStrategyInfo { - if ([urlStrategyInfo isEqualToString:ADJUrlStrategyIndia]) { - return @[baseUrlIndiaAnalytics, baseUrlAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyChina]) { - return @[baseUrlChinaAnalytics, baseUrlAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCn]) { - return @[baseUrlCnAnalytics, baseUrlAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCnOnly]) { - return @[baseUrlCnAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyEU]) { - return @[baseUrlEUAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyTR]) { - return @[baseUrlTRAnalytics]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyUS]) { - return @[baseUrlUSAnalytics]; - } else { - return @[baseUrlAnalytics, baseUrlIndiaAnalytics, baseUrlChinaAnalytics]; - } -} - -+ (NSArray *)baseUrlConsentChoicesWithUrlStrategyInfo:(NSString *)urlStrategyInfo { - if ([urlStrategyInfo isEqualToString:ADJUrlStrategyIndia]) { - return @[baseUrlIndiaConsent, baseUrlConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyChina]) { - return @[baseUrlChinaConsent, baseUrlConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCn]) { - return @[baseUrlCnConsent, baseUrlConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCnOnly]) { - return @[baseUrlCnConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyEU]) { - return @[baseUrlEUConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyTR]) { - return @[baseUrlTRConsent]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyUS]) { - return @[baseUrlUSConsent]; - } else { - return @[baseUrlConsent, baseUrlIndiaConsent, baseUrlChinaConsent]; - } -} - -+ (NSArray *)gdprUrlChoicesWithUrlStrategyInfo:(NSString *)urlStrategyInfo { - if ([urlStrategyInfo isEqualToString:ADJUrlStrategyIndia]) { - return @[gdprUrlIndia, gdprUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyChina]) { - return @[gdprUrlChina, gdprUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCn]) { - return @[gdprUrlCn, gdprUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCnOnly]) { - return @[gdprUrlCn]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyEU]) { - return @[gdprUrlEU]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyTR]) { - return @[gdprUrlTR]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyUS]) { - return @[gdprUrlUS]; - } else { - return @[gdprUrl, gdprUrlIndia, gdprUrlChina]; - } -} - -+ (NSArray *)subscriptionUrlChoicesWithUrlStrategyInfo:(NSString *)urlStrategyInfo { - if ([urlStrategyInfo isEqualToString:ADJUrlStrategyIndia]) { - return @[subscriptionUrlIndia, subscriptionUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyChina]) { - return @[subscriptionUrlChina, subscriptionUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCn]) { - return @[subscriptionUrlCn, subscriptionUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCnOnly]) { - return @[subscriptionUrlCn]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyEU]) { - return @[subscriptionUrlEU]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyTR]) { - return @[subscriptionUrlTR]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyUS]) { - return @[subscriptionUrlUS]; - } else { - return @[subscriptionUrl, subscriptionUrlIndia, subscriptionUrlChina]; - } -} - -+ (NSArray *)purchaseVerificationUrlChoicesWithUrlStrategyInfo:(NSString *)urlStrategyInfo { - if ([urlStrategyInfo isEqualToString:ADJUrlStrategyIndia]) { - return @[purchaseVerificationUrlIndia, purchaseVerificationUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyChina]) { - return @[purchaseVerificationUrlChina, purchaseVerificationUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCn]) { - return @[purchaseVerificationUrlCn, purchaseVerificationUrl]; - } else if ([urlStrategyInfo isEqualToString:ADJUrlStrategyCnOnly]) { - return @[purchaseVerificationUrlCn]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyEU]) { - return @[purchaseVerificationUrlEU]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyTR]) { - return @[purchaseVerificationUrlTR]; - } else if ([urlStrategyInfo isEqualToString:ADJDataResidencyUS]) { - return @[purchaseVerificationUrlUS]; - } else { - return @[purchaseVerificationUrl, purchaseVerificationUrlIndia, purchaseVerificationUrlChina]; - } -} - -- (nonnull NSString *)urlForActivityKind:(ADJActivityKind)activityKind - isConsentGiven:(BOOL)isConsentGiven - withSendingParams:(NSMutableDictionary *)sendingParams { - NSString *_Nonnull urlByActivityKind = [self urlForActivityKind:activityKind - isConsentGiven:isConsentGiven]; - - if (self.urlOverwrite != nil) { - [sendingParams setObject:urlByActivityKind - forKey:testServerAdjustEndPointKey]; - - return self.urlOverwrite; - } - - return urlByActivityKind; -} - -- (nonnull NSString *)urlForActivityKind:(ADJActivityKind)activityKind - isConsentGiven:(BOOL)isConsentGiven { - if (activityKind == ADJActivityKindGdpr) { - return [self.gdprUrlChoicesArray objectAtIndex:self.choiceIndex]; - } - - if (activityKind == ADJActivityKindSubscription) { - return [self.subscriptionUrlChoicesArray objectAtIndex:self.choiceIndex]; - } - - if (activityKind == ADJActivityKindPurchaseVerification) { - return [self.purchaseVerificationUrlChoicesArray objectAtIndex:self.choiceIndex]; - } - - if (isConsentGiven) { - return [self.baseUrlConsentChoicesArray objectAtIndex:self.choiceIndex]; - } else { - return [self.baseUrlAnalyticsChoicesArray objectAtIndex:self.choiceIndex]; - } -} - -- (void)resetAfterSuccess { - self.startingChoiceIndex = self.choiceIndex; - self.wasLastAttemptSuccess = YES; -} - -- (BOOL)shouldRetryAfterFailure:(ADJActivityKind)activityKind { - self.wasLastAttemptSuccess = NO; - - NSUInteger choiceListSize; - if (activityKind == ADJActivityKindGdpr) { - choiceListSize = [self.gdprUrlChoicesArray count]; - } else if (activityKind == ADJActivityKindSubscription) { - choiceListSize = [self.subscriptionUrlChoicesArray count]; - } else if (activityKind == ADJActivityKindPurchaseVerification) { - choiceListSize = [self.purchaseVerificationUrlChoicesArray count]; - } else { - // baseUrlConsentChoicesArray or baseUrlAnalyticsChoicesArray should be of equal size - choiceListSize = [self.baseUrlConsentChoicesArray count]; - } - - NSUInteger nextChoiceIndex = (self.choiceIndex + 1) % choiceListSize; - self.choiceIndex = nextChoiceIndex; - BOOL nextChoiceHasNotReturnedToStartingChoice = self.choiceIndex != self.startingChoiceIndex; - - return nextChoiceHasNotReturnedToStartingChoice; -} - -@end diff --git a/Adjust/Adjust.h b/Adjust/Adjust.h index 3adfe69ab..3ada002a9 100644 --- a/Adjust/Adjust.h +++ b/Adjust/Adjust.h @@ -2,41 +2,33 @@ // Adjust.h // Adjust SDK // -// V4.38.4 +// V5.0.0 // Created by Christian Wellenbrock (@wellle) on 23rd July 2013. -// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved. +// Copyright (c) 2012-Present Adjust GmbH. All rights reserved. // -#import "ADJEvent.h" -#import "ADJConfig.h" -#import "ADJAttribution.h" -#import "ADJSubscription.h" -#import "ADJThirdPartySharing.h" -#import "ADJAdRevenue.h" -#import "ADJLinkResolution.h" -#import "ADJPurchase.h" -#import "ADJPurchaseVerificationResult.h" - -typedef void(^AdjustResolvedDeeplinkBlock)(NSString * _Nonnull resolvedLink); - -@interface AdjustTestOptions : NSObject - -@property (nonatomic, copy, nullable) NSString *urlOverwrite; -@property (nonatomic, copy, nullable) NSString *extraPath; -@property (nonatomic, copy, nullable) NSNumber *timerIntervalInMilliseconds; -@property (nonatomic, copy, nullable) NSNumber *timerStartInMilliseconds; -@property (nonatomic, copy, nullable) NSNumber *sessionIntervalInMilliseconds; -@property (nonatomic, copy, nullable) NSNumber *subsessionIntervalInMilliseconds; -@property (nonatomic, copy, nullable) NSNumber *attStatusInt; -@property (nonatomic, copy, nullable) NSString *idfa; -@property (nonatomic, assign) BOOL teardown; -@property (nonatomic, assign) BOOL deleteState; -@property (nonatomic, assign) BOOL noBackoffWait; -@property (nonatomic, assign) BOOL adServicesFrameworkEnabled; -@property (nonatomic, assign) BOOL enableSigning; -@property (nonatomic, assign) BOOL disableSigning; - -@end +#import + +@class ADJEvent; +@class ADJConfig; +@class ADJAttribution; +@class ADJAppStoreSubscription; +@class ADJThirdPartySharing; +@class ADJAdRevenue; +@class ADJLinkResolution; +@class ADJAppStorePurchase; +@class ADJPurchaseVerificationResult; +@class ADJDeeplink; + +typedef void(^ADJResolvedDeeplinkBlock)(NSString * _Nullable resolvedLink); +typedef void(^ADJAttributionGetterBlock)(ADJAttribution * _Nullable attribution); +typedef void(^ADJIdfaGetterBlock)(NSString * _Nullable idfa); +typedef void(^ADJIdfvGetterBlock)(NSString * _Nullable idfv); +typedef void(^ADJSdkVersionGetterBlock)(NSString * _Nullable sdkVersion); +typedef void(^ADJLastDeeplinkGetterBlock)(NSURL * _Nullable lastDeeplink); +typedef void(^ADJAdidGetterBlock)(NSString * _Nullable adid); +typedef void(^ADJIsEnabledGetterBlock)(BOOL isEnabled); +typedef void(^ADJVerificationResultBlock)(ADJPurchaseVerificationResult * _Nonnull verificationResult); /** * Constants for our supported tracking environments. @@ -44,32 +36,6 @@ typedef void(^AdjustResolvedDeeplinkBlock)(NSString * _Nonnull resolvedLink); extern NSString * __nonnull const ADJEnvironmentSandbox; extern NSString * __nonnull const ADJEnvironmentProduction; -/** - * Constants for supported ad revenue sources. - */ -extern NSString * __nonnull const ADJAdRevenueSourceAppLovinMAX; -extern NSString * __nonnull const ADJAdRevenueSourceMopub; -extern NSString * __nonnull const ADJAdRevenueSourceAdMob; -extern NSString * __nonnull const ADJAdRevenueSourceIronSource; -extern NSString * __nonnull const ADJAdRevenueSourceAdMost; -extern NSString * __nonnull const ADJAdRevenueSourceUnity; -extern NSString * __nonnull const ADJAdRevenueSourceHeliumChartboost; -extern NSString * __nonnull const ADJAdRevenueSourcePublisher; -extern NSString * __nonnull const ADJAdRevenueSourceTopOn; -extern NSString * __nonnull const ADJAdRevenueSourceADX; -extern NSString * __nonnull const ADJAdRevenueSourceTradplus; - -/** - * Constants for country app's URL strategies. - */ -extern NSString * __nonnull const ADJUrlStrategyIndia; -extern NSString * __nonnull const ADJUrlStrategyChina; -extern NSString * __nonnull const ADJUrlStrategyCn; -extern NSString * __nonnull const ADJUrlStrategyCnOnly; -extern NSString * __nonnull const ADJDataResidencyEU; -extern NSString * __nonnull const ADJDataResidencyTR; -extern NSString * __nonnull const ADJDataResidencyUS; - /** * @brief The main interface to Adjust. * @@ -90,7 +56,7 @@ extern NSString * __nonnull const ADJDataResidencyUS; * be found it in your dashboard at http://adjust.com and should always * be 12 characters long. */ -+ (void)appDidLaunch:(nullable ADJConfig *)adjustConfig; ++ (void)initSdk:(nullable ADJConfig *)adjustConfig; /** * @brief Tell Adjust that a particular event has happened. @@ -104,113 +70,102 @@ extern NSString * __nonnull const ADJDataResidencyUS; + (void)trackEvent:(nullable ADJEvent *)event; /** - * @brief Tell adjust that the application resumed. - * - * @note Only necessary if the native notifications can't be used - * or if they will happen before call to appDidLaunch: is made. + * @brief Enable Adjust SDK. This setting is saved for future sessions. */ -+ (void)trackSubsessionStart; ++ (void)enable; /** - * @brief Tell adjust that the application paused. - * - * @note Only necessary if the native notifications can't be used. + * @brief Disable Adjust SDK. This setting is saved for future sessions. */ -+ (void)trackSubsessionEnd; ++ (void)disable; /** - * @brief Enable or disable the adjust SDK. This setting is saved for future sessions. + * @brief Check if the SDK is enabled or disabled through a callback. * - * @param enabled The flag to enable or disable the adjust SDK. + * @param completion Completion block to be pinged with the enabled state of the SDK. */ -+ (void)setEnabled:(BOOL)enabled; - -/** - * @brief Check if the SDK is enabled or disabled. - * - * return Boolean indicating whether SDK is enabled or not. - */ -+ (BOOL)isEnabled; ++ (void)isEnabledWithCompletionHandler:(nonnull ADJIsEnabledGetterBlock)completion; /** * @brief Read the URL that opened the application to search for an adjust deep link. * - * @param url URL object which contains info about adjust deep link. + * @param deeplink Deeplink object which contains info about adjust deep link. */ -+ (void)appWillOpenUrl:(nonnull NSURL *)url; ++ (void)processDeeplink:(nonnull ADJDeeplink *)deeplink; /** * @brief Process the deep link that has opened an app and potentially get a resolved link. * * @param deeplink URL object which contains info about adjust deep link. - * @param completionHandler Completion handler where either resolved or echoed deep link will be sent. + * @param completion Completion block where either resolved or echoed deep link will be sent. */ -+ (void)processDeeplink:(nonnull NSURL *)deeplink - completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler; ++ (void)processAndResolveDeeplink:(nonnull ADJDeeplink *)deeplink + withCompletionHandler:(nonnull ADJResolvedDeeplinkBlock)completion; /** - * @brief Set the device token used by push notifications. + * @brief Set the APNs push token. * - * @param deviceToken Apple push notification token for iOS device as NSData. + * @param pushToken APNs push token. */ -+ (void)setDeviceToken:(nonnull NSData *)deviceToken; ++ (void)setPushToken:(nonnull NSData *)pushToken; /** - * @brief Set the device token used by push notifications. + * @brief Set the APNs push token as stirng. * This method is only used by Adjust non native SDKs. Don't use it anywhere else. * - * @param pushToken Apple push notification token for iOS device as NSString. + * @param pushToken APNs push token as string. */ -+ (void)setPushToken:(nonnull NSString *)pushToken; ++ (void)setPushTokenAsString:(nonnull NSString *)pushToken; /** - * @brief Enable or disable offline mode. Activities won't be sent but they are saved when + * @brief Enable offline mode. Activities won't be sent but they are saved when * offline mode is disabled. This feature is not saved for future sessions. - * - * @param enabled The flag to enable or disable offline mode. */ -+ (void)setOfflineMode:(BOOL)enabled; ++ (void)switchToOfflineMode; /** - * @brief Retrieve iOS device IDFA value. - * - * @return Device IDFA value. + * @brief Disable offline mode. Activities won't be sent but they are saved when + * offline mode is disabled. This feature is not saved for future sessions. */ -+ (nullable NSString *)idfa; ++ (void)switchBackToOnlineMode; /** - * @brief Retrieve iOS device IDFV value. + * @brief Retrieve iOS device IDFA value through a callback. * - * @return Device IDFV value. + * @param completion Completion block to get IDFA value delivered to. */ -+ (nullable NSString *)idfv; ++ (void)idfaWithCompletionHandler:(nonnull ADJIdfaGetterBlock)completion; +/** + * @brief Retrieve iOS device IDFV value through a callback. + * + * @param completion Completion block to get the IDFV value delivered to. + */ ++ (void)idfvWithCompletionHandler:(nonnull ADJIdfvGetterBlock)completion; /** - * @brief Get current adjust identifier for the user. + * @brief Get current adjust identifier for the user through a callback. * - * @note Adjust identifier is available only after installation has been successfully tracked. + * @param completion Completion block to get the adid value delivered to. * - * @return Current adjust identifier value for the user. + * @note Adjust identifier is available only after installation has been successfully tracked. */ -+ (nullable NSString *)adid; ++ (void)adidWithCompletionHandler:(nonnull ADJAdidGetterBlock)completion; /** - * @brief Get current attribution for the user. + * @brief Get current attribution for the user through a callback. * * @note Attribution information is available only after installation has been successfully tracked * and attribution information arrived after that from the backend. - * - * @return Current attribution value for the user. */ -+ (nullable ADJAttribution *)attribution; ++ (void)attributionWithCompletionHandler:(nonnull ADJAttributionGetterBlock)completion; /** - * @brief Get current Adjust SDK version string. + * @brief Get current Adjust SDK version string through a callback. * - * @return Adjust SDK version string (iosX.Y.Z). + * @param completion Completion block to get the Adjust SDK version string (iosX.Y.Z) delivered to. */ -+ (nullable NSString *)sdkVersion; ++ (void)sdkVersionWithCompletionHandler:(nonnull ADJSdkVersionGetterBlock)completion; /** * @brief Convert a universal link style URL to a deeplink style URL with the corresponding scheme. @@ -220,62 +175,47 @@ extern NSString * __nonnull const ADJDataResidencyUS; * * @return URL object in custom URL scheme style prefixed with given scheme name. */ -+ (nullable NSURL *)convertUniversalLink:(nonnull NSURL *)url scheme:(nonnull NSString *)scheme; - -/** - * @brief Tell the adjust SDK to stop waiting for delayed initialisation timer to complete but rather to start - * upon this call. This should be called if you have obtained needed callback/partner parameters which you - * wanted to put as default ones before the delayedStart value you have set on ADJConfig has expired. - */ -+ (void)sendFirstPackages; - -/** - * @brief Tell adjust to send the request to Google and check if the installation - * belongs to Google AdWords campaign. - * - * @note Deprecated method, should not be used. - */ -+ (void)sendAdWordsRequest; ++ (nullable NSURL *)convertUniversalLink:(nonnull NSURL *)url withScheme:(nonnull NSString *)scheme; /** * @brief Add default callback parameter key-value pair which is going to be sent with each tracked session and event. * + * @param param Default callback parameter value. * @param key Default callback parameter key. - * @param value Default callback parameter value. */ -+ (void)addSessionCallbackParameter:(nonnull NSString *)key value:(nonnull NSString *)value; ++ (void)addGlobalCallbackParameter:(nonnull NSString *)param forKey:(nonnull NSString *)key; /** * @brief Add default partner parameter key-value pair which is going to be sent with each tracked session. * + * @param param Default partner parameter value. * @param key Default partner parameter key. - * @param value Default partner parameter value. */ -+ (void)addSessionPartnerParameter:(nonnull NSString *)key value:(nonnull NSString *)value; ++ (void)addGlobalPartnerParameter:(nonnull NSString *)param forKey:(nonnull NSString *)key; /** - * @brief Remove default callback parameter from the session packages. + * @brief Remove default callback parameter from the tracked session and event packages. * * @param key Default callback parameter key. */ -+ (void)removeSessionCallbackParameter:(nonnull NSString *)key; ++ (void)removeGlobalCallbackParameterForKey:(nonnull NSString *)key; /** - * @brief Remove default partner parameter from the session packages. + * @brief Remove default partner parameter from the tracked session and event packages. * * @param key Default partner parameter key. */ -+ (void)removeSessionPartnerParameter:(nonnull NSString *)key; ++ (void)removeGlobalPartnerParameterForKey:(nonnull NSString *)key; /** - * @brief Remove all default callback parameters from the session packages. + * @brief Remove all default callback parameters from the tracked session and event packages. */ -+ (void)resetSessionCallbackParameters; ++ (void)removeGlobalCallbackParameters; /** - * @brief Remove all default partner parameters from the session packages. + * @brief Remove all default partner parameters from the tracked session and event packages. */ -+ (void)resetSessionPartnerParameters; ++ (void)removeGlobalPartnerParameters; /** * @brief Give right user to be forgotten in accordance with GDPR law. @@ -283,20 +223,7 @@ extern NSString * __nonnull const ADJDataResidencyUS; + (void)gdprForgetMe; /** - * @brief Track ad revenue for given source. - * - * @param source Ad revenue source. - * @param payload Ad revenue payload. - */ -+ (void)trackAdRevenue:(nonnull NSString *)source payload:(nonnull NSData *)payload; - -/** - * @brief Give right user to disable sharing data to any third-party. - */ -+ (void)disableThirdPartySharing; - -/** - * @brief Track third paty sharing with possibility to allow or disallow it. + * @brief Track third party sharing with possibility to allow or disallow it. * * @param thirdPartySharing Third party sharing choice. */ @@ -321,14 +248,14 @@ extern NSString * __nonnull const ADJDataResidencyUS; * * @param subscription Subscription object. */ -+ (void)trackSubscription:(nonnull ADJSubscription *)subscription; ++ (void)trackAppStoreSubscription:(nonnull ADJAppStoreSubscription *)subscription; /** - * @brief Adjust wrapper for requestTrackingAuthorizationWithCompletionHandler: method. + * @brief Adjust wrapper for requestTrackingAuthorizationWithCompletionHandler: method of ATTrackingManager. * * @param completion Block which value of tracking authorization status will be delivered to. */ -+ (void)requestTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion; ++ (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion; /** * @brief Getter for app tracking authorization status. @@ -338,160 +265,64 @@ extern NSString * __nonnull const ADJDataResidencyUS; + (int)appTrackingAuthorizationStatus; /** - * @brief Adjust wrapper for SKAdNetwork's updateConversionValue: method. + * @brief Adjust wrapper for all SKAdNetwork's update conversion value methods. + * Pass in all the required parameters for the supported SKAdNetwork version and nil for the rest. * * @param conversionValue Conversion value you would like SDK to set for given user. + * @param coarseValue One of the possible SKAdNetworkCoarseConversionValue values. + * @param lockWindow NSNumber wrapped Boolean value that indicates whether to send the postback before the conversion window ends. + * @param completion Completion handler you can provide to catch and handle any errors. */ -+ (void)updateConversionValue:(NSInteger)conversionValue; ++ (void)updateSkanConversionValue:(NSInteger)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + withCompletionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; /** - * @brief Adjust wrapper for SKAdNetwork's updatePostbackConversionValue:completionHandler: method. + * @brief Get the last deep link which has opened the app through a callback. * - * @param conversionValue Conversion value you would like SDK to set for given user. - * @param completion Completion handler you can provide to catch and handle any errors. + * @param completion Completion block to get the last opened deep link delivered to. */ -+ (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; ++ (void)lastDeeplinkWithCompletionHandler:(nonnull ADJLastDeeplinkGetterBlock)completion; /** - * @brief Adjust wrapper for SKAdNetwork's updatePostbackConversionValue:coarseValue:completionHandler: method. + * @brief Verify in-app-purchase. * - * @param fineValue Conversion value you would like SDK to set for given user. - * @param coarseValue One of the possible SKAdNetworkCoarseConversionValue values. - * @param completion Completion handler you can provide to catch and handle any errors. + * @param purchase Purchase object. + * @param completion Callback where verification result will be reported. */ -+ (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; ++ (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion; /** - * @brief Adjust wrapper for SKAdNetwork's updatePostbackConversionValue:coarseValue:lockWindow:completionHandler: method. + * @brief Verify in-app-purchase and track event upon successfully completed verification. * - * @param fineValue Conversion value you would like SDK to set for given user. - * @param coarseValue One of the possible SKAdNetworkCoarseConversionValue values. - * @param lockWindow A Boolean value that indicates whether to send the postback before the conversion window ends. - * @param completion Completion handler you can provide to catch and handle any errors. + * @param event Adjust event to be tracked. + * @param completion Callback where verification result will be reported. */ -+ (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - lockWindow:(BOOL)lockWindow - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; ++ (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion; /** - * @brief Instruct to Adjust SDK to check current state of att_status. + * Obtain singleton Adjust object. */ -+ (void)checkForNewAttStatus; ++ (nullable instancetype)getInstance; -/** - * @brief Get the last deep link which has opened the app. - * - * @return Last deep link which has opened the app. - */ -+ (nullable NSURL *)lastDeeplink; +#pragma mark - Methods for testing (do not use in your app) /** - * @brief Verify in-app-purchase. - * - * @param purchase Purchase object. - * @param completionHandler Callback where verification result will be repoted. + * @brief Method used for internal testing only. Don't use it in your app. */ -+ (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler; ++ (void)setTestOptions:(nullable NSDictionary *)testOptions; /** - * @brief Method used for internal testing only. Don't use it in production. + * @brief Method used for internal testing only. Don't use it in your app. */ -+ (void)setTestOptions:(nullable AdjustTestOptions *)testOptions; ++ (void)trackSubsessionStart; /** - * Obtain singleton Adjust object. + * @brief Method used for internal testing only. Don't use it in your app. */ -+ (nullable instancetype)getInstance; - -- (void)appDidLaunch:(nullable ADJConfig *)adjustConfig; - -- (void)trackEvent:(nullable ADJEvent *)event; - -- (void)setEnabled:(BOOL)enabled; - -- (void)teardown; - -- (void)appWillOpenUrl:(nonnull NSURL *)url; - -- (void)processDeeplink:(nonnull NSURL *)deeplink - completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler; - -- (void)setOfflineMode:(BOOL)enabled; - -- (void)setDeviceToken:(nonnull NSData *)deviceToken; - -- (void)setPushToken:(nonnull NSString *)pushToken; - -- (void)sendFirstPackages; - -- (void)trackSubsessionEnd; - -- (void)trackSubsessionStart; - -- (void)resetSessionPartnerParameters; - -- (void)resetSessionCallbackParameters; - -- (void)removeSessionPartnerParameter:(nonnull NSString *)key; - -- (void)removeSessionCallbackParameter:(nonnull NSString *)key; - -- (void)addSessionPartnerParameter:(nonnull NSString *)key value:(nonnull NSString *)value; - -- (void)addSessionCallbackParameter:(nonnull NSString *)key value:(nonnull NSString *)value; - -- (void)gdprForgetMe; - -- (void)trackAdRevenue:(nonnull NSString *)source payload:(nonnull NSData *)payload; - -- (void)trackSubscription:(nonnull ADJSubscription *)subscription; - -- (BOOL)isEnabled; - -- (nullable NSString *)adid; - -- (nullable NSString *)idfa; - -- (nullable NSString *)sdkVersion; - -- (nullable ADJAttribution *)attribution; - -- (nullable NSURL *)convertUniversalLink:(nonnull NSURL *)url scheme:(nonnull NSString *)scheme; - -- (void)requestTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion; - -- (int)appTrackingAuthorizationStatus; - -- (void)updateConversionValue:(NSInteger)conversionValue; - -- (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - lockWindow:(BOOL)lockWindow - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; - -- (void)trackThirdPartySharing:(nonnull ADJThirdPartySharing *)thirdPartySharing; - -- (void)trackMeasurementConsent:(BOOL)enabled; - -- (void)trackAdRevenue:(nonnull ADJAdRevenue *)adRevenue; - -- (void)checkForNewAttStatus; - -- (nullable NSURL *)lastDeeplink; - -- (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler; ++ (void)trackSubsessionEnd; @end diff --git a/Adjust/Adjust.m b/Adjust/Adjust.m index fb3e52de0..84345972f 100644 --- a/Adjust/Adjust.m +++ b/Adjust/Adjust.m @@ -13,6 +13,8 @@ #import "ADJAdjustFactory.h" #import "ADJActivityHandler.h" #import "ADJSKAdNetwork.h" +#import "ADJPurchaseVerificationResult.h" +#import "ADJDeeplink.h" #if !__has_feature(objc_arc) #error Adjust requires ARC @@ -22,29 +24,6 @@ NSString * const ADJEnvironmentSandbox = @"sandbox"; NSString * const ADJEnvironmentProduction = @"production"; -NSString * const ADJAdRevenueSourceAppLovinMAX = @"applovin_max_sdk"; -NSString * const ADJAdRevenueSourceMopub = @"mopub"; -NSString * const ADJAdRevenueSourceAdMob = @"admob_sdk"; -NSString * const ADJAdRevenueSourceIronSource = @"ironsource_sdk"; -NSString * const ADJAdRevenueSourceAdMost = @"admost_sdk"; -NSString * const ADJAdRevenueSourceUnity = @"unity_sdk"; -NSString * const ADJAdRevenueSourceHeliumChartboost = @"helium_chartboost_sdk"; -NSString * const ADJAdRevenueSourcePublisher = @"publisher_sdk"; -NSString * const ADJAdRevenueSourceTopOn = @"topon_sdk"; -NSString * const ADJAdRevenueSourceADX = @"adx_sdk"; -NSString * const ADJAdRevenueSourceTradplus = @"tradplus_sdk"; - -NSString * const ADJUrlStrategyIndia = @"UrlStrategyIndia"; -NSString * const ADJUrlStrategyChina = @"UrlStrategyChina"; -NSString * const ADJUrlStrategyCn = @"UrlStrategyCn"; -NSString * const ADJUrlStrategyCnOnly = @"UrlStrategyCnOnly"; - -NSString * const ADJDataResidencyEU = @"DataResidencyEU"; -NSString * const ADJDataResidencyTR = @"DataResidencyTR"; -NSString * const ADJDataResidencyUS = @"DataResidencyUS"; - -@implementation AdjustTestOptions -@end @interface Adjust() @@ -54,7 +33,7 @@ @interface Adjust() @property (nonatomic, strong) ADJSavedPreLaunch *savedPreLaunch; -@property (nonatomic) AdjustResolvedDeeplinkBlock cachedResolvedDeeplinkBlock; +@property (nonatomic) ADJResolvedDeeplinkBlock cachedResolvedDeeplinkBlock; @end @@ -87,9 +66,9 @@ - (instancetype)init { #pragma mark - Public static methods -+ (void)appDidLaunch:(ADJConfig *)adjustConfig { ++ (void)initSdk:(ADJConfig *)adjustConfig { @synchronized (self) { - [[Adjust getInstance] appDidLaunch:adjustConfig]; + [[Adjust getInstance] initSdk:adjustConfig]; } } @@ -111,135 +90,127 @@ + (void)trackSubsessionEnd { } } -+ (void)setEnabled:(BOOL)enabled { ++ (void)enable { @synchronized (self) { Adjust *instance = [Adjust getInstance]; - [instance setEnabled:enabled]; + [instance enable]; } } -+ (BOOL)isEnabled { ++ (void)disable { @synchronized (self) { - return [[Adjust getInstance] isEnabled]; + Adjust *instance = [Adjust getInstance]; + [instance disable]; } } -+ (void)appWillOpenUrl:(NSURL *)url { ++ (void)isEnabledWithCompletionHandler:(nonnull ADJIsEnabledGetterBlock)completion { @synchronized (self) { - [[Adjust getInstance] appWillOpenUrl:[url copy]]; + [[Adjust getInstance] isEnabledWithCompletionHandler:completion]; } } -+ (void)processDeeplink:(nonnull NSURL *)deeplink - completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler { ++ (void)processDeeplink:(ADJDeeplink *)deeplink { @synchronized (self) { - [[Adjust getInstance] processDeeplink:deeplink completionHandler:completionHandler]; + [[Adjust getInstance] processDeeplink:deeplink]; } } -+ (void)setDeviceToken:(NSData *)deviceToken { ++ (void)processAndResolveDeeplink:(nonnull ADJDeeplink *)deeplink + withCompletionHandler:(nonnull ADJResolvedDeeplinkBlock)completion { @synchronized (self) { - [[Adjust getInstance] setDeviceToken:[deviceToken copy]]; + [[Adjust getInstance] processAndResolveDeeplink:deeplink + withCompletionHandler:completion]; } } -+ (void)setPushToken:(NSString *)pushToken { ++ (void)setPushToken:(NSData *)pushToken { @synchronized (self) { [[Adjust getInstance] setPushToken:[pushToken copy]]; } } -+ (void)setOfflineMode:(BOOL)enabled { - @synchronized (self) { - [[Adjust getInstance] setOfflineMode:enabled]; - } -} - -+ (void)sendAdWordsRequest { - [[ADJAdjustFactory logger] warn:@"Send AdWords Request functionality removed"]; -} - -+ (NSString *)idfa { ++ (void)setPushTokenAsString:(NSString *)pushToken { @synchronized (self) { - return [[Adjust getInstance] idfa]; + [[Adjust getInstance] setPushTokenAsString:[pushToken copy]]; } } -+ (NSString *)idfv { ++ (void)switchToOfflineMode { @synchronized (self) { - return [[Adjust getInstance] idfv]; + [[Adjust getInstance] switchToOfflineMode]; } } -+ (NSString *)sdkVersion { ++ (void)switchBackToOnlineMode { @synchronized (self) { - return [[Adjust getInstance] sdkVersion]; + [[Adjust getInstance] switchBackToOnlineMode]; } } -+ (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme { ++ (void)idfaWithCompletionHandler:(nonnull ADJIdfaGetterBlock)completion { @synchronized (self) { - return [[Adjust getInstance] convertUniversalLink:[url copy] scheme:[scheme copy]]; + [[Adjust getInstance] idfaWithCompletionHandler:completion]; } } -+ (void)sendFirstPackages { ++ (void)idfvWithCompletionHandler:(nonnull ADJIdfvGetterBlock)completion { @synchronized (self) { - [[Adjust getInstance] sendFirstPackages]; + [[Adjust getInstance] idfvWithCompletionHandler:completion]; } } -+ (void)addSessionCallbackParameter:(NSString *)key value:(NSString *)value { ++ (void)sdkVersionWithCompletionHandler:(nonnull ADJSdkVersionGetterBlock)completion { @synchronized (self) { - [[Adjust getInstance] addSessionCallbackParameter:[key copy] value:[value copy]]; + [[Adjust getInstance] sdkVersionWithCompletionHandler:completion]; } } -+ (void)addSessionPartnerParameter:(NSString *)key value:(NSString *)value { ++ (NSURL *)convertUniversalLink:(NSURL *)url withScheme:(NSString *)scheme { @synchronized (self) { - [[Adjust getInstance] addSessionPartnerParameter:[key copy] value:[value copy]]; + return [[Adjust getInstance] convertUniversalLink:[url copy] withScheme:[scheme copy]]; } } -+ (void)removeSessionCallbackParameter:(NSString *)key { ++ (void)addGlobalCallbackParameter:(NSString *)param forKey:(NSString *)key { @synchronized (self) { - [[Adjust getInstance] removeSessionCallbackParameter:[key copy]]; + [[Adjust getInstance] addGlobalCallbackParameter:[param copy] forKey:[key copy]]; } } -+ (void)removeSessionPartnerParameter:(NSString *)key { ++ (void)addGlobalPartnerParameter:(NSString *)param forKey:(NSString *)key { @synchronized (self) { - [[Adjust getInstance] removeSessionPartnerParameter:[key copy]]; + [[Adjust getInstance] addGlobalPartnerParameter:[param copy] forKey:[key copy]]; } } -+ (void)resetSessionCallbackParameters { ++ (void)removeGlobalCallbackParameterForKey:(NSString *)key { @synchronized (self) { - [[Adjust getInstance] resetSessionCallbackParameters]; + [[Adjust getInstance] removeGlobalCallbackParameterForKey:[key copy]]; } } -+ (void)resetSessionPartnerParameters { ++ (void)removeGlobalPartnerParameterForKey:(NSString *)key { @synchronized (self) { - [[Adjust getInstance] resetSessionPartnerParameters]; + [[Adjust getInstance] removeGlobalPartnerParameterForKey:[key copy]]; } } -+ (void)gdprForgetMe { ++ (void)removeGlobalCallbackParameters { @synchronized (self) { - [[Adjust getInstance] gdprForgetMe]; + [[Adjust getInstance] removeGlobalCallbackParameters]; } } -+ (void)trackAdRevenue:(nonnull NSString *)source payload:(nonnull NSData *)payload { ++ (void)removeGlobalPartnerParameters { @synchronized (self) { - [[Adjust getInstance] trackAdRevenue:[source copy] payload:[payload copy]]; + [[Adjust getInstance] removeGlobalPartnerParameters]; } } -+ (void)disableThirdPartySharing { ++ (void)gdprForgetMe { @synchronized (self) { - [[Adjust getInstance] disableThirdPartySharing]; + [[Adjust getInstance] gdprForgetMe]; } } @@ -255,15 +226,15 @@ + (void)trackMeasurementConsent:(BOOL)enabled { } } -+ (void)trackSubscription:(nonnull ADJSubscription *)subscription { ++ (void)trackAppStoreSubscription:(nonnull ADJAppStoreSubscription *)subscription { @synchronized (self) { - [[Adjust getInstance] trackSubscription:subscription]; + [[Adjust getInstance] trackAppStoreSubscription:subscription]; } } -+ (void)requestTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion { ++ (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion { @synchronized (self) { - [[Adjust getInstance] requestTrackingAuthorizationWithCompletionHandler:completion]; + [[Adjust getInstance] requestAppTrackingAuthorizationWithCompletionHandler:completion]; } } @@ -273,39 +244,15 @@ + (int)appTrackingAuthorizationStatus { } } -+ (void)updateConversionValue:(NSInteger)conversionValue { ++ (void)updateSkanConversionValue:(NSInteger)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + withCompletionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { @synchronized (self) { - [[Adjust getInstance] updateConversionValue:conversionValue]; - } -} - -+ (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - @synchronized (self) { - [[Adjust getInstance] updatePostbackConversionValue:conversionValue - completionHandler:completion]; - } -} - -+ (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - @synchronized (self) { - [[Adjust getInstance] updatePostbackConversionValue:fineValue - coarseValue:coarseValue - completionHandler:completion]; - } -} - -+ (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - lockWindow:(BOOL)lockWindow - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - @synchronized (self) { - [[Adjust getInstance] updatePostbackConversionValue:fineValue - coarseValue:coarseValue - lockWindow:lockWindow - completionHandler:completion]; + [[Adjust getInstance] updateSkanConversionValue:conversionValue + coarseValue:coarseValue + lockWindow:lockWindow + withCompletionHandler:completion]; } } @@ -315,54 +262,69 @@ + (void)trackAdRevenue:(ADJAdRevenue *)adRevenue { } } -+ (ADJAttribution *)attribution { ++ (void)attributionWithCompletionHandler:(nonnull ADJAttributionGetterBlock)completion { @synchronized (self) { - return [[Adjust getInstance] attribution]; + [[Adjust getInstance] attributionWithCompletionHandler:completion]; } } -+ (NSString *)adid { ++ (void)adidWithCompletionHandler:(nonnull ADJAdidGetterBlock)completion { @synchronized (self) { - return [[Adjust getInstance] adid]; + [[Adjust getInstance] adidWithCompletionHandler:completion]; } } -+ (void)checkForNewAttStatus { ++ (void)lastDeeplinkWithCompletionHandler:(nonnull ADJLastDeeplinkGetterBlock)completion { @synchronized (self) { - [[Adjust getInstance] checkForNewAttStatus]; + [[Adjust getInstance] lastDeeplinkWithCompletionHandler:completion]; } } -+ (NSURL *)lastDeeplink { ++ (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { @synchronized (self) { - return [[Adjust getInstance] lastDeeplink]; + [[Adjust getInstance] verifyAppStorePurchase:purchase + withCompletionHandler:completion]; } } +/* ++ (void)enableCoppaCompliance { + [[Adjust getInstance] enableCoppaCompliance]; +} -+ (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler { ++ (void)disableCoppaCompliance { + [[Adjust getInstance] disableCoppaCompliance]; +} +*/ ++ (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event + withCompletionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completion { @synchronized (self) { - [[Adjust getInstance] verifyPurchase:purchase completionHandler:completionHandler]; + [[Adjust getInstance] verifyAndTrackAppStorePurchase:event + withCompletionHandler:completion]; } } -+ (void)setTestOptions:(AdjustTestOptions *)testOptions { ++ (void)setTestOptions:(NSDictionary *)testOptions { @synchronized (self) { - if (testOptions.teardown) { + if ([testOptions[@"teardown"] boolValue]) { if (defaultInstance != nil) { [defaultInstance teardown]; } defaultInstance = nil; onceToken = 0; - [ADJAdjustFactory teardown:testOptions.deleteState]; + [ADJAdjustFactory teardown:[testOptions[@"deleteState"] boolValue]]; } - [[Adjust getInstance] setTestOptions:(AdjustTestOptions *)testOptions]; + [[Adjust getInstance] setTestOptions:testOptions]; } } #pragma mark - Public instance methods -- (void)appDidLaunch:(ADJConfig *)adjustConfig { +- (void)initSdk:(ADJConfig *)adjustConfig { + if (![self isSignerPresent]) { + [self.logger error:@"Missing signature library, SDK can't be initialised"]; + return; + } if (self.activityHandler != nil) { [self.logger error:@"Adjust already initialized"]; return; @@ -371,6 +333,15 @@ - (void)appDidLaunch:(ADJConfig *)adjustConfig { savedPreLaunch:self.savedPreLaunch deeplinkResolutionCallback:self.cachedResolvedDeeplinkBlock]; } +- (BOOL)isSignerPresent { + _Nullable Class signerClass = NSClassFromString(@"ADJSigner"); + if (signerClass == nil) { + return NO; + } + + return [signerClass respondsToSelector: + NSSelectorFromString(@"sign:withExtraParams:withOutputParams:")]; +} - (void)trackEvent:(ADJEvent *)event { if (![self checkActivityHandler]) { @@ -393,205 +364,228 @@ - (void)trackSubsessionEnd { [self.activityHandler applicationWillResignActive]; } -- (void)setEnabled:(BOOL)enabled { - self.savedPreLaunch.enabled = [NSNumber numberWithBool:enabled]; +- (void)enable { + self.savedPreLaunch.enabled = @YES; - if ([self checkActivityHandler:enabled + if ([self checkActivityHandler:YES trueMessage:@"enabled mode" falseMessage:@"disabled mode"]) { - [self.activityHandler setEnabled:enabled]; + [self.activityHandler setEnabled:YES]; } } -- (BOOL)isEnabled { +- (void)disable { + self.savedPreLaunch.enabled = @NO; + + if ([self checkActivityHandler:NO + trueMessage:@"enabled mode" + falseMessage:@"disabled mode"]) { + [self.activityHandler setEnabled:NO]; + } +} + +- (void)isEnabledWithCompletionHandler:(nonnull ADJIsEnabledGetterBlock)completion { if (![self checkActivityHandler]) { - return [self isInstanceEnabled]; + [ADJUtil isEnabledFromActivityStateFile:^(BOOL isEnabled) { + __block ADJIsEnabledGetterBlock localIsEnabledCallback = completion; + [ADJUtil launchInMainThread:^{ + localIsEnabledCallback(isEnabled); + }]; + }]; + return; } - return [self.activityHandler isEnabled]; + [self.activityHandler isEnabledWithCompletionHandler:completion]; } -- (void)appWillOpenUrl:(NSURL *)url { - [ADJUserDefaults cacheDeeplinkUrl:url]; +- (void)processDeeplink:(ADJDeeplink *)deeplink { + [ADJUserDefaults cacheDeeplinkUrl:deeplink.deeplink]; NSDate *clickTime = [NSDate date]; if (![self checkActivityHandler]) { - [ADJUserDefaults saveDeeplinkUrl:url andClickTime:clickTime]; + [ADJUserDefaults saveDeeplinkUrl:deeplink.deeplink + clickTime:clickTime]; return; } - [self.activityHandler appWillOpenUrl:url withClickTime:clickTime]; + [self.activityHandler processDeeplink:deeplink withClickTime:clickTime]; } -- (void)processDeeplink:(nonnull NSURL *)deeplink - completionHandler:(void (^_Nonnull)(NSString * _Nonnull resolvedLink))completionHandler { +- (void)processAndResolveDeeplink:(nonnull ADJDeeplink *)deeplink + withCompletionHandler:(nonnull ADJResolvedDeeplinkBlock)completion { // if resolution result is not wanted, fallback to default method - if (completionHandler == nil) { - [self appWillOpenUrl:deeplink]; + if (completion == nil) { + [self processDeeplink:deeplink]; return; } // if deep link processing is triggered prior to SDK being initialized - [ADJUserDefaults cacheDeeplinkUrl:deeplink]; + [ADJUserDefaults cacheDeeplinkUrl:deeplink.deeplink]; NSDate *clickTime = [NSDate date]; if (![self checkActivityHandler]) { - [ADJUserDefaults saveDeeplinkUrl:deeplink andClickTime:clickTime]; - self.cachedResolvedDeeplinkBlock = completionHandler; + [ADJUserDefaults saveDeeplinkUrl:deeplink.deeplink + clickTime:clickTime]; + self.cachedResolvedDeeplinkBlock = completion; return; } // if deep link processing was triggered with SDK being initialized - [self.activityHandler processDeeplink:deeplink - clickTime:clickTime - completionHandler:completionHandler]; + [self.activityHandler processAndResolveDeeplink:deeplink + clickTime:clickTime + withCompletionHandler:completion]; } -- (void)setDeviceToken:(NSData *)deviceToken { - [ADJUserDefaults savePushTokenData:deviceToken]; +- (void)setPushToken:(NSData *)pushToken { + [ADJUserDefaults savePushTokenData:pushToken]; - if ([self checkActivityHandler:@"device token"]) { - if (self.activityHandler.isEnabled) { - [self.activityHandler setDeviceToken:deviceToken]; - } + if ([self checkActivityHandler:@"push token"]) { + [self.activityHandler setPushTokenData:pushToken]; } } -- (void)setPushToken:(NSString *)pushToken { +- (void)setPushTokenAsString:(NSString *)pushToken { [ADJUserDefaults savePushTokenString:pushToken]; - if ([self checkActivityHandler:@"device token"]) { - if (self.activityHandler.isEnabled) { - [self.activityHandler setPushToken:pushToken]; - } + if ([self checkActivityHandler:@"push token as string"]) { + [self.activityHandler setPushTokenString:pushToken]; } } -- (void)setOfflineMode:(BOOL)enabled { - if (![self checkActivityHandler:enabled +- (void)switchToOfflineMode { + if (![self checkActivityHandler:YES trueMessage:@"offline mode" falseMessage:@"online mode"]) { - self.savedPreLaunch.offline = enabled; + self.savedPreLaunch.offline = YES; } else { - [self.activityHandler setOfflineMode:enabled]; + [self.activityHandler setOfflineMode:YES]; } } -- (NSString *)idfa { - return [ADJUtil idfa]; +- (void)switchBackToOnlineMode { + if (![self checkActivityHandler:NO + trueMessage:@"offline mode" + falseMessage:@"online mode"]) { + self.savedPreLaunch.offline = NO; + } else { + [self.activityHandler setOfflineMode:NO]; + } } -- (NSString *)idfv { - return [ADJUtil idfv]; -} +- (void)idfaWithCompletionHandler:(nonnull ADJIdfaGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting IDFA can't be null"]; + return; + } -- (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme { - return [ADJUtil convertUniversalLink:url scheme:scheme]; + NSString *idfa = [ADJUtil idfa]; + __block ADJIdfaGetterBlock localIdfaCallback = completion; + [ADJUtil launchInMainThread:^{ + localIdfaCallback(idfa); + }]; } -- (void)sendFirstPackages { - if (![self checkActivityHandler]) { +- (void)idfvWithCompletionHandler:(nonnull ADJIdfvGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting IDFV can't be null"]; return; } - [self.activityHandler sendFirstPackages]; + + NSString *idfv = [ADJUtil idfv]; + __block ADJIdfaGetterBlock localIdfvCallback = completion; + [ADJUtil launchInMainThread:^{ + localIdfvCallback(idfv); + }]; +} + +- (NSURL *)convertUniversalLink:(NSURL *)url withScheme:(NSString *)scheme { + return [ADJUtil convertUniversalLink:url withScheme:scheme]; } -- (void)addSessionCallbackParameter:(NSString *)key value:(NSString *)value { - if ([self checkActivityHandler:@"adding session callback parameter"]) { - [self.activityHandler addSessionCallbackParameter:key value:value]; +- (void)addGlobalCallbackParameter:(nonnull NSString *)param forKey:(nonnull NSString *)key { + if ([self checkActivityHandler:@"adding global callback parameter"]) { + [self.activityHandler addGlobalCallbackParameter:param forKey:key]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler addSessionCallbackParameterI:activityHandler key:key value:value]; + [activityHandler addGlobalCallbackParameterI:activityHandler param:param forKey:key]; }]; } -- (void)addSessionPartnerParameter:(NSString *)key value:(NSString *)value { - if ([self checkActivityHandler:@"adding session partner parameter"]) { - [self.activityHandler addSessionPartnerParameter:key value:value]; +- (void)addGlobalPartnerParameter:(nonnull NSString *)param forKey:(nonnull NSString *)key { + if ([self checkActivityHandler:@"adding global partner parameter"]) { + [self.activityHandler addGlobalPartnerParameter:param forKey:key]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler addSessionPartnerParameterI:activityHandler key:key value:value]; + [activityHandler addGlobalPartnerParameterI:activityHandler param:param forKey:key]; }]; } -- (void)removeSessionCallbackParameter:(NSString *)key { - if ([self checkActivityHandler:@"removing session callback parameter"]) { - [self.activityHandler removeSessionCallbackParameter:key]; +- (void)removeGlobalCallbackParameterForKey:(nonnull NSString *)key { + + if ([self checkActivityHandler:@"removing global callback parameter"]) { + [self.activityHandler removeGlobalCallbackParameterForKey:key]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler removeSessionCallbackParameterI:activityHandler key:key]; + [activityHandler removeGlobalCallbackParameterI:activityHandler forKey:key]; }]; + } -- (void)removeSessionPartnerParameter:(NSString *)key { - if ([self checkActivityHandler:@"removing session partner parameter"]) { - [self.activityHandler removeSessionPartnerParameter:key]; +- (void)removeGlobalPartnerParameterForKey:(nonnull NSString *)key { + if ([self checkActivityHandler:@"removing global partner parameter"]) { + [self.activityHandler removeGlobalPartnerParameterForKey:key]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler removeSessionPartnerParameterI:activityHandler key:key]; + [activityHandler removeGlobalPartnerParameterI:activityHandler forKey:key]; }]; + } -- (void)resetSessionCallbackParameters { - if ([self checkActivityHandler:@"resetting session callback parameters"]) { - [self.activityHandler resetSessionCallbackParameters]; +- (void)removeGlobalCallbackParameters { + + if ([self checkActivityHandler:@"removing all global callback parameters"]) { + [self.activityHandler removeGlobalCallbackParameters]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler resetSessionCallbackParametersI:activityHandler]; + [activityHandler removeGlobalCallbackParametersI:activityHandler]; }]; + } -- (void)resetSessionPartnerParameters { - if ([self checkActivityHandler:@"resetting session partner parameters"]) { - [self.activityHandler resetSessionPartnerParameters]; +- (void)removeGlobalPartnerParameters { + if ([self checkActivityHandler:@"removing all global partner parameters"]) { + [self.activityHandler removeGlobalPartnerParameters]; return; } if (self.savedPreLaunch.preLaunchActionsArray == nil) { self.savedPreLaunch.preLaunchActionsArray = [[NSMutableArray alloc] init]; } [self.savedPreLaunch.preLaunchActionsArray addObject:^(ADJActivityHandler *activityHandler) { - [activityHandler resetSessionPartnerParametersI:activityHandler]; + [activityHandler removeGlobalPartnerParametersI:activityHandler]; }]; } - (void)gdprForgetMe { [ADJUserDefaults setGdprForgetMe]; if ([self checkActivityHandler:@"GDPR forget me"]) { - if (self.activityHandler.isEnabled) { - [self.activityHandler setGdprForgetMe]; - } + [self.activityHandler setGdprForgetMe]; } } -- (void)trackAdRevenue:(NSString *)source payload:(NSData *)payload { - if (![self checkActivityHandler]) { - return; - } - [self.activityHandler trackAdRevenue:source payload:payload]; -} - -- (void)disableThirdPartySharing { - if (![self checkActivityHandler:@"disable third party sharing"]) { - [ADJUserDefaults setDisableThirdPartySharing]; - return; - } - [self.activityHandler disableThirdPartySharing]; -} - - (void)trackThirdPartySharing:(nonnull ADJThirdPartySharing *)thirdPartySharing { if (![self checkActivityHandler]) { if (self.savedPreLaunch.preLaunchAdjustThirdPartySharingArray == nil) { @@ -612,15 +606,15 @@ - (void)trackMeasurementConsent:(BOOL)enabled { [self.activityHandler trackMeasurementConsent:enabled]; } -- (void)trackSubscription:(ADJSubscription *)subscription { +- (void)trackAppStoreSubscription:(ADJAppStoreSubscription *)subscription { if (![self checkActivityHandler]) { return; } - [self.activityHandler trackSubscription:subscription]; + [self.activityHandler trackAppStoreSubscription:subscription]; } -- (void)requestTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion { - [ADJUtil requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { +- (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion { + [ADJUtil requestAppTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { if (completion) { completion(status); } @@ -635,32 +629,14 @@ - (int)appTrackingAuthorizationStatus { return [ADJUtil attStatus]; } -- (void)updateConversionValue:(NSInteger)conversionValue { - [[ADJSKAdNetwork getInstance] updateConversionValue:conversionValue]; -} - -- (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - [[ADJSKAdNetwork getInstance] updatePostbackConversionValue:conversionValue - completionHandler:completion]; -} - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - [[ADJSKAdNetwork getInstance] updatePostbackConversionValue:fineValue - coarseValue:coarseValue - completionHandler:completion]; -} - -- (void)updatePostbackConversionValue:(NSInteger)fineValue - coarseValue:(nonnull NSString *)coarseValue - lockWindow:(BOOL)lockWindow - completionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { - [[ADJSKAdNetwork getInstance] updatePostbackConversionValue:fineValue - coarseValue:coarseValue - lockWindow:lockWindow - completionHandler:completion]; +- (void)updateSkanConversionValue:(NSInteger)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + withCompletionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { + [[ADJSKAdNetwork getInstance] updateConversionValue:conversionValue + coarseValue:coarseValue + lockWindow:lockWindow + withCompletionHandler:completion]; } - (void)trackAdRevenue:(ADJAdRevenue *)adRevenue { @@ -670,49 +646,95 @@ - (void)trackAdRevenue:(ADJAdRevenue *)adRevenue { [self.activityHandler trackAdRevenue:adRevenue]; } -- (ADJAttribution *)attribution { +- (void)attributionWithCompletionHandler:(nonnull ADJAttributionGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting attribution can't be null"]; + return; + } + if (![self checkActivityHandler]) { - return nil; + if (self.savedPreLaunch.cachedAttributionReadCallbacksArray == nil) { + self.savedPreLaunch.cachedAttributionReadCallbacksArray = [NSMutableArray array]; + } + + [self.savedPreLaunch.cachedAttributionReadCallbacksArray addObject:completion]; + return; } - return [self.activityHandler attribution]; + return [self.activityHandler attributionWithCompletionHandler:completion]; } -- (NSString *)adid { +- (void)adidWithCompletionHandler:(nonnull ADJAdidGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting adid can't be null"]; + return; + } + if (![self checkActivityHandler]) { - return nil; + if (self.savedPreLaunch.cachedAdidReadCallbacksArray == nil) { + self.savedPreLaunch.cachedAdidReadCallbacksArray = [NSMutableArray array]; + } + + [self.savedPreLaunch.cachedAdidReadCallbacksArray addObject:completion]; + return; } - return [self.activityHandler adid]; + return [self.activityHandler adidWithCompletionHandler:completion]; } -- (NSString *)sdkVersion { - return [ADJUtil sdkVersion]; +- (void)sdkVersionWithCompletionHandler:(nonnull ADJSdkVersionGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting SDK version can't be null"]; + return; + } + + NSString *sdkVersion = [ADJUtil sdkVersion]; + __block ADJSdkVersionGetterBlock localSdkVersionCallback = completion; + [ADJUtil launchInMainThread:^{ + localSdkVersionCallback(sdkVersion); + }]; } -- (void)checkForNewAttStatus { - if (![self checkActivityHandler]) { +- (void)lastDeeplinkWithCompletionHandler:(nonnull ADJLastDeeplinkGetterBlock)completion { + if (completion == nil) { + [self.logger error:@"Completion block for getting last opened deep link can't be null"]; return; } - - [self.activityHandler checkForNewAttStatus]; + + NSURL *lastDeeplink = [ADJUserDefaults getCachedDeeplinkUrl]; + __block ADJLastDeeplinkGetterBlock localLastDeeplinkCallback = completion; + [ADJUtil launchInMainThread:^{ + localLastDeeplinkCallback(lastDeeplink); + }]; } -- (NSURL *)lastDeeplink { - return [ADJUserDefaults getCachedDeeplinkUrl]; +- (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { + if (![self checkActivityHandler]) { + if (completion != nil) { + ADJPurchaseVerificationResult *result = [[ADJPurchaseVerificationResult alloc] init]; + result.verificationStatus = @"not_verified"; + result.code = 100; + result.message = @"SDK needs to be initialized before making purchase verification request"; + completion(result); + } + return; + } + [self.activityHandler verifyAppStorePurchase:purchase + withCompletionHandler:completion]; } -- (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler { +- (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event + withCompletionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completion { if (![self checkActivityHandler]) { - if (completionHandler != nil) { + if (completion != nil) { ADJPurchaseVerificationResult *result = [[ADJPurchaseVerificationResult alloc] init]; result.verificationStatus = @"not_verified"; result.code = 100; result.message = @"SDK needs to be initialized before making purchase verification request"; - completionHandler(result); + completion(result); } return; } - [self.activityHandler verifyPurchase:purchase completionHandler:completionHandler]; + [self.activityHandler verifyAndTrackAppStorePurchase:event withCompletionHandler:completion]; } - (void)teardown { @@ -724,47 +746,41 @@ - (void)teardown { self.activityHandler = nil; } -- (void)setTestOptions:(AdjustTestOptions *)testOptions { - if (testOptions.extraPath != nil) { - self.savedPreLaunch.extraPath = testOptions.extraPath; +- (void)setTestOptions:(NSDictionary *)testOptions { + if (testOptions[@"extraPath"] != nil) { + self.savedPreLaunch.extraPath = testOptions[@"extraPath"]; } - if (testOptions.urlOverwrite != nil) { - [ADJAdjustFactory setUrlOverwrite:testOptions.urlOverwrite]; + if (testOptions[@"testUrlOverwrite"] != nil) { + [ADJAdjustFactory setTestUrlOverwrite:testOptions[@"testUrlOverwrite"]]; } - if (testOptions.timerIntervalInMilliseconds != nil) { - NSTimeInterval timerIntervalInSeconds = [testOptions.timerIntervalInMilliseconds intValue] / 1000.0; + if (testOptions[@"timerIntervalInMilliseconds"] != nil) { + NSTimeInterval timerIntervalInSeconds = [testOptions[@"timerIntervalInMilliseconds"] intValue] / 1000.0; [ADJAdjustFactory setTimerInterval:timerIntervalInSeconds]; } - if (testOptions.timerStartInMilliseconds != nil) { - NSTimeInterval timerStartInSeconds = [testOptions.timerStartInMilliseconds intValue] / 1000.0; + if (testOptions[@"timerStartInMilliseconds"] != nil) { + NSTimeInterval timerStartInSeconds = [testOptions[@"timerStartInMilliseconds"] intValue] / 1000.0; [ADJAdjustFactory setTimerStart:timerStartInSeconds]; } - if (testOptions.sessionIntervalInMilliseconds != nil) { - NSTimeInterval sessionIntervalInSeconds = [testOptions.sessionIntervalInMilliseconds intValue] / 1000.0; + if (testOptions[@"sessionIntervalInMilliseconds"] != nil) { + NSTimeInterval sessionIntervalInSeconds = [testOptions[@"sessionIntervalInMilliseconds"] intValue] / 1000.0; [ADJAdjustFactory setSessionInterval:sessionIntervalInSeconds]; } - if (testOptions.subsessionIntervalInMilliseconds != nil) { - NSTimeInterval subsessionIntervalInSeconds = [testOptions.subsessionIntervalInMilliseconds intValue] / 1000.0; + if (testOptions[@"subsessionIntervalInMilliseconds"] != nil) { + NSTimeInterval subsessionIntervalInSeconds = [testOptions[@"subsessionIntervalInMilliseconds"] intValue] / 1000.0; [ADJAdjustFactory setSubsessionInterval:subsessionIntervalInSeconds]; } - if (testOptions.attStatusInt != nil) { - [ADJAdjustFactory setAttStatus:testOptions.attStatusInt]; + if (testOptions[@"attStatusInt"] != nil) { + [ADJAdjustFactory setAttStatus:testOptions[@"attStatusInt"]]; } - if (testOptions.idfa != nil) { - [ADJAdjustFactory setIdfa:testOptions.idfa]; + if (testOptions[@"idfa"] != nil) { + [ADJAdjustFactory setIdfa:testOptions[@"idfa"]]; } - if (testOptions.noBackoffWait) { + if ([testOptions[@"noBackoffWait"] boolValue] == YES) { [ADJAdjustFactory setSdkClickHandlerBackoffStrategy:[ADJBackoffStrategy backoffStrategyWithType:ADJNoWait]]; [ADJAdjustFactory setPackageHandlerBackoffStrategy:[ADJBackoffStrategy backoffStrategyWithType:ADJNoWait]]; } - if (testOptions.enableSigning) { - [ADJAdjustFactory enableSigning]; - } - if (testOptions.disableSigning) { - [ADJAdjustFactory disableSigning]; - } - [ADJAdjustFactory setAdServicesFrameworkEnabled:testOptions.adServicesFrameworkEnabled]; + [ADJAdjustFactory setAdServicesFrameworkEnabled:[testOptions[@"adServicesFrameworkEnabled"] boolValue]]; } #pragma mark - Private & helper methods @@ -788,7 +804,7 @@ - (BOOL)checkActivityHandler:(NSString *)savedForLaunchWarningSuffixMessage { if (savedForLaunchWarningSuffixMessage != nil) { [self.logger warn:@"Adjust not initialized, but %@ saved for launch", savedForLaunchWarningSuffixMessage]; } else { - [self.logger error:@"Please initialize Adjust by calling 'appDidLaunch' before"]; + [self.logger error:@"Please initialize Adjust by calling initSdk: before"]; } return NO; } else { diff --git a/Adjust/Info.plist b/Adjust/Info.plist deleted file mode 100644 index d3de8eefb..000000000 --- a/Adjust/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/Adjust/ADJActivityHandler.h b/Adjust/Internal/ADJActivityHandler.h similarity index 58% rename from Adjust/ADJActivityHandler.h rename to Adjust/Internal/ADJActivityHandler.h index efb6ba6d8..1ec772a06 100644 --- a/Adjust/ADJActivityHandler.h +++ b/Adjust/Internal/ADJActivityHandler.h @@ -10,7 +10,7 @@ #import "ADJResponseData.h" #import "ADJActivityState.h" #import "ADJPackageParams.h" -#import "ADJSessionParameters.h" +#import "ADJGlobalParameters.h" #import "ADJThirdPartySharing.h" @interface ADJInternalState : NSObject @@ -18,8 +18,6 @@ @property (nonatomic, assign) BOOL enabled; @property (nonatomic, assign) BOOL offline; @property (nonatomic, assign) BOOL background; -@property (nonatomic, assign) BOOL delayStart; -@property (nonatomic, assign) BOOL updatePackages; @property (nonatomic, assign) BOOL updatePackagesAttData; @property (nonatomic, assign) BOOL firstLaunch; @property (nonatomic, assign) BOOL sessionResponseProcessed; @@ -31,9 +29,6 @@ - (BOOL)isOnline; - (BOOL)isInBackground; - (BOOL)isInForeground; -- (BOOL)isInDelayedStart; -- (BOOL)isNotInDelayedStart; -- (BOOL)itHasToUpdatePackages; - (BOOL)itHasToUpdatePackagesAttData; - (BOOL)isFirstLaunch; - (BOOL)hasSessionResponseNotBeenProcessed; @@ -44,7 +39,8 @@ @interface ADJSavedPreLaunch : NSObject @property (nonatomic, strong) NSMutableArray * _Nullable preLaunchActionsArray; -@property (nonatomic, copy) NSData *_Nullable deviceTokenData; +@property (nonatomic, strong) NSMutableArray * _Nullable cachedAttributionReadCallbacksArray; +@property (nonatomic, strong) NSMutableArray * _Nullable cachedAdidReadCallbacksArray; @property (nonatomic, copy) NSNumber *_Nullable enabled; @property (nonatomic, assign) BOOL offline; @property (nonatomic, copy) NSString *_Nullable extraPath; @@ -59,14 +55,11 @@ @protocol ADJActivityHandler -@property (nonatomic, copy) ADJAttribution * _Nullable attribution; @property (nonatomic, strong) ADJTrackingStatusManager * _Nullable trackingStatusManager; -- (NSString *_Nullable)adid; - - (id _Nullable)initWithConfig:(ADJConfig *_Nullable)adjustConfig savedPreLaunch:(ADJSavedPreLaunch * _Nullable)savedPreLaunch - deeplinkResolutionCallback:(AdjustResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback; + deeplinkResolutionCallback:(ADJResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback; - (void)applicationDidBecomeActive; - (void)applicationWillResignActive; @@ -79,16 +72,16 @@ - (void)launchSdkClickResponseTasks:(ADJSdkClickResponseData * _Nullable)sdkClickResponseData; - (void)launchAttributionResponseTasks:(ADJAttributionResponseData * _Nullable)attributionResponseData; - (void)setEnabled:(BOOL)enabled; -- (BOOL)isEnabled; +- (void)isEnabledWithCompletionHandler:(nonnull ADJIsEnabledGetterBlock)completion; - (BOOL)isGdprForgotten; -- (void)appWillOpenUrl:(NSURL * _Nullable)url - withClickTime:(NSDate * _Nullable)clickTime; -- (void)processDeeplink:(NSURL * _Nullable)deeplink - clickTime:(NSDate * _Nullable)clickTime - completionHandler:(AdjustResolvedDeeplinkBlock _Nullable)completionHandler; -- (void)setDeviceToken:(NSData * _Nullable)deviceToken; -- (void)setPushToken:(NSString * _Nullable)deviceToken; +- (void)processDeeplink:(ADJDeeplink * _Nullable)deeplink + withClickTime:(NSDate * _Nullable)clickTime; +- (void)processAndResolveDeeplink:(ADJDeeplink * _Nullable)deeplink + clickTime:(NSDate * _Nullable)clickTime + withCompletionHandler:(ADJResolvedDeeplinkBlock _Nullable)completion; +- (void)setPushTokenData:(NSData * _Nullable)pushTokenData; +- (void)setPushTokenString:(NSString * _Nullable)pushTokenString; - (void)setGdprForgetMe; - (void)setTrackingStateOptedOut; - (void)setAskingAttribution:(BOOL)askingAttribution; @@ -99,32 +92,30 @@ error:(NSError * _Nullable)error; - (void)setOfflineMode:(BOOL)offline; -- (void)sendFirstPackages; - -- (void)addSessionCallbackParameter:(NSString * _Nullable)key - value:(NSString * _Nullable)value; -- (void)addSessionPartnerParameter:(NSString * _Nullable)key - value:(NSString * _Nullable)value; -- (void)removeSessionCallbackParameter:(NSString * _Nullable)key; -- (void)removeSessionPartnerParameter:(NSString * _Nullable)key; -- (void)resetSessionCallbackParameters; -- (void)resetSessionPartnerParameters; -- (void)trackAdRevenue:(NSString * _Nullable)soruce - payload:(NSData * _Nullable)payload; -- (void)disableThirdPartySharing; + +- (void)addGlobalCallbackParameter:(NSString *_Nonnull)param forKey:(NSString *_Nonnull)key; +- (void)addGlobalPartnerParameter:(NSString *_Nonnull)param forKey:(NSString *_Nonnull)key; +- (void)removeGlobalCallbackParameterForKey:(NSString *_Nullable)key; +- (void)removeGlobalPartnerParameterForKey:(NSString *_Nonnull)key; +- (void)removeGlobalCallbackParameters; +- (void)removeGlobalPartnerParameters; + - (void)trackThirdPartySharing:(nonnull ADJThirdPartySharing *)thirdPartySharing; - (void)trackMeasurementConsent:(BOOL)enabled; -- (void)trackSubscription:(ADJSubscription * _Nullable)subscription; +- (void)trackAppStoreSubscription:(ADJAppStoreSubscription * _Nullable)subscription; - (void)updateAttStatusFromUserCallback:(int)newAttStatusFromUser; - (void)trackAdRevenue:(ADJAdRevenue * _Nullable)adRevenue; -- (void)checkForNewAttStatus; -- (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler; +- (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion; +- (void)attributionWithCompletionHandler:(nonnull ADJAttributionGetterBlock)completion; +- (void)adidWithCompletionHandler:(nonnull ADJAdidGetterBlock)completion; +- (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion; - (ADJPackageParams * _Nullable)packageParams; - (ADJActivityState * _Nullable)activityState; - (ADJConfig * _Nullable)adjustConfig; -- (ADJSessionParameters * _Nullable)sessionParameters; +- (ADJGlobalParameters * _Nullable)globalParameters; - (void)teardown; + (void)deleteState; @@ -134,22 +125,20 @@ - (id _Nullable)initWithConfig:(ADJConfig *_Nullable)adjustConfig savedPreLaunch:(ADJSavedPreLaunch * _Nullable)savedPreLaunch - deeplinkResolutionCallback:(AdjustResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback; - -- (void)addSessionCallbackParameterI:(ADJActivityHandler * _Nullable)selfI - key:(NSString * _Nullable)key - value:(NSString * _Nullable)value; - -- (void)addSessionPartnerParameterI:(ADJActivityHandler * _Nullable)selfI - key:(NSString * _Nullable)key - value:(NSString * _Nullable)value; -- (void)removeSessionCallbackParameterI:(ADJActivityHandler * _Nullable)selfI - key:(NSString * _Nullable)key; -- (void)removeSessionPartnerParameterI:(ADJActivityHandler * _Nullable)selfI - key:(NSString * _Nullable)key; -- (void)resetSessionCallbackParametersI:(ADJActivityHandler * _Nullable)selfI; -- (void)resetSessionPartnerParametersI:(ADJActivityHandler * _Nullable)selfI; - + deeplinkResolutionCallback:(ADJResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback; + +- (void)addGlobalCallbackParameterI:(ADJActivityHandler *_Nonnull)selfI + param:(NSString *_Nonnull)param + forKey:(NSString *_Nonnull)key; +- (void)addGlobalPartnerParameterI:(ADJActivityHandler *_Nonnull)selfI + param:(NSString *_Nonnull)param + forKey:(NSString *_Nonnull)key; +- (void)removeGlobalCallbackParameterI:(ADJActivityHandler *_Nonnull)selfI + forKey:(NSString *_Nonnull)key; +- (void)removeGlobalPartnerParameterI:(ADJActivityHandler *_Nonnull)selfI + forKey:(NSString *_Nonnull)key; +- (void)removeGlobalCallbackParametersI:(ADJActivityHandler *_Nonnull)selfI; +- (void)removeGlobalPartnerParametersI:(ADJActivityHandler *_Nonnull)selfI; @end @interface ADJTrackingStatusManager : NSObject diff --git a/Adjust/ADJActivityHandler.m b/Adjust/Internal/ADJActivityHandler.m similarity index 72% rename from Adjust/ADJActivityHandler.m rename to Adjust/Internal/ADJActivityHandler.m index b531c8135..e1b85e90f 100644 --- a/Adjust/ADJActivityHandler.m +++ b/Adjust/Internal/ADJActivityHandler.m @@ -18,12 +18,15 @@ #import "ADJUtil.h" #import "ADJAdjustFactory.h" #import "ADJAttributionHandler.h" -#import "NSString+ADJAdditions.h" +#import "ADJAdditions.h" #import "ADJSdkClickHandler.h" #import "ADJUserDefaults.h" #import "ADJUrlStrategy.h" #import "ADJSKAdNetwork.h" #import "ADJPurchaseVerificationHandler.h" +#import "ADJPurchaseVerificationResult.h" +#import "ADJAdRevenue.h" +#import "ADJDeeplink.h" NSString * const ADJAdServicesPackageKey = @"apple_ads"; @@ -31,14 +34,20 @@ static NSString * const kActivityStateFilename = @"AdjustIoActivityState"; static NSString * const kAttributionFilename = @"AdjustIoAttribution"; -static NSString * const kSessionCallbackParametersFilename = @"AdjustSessionCallbackParameters"; -static NSString * const kSessionPartnerParametersFilename = @"AdjustSessionPartnerParameters"; +static NSString * const kGlobalCallbackParametersFilename = @"AdjustSessionCallbackParameters"; +static NSString * const kGlobalPartnerParametersFilename = @"AdjustSessionPartnerParameters"; static NSString * const kAdjustPrefix = @"adjust_"; static const char * const kInternalQueueName = "io.adjust.ActivityQueue"; static const char * const kWaitingForAttQueueName = "io.adjust.WaitingForAttQueue"; static NSString * const kForegroundTimerName = @"Foreground timer"; static NSString * const kBackgroundTimerName = @"Background timer"; -static NSString * const kDelayStartTimerName = @"Delay Start timer"; +static NSString * const kSkanConversionValueResponseKey = @"skadn_conv_value"; +static NSString * const kSkanCoarseValueResponseKey = @"skadn_coarse_value"; +static NSString * const kSkanLockWindowResponseKey = @"skadn_lock_window"; +static NSString * const kSkanConversionValueCallbackKey = @"conversion_value"; +static NSString * const kSkanCoarseValueCallbackKey = @"coarse_value"; +static NSString * const kSkanLockWindowCallbackKey = @"lock_window"; +static NSString * const kSkanErrorCallbackKey = @"error"; static NSTimeInterval kForegroundTimerInterval; static NSTimeInterval kForegroundTimerStart; @@ -46,7 +55,12 @@ static double kSessionInterval; static double kSubSessionInterval; static const int kAdServicesdRetriesCount = 1; -const NSUInteger kWaitingForAttStatusLimitSeconds = 120; +const NSUInteger kWaitingForAttStatusLimitSeconds = 360; + +// SKAN constants +const NSInteger kSkanRegisterConversionValue = 0; +static NSString * const kSkanRegisterCoarseValue = @"low"; +const BOOL kSkanRegisterLockWindow = NO; @implementation ADJInternalState @@ -56,9 +70,6 @@ - (BOOL)isOffline { return self.offline; } - (BOOL)isOnline { return !self.offline; } - (BOOL)isInBackground { return self.background; } - (BOOL)isInForeground { return !self.background; } -- (BOOL)isInDelayedStart { return self.delayStart; } -- (BOOL)isNotInDelayedStart { return !self.delayStart; } -- (BOOL)itHasToUpdatePackages { return self.updatePackages; } - (BOOL)itHasToUpdatePackagesAttData { return self.updatePackagesAttData; } - (BOOL)isFirstLaunch { return self.firstLaunch; } - (BOOL)hasSessionResponseNotBeenProcessed { return !self.sessionResponseProcessed; } @@ -93,20 +104,19 @@ @interface ADJActivityHandler() @property (nonatomic, assign) NSInteger adServicesRetriesLeft; @property (nonatomic, strong) ADJInternalState *internalState; @property (nonatomic, strong) ADJPackageParams *packageParams; -@property (nonatomic, strong) ADJTimerOnce *delayStartTimer; -@property (nonatomic, strong) ADJSessionParameters *sessionParameters; +@property (nonatomic, strong) ADJGlobalParameters *globalParameters; // weak for object that Activity Handler does not "own" @property (nonatomic, weak) id logger; @property (nonatomic, weak) NSObject *adjustDelegate; // copy for objects shared with the user @property (nonatomic, copy) ADJConfig *adjustConfig; @property (nonatomic, weak) ADJSavedPreLaunch *savedPreLaunch; -@property (nonatomic, copy) NSData* deviceTokenData; @property (nonatomic, copy) NSString* basePath; @property (nonatomic, copy) NSString* gdprPath; @property (nonatomic, copy) NSString* subscriptionPath; @property (nonatomic, copy) NSString* purchaseVerificationPath; -@property (nonatomic, copy) AdjustResolvedDeeplinkBlock cachedDeeplinkResolutionCallback; +@property (nonatomic, copy) ADJResolvedDeeplinkBlock cachedDeeplinkResolutionCallback; +@property (nonatomic, copy) ADJAttribution *attribution; - (void)prepareDeeplinkI:(ADJActivityHandler *_Nullable)selfI responseData:(ADJAttributionResponseData *_Nullable)attributionResponseData NS_EXTENSION_UNAVAILABLE_IOS(""); @@ -116,12 +126,11 @@ - (void)prepareDeeplinkI:(ADJActivityHandler *_Nullable)selfI #pragma mark - @implementation ADJActivityHandler -@synthesize attribution = _attribution; @synthesize trackingStatusManager = _trackingStatusManager; - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig savedPreLaunch:(ADJSavedPreLaunch * _Nullable)savedPreLaunch - deeplinkResolutionCallback:(AdjustResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback { + deeplinkResolutionCallback:(ADJResolvedDeeplinkBlock _Nullable)deepLinkResolutionCallback { self = [super init]; if (self == nil) return nil; @@ -135,11 +144,14 @@ - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig return nil; } - // check if ASA and IDFA tracking were switched off and warn just in case - if (adjustConfig.allowIdfaReading == NO) { + // check if ASA and IDFA/IDFV tracking were switched off and warn just in case + if (adjustConfig.isIdfaReadingEnabled == NO) { [ADJAdjustFactory.logger warn:@"IDFA reading has been switched off"]; } - if (adjustConfig.allowAdServicesInfoReading == NO) { + if (adjustConfig.isIdfvReadingEnabled == NO) { + [ADJAdjustFactory.logger warn:@"IDFV reading has been switched off"]; + } + if (adjustConfig.isAdServicesEnabled == NO) { [ADJAdjustFactory.logger warn:@"AdServices info reading has been switched off"]; } @@ -163,6 +175,7 @@ - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] block:^{ [ADJActivityState saveAppToken:adjustConfig.appToken]; + [ADJActivityState setEventDeduplicationIdsArraySize:adjustConfig.eventDeduplicationIdsMaxSize]; }]; // read files to have sync values available @@ -170,11 +183,18 @@ - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig [self readActivityState]; // register SKAdNetwork attribution if we haven't already - if (self.adjustConfig.isSKAdNetworkHandlingActive) { - [[ADJSKAdNetwork getInstance] adjRegisterWithCompletionHandler:^(NSError * _Nonnull error) { - if (error) { - // handle error - } + if (self.adjustConfig.isSkanAttributionEnabled) { + NSNumber *numConversionValue = [NSNumber numberWithInteger:kSkanRegisterConversionValue]; + NSNumber *numLockWindow = [NSNumber numberWithBool:kSkanRegisterLockWindow]; + + [[ADJSKAdNetwork getInstance] registerWithConversionValue:kSkanRegisterConversionValue + coarseValue:kSkanRegisterCoarseValue + lockWindow:numLockWindow + withCompletionHandler:^(NSError * _Nonnull error) { + [self notifySkanCallbackWithConversionValue:numConversionValue + coarseValue:kSkanRegisterCoarseValue + lockWindow:numLockWindow + apiInvocationError:error]; }]; } @@ -197,14 +217,10 @@ - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig self.internalState.offline = savedPreLaunch.offline; // in the background by default self.internalState.background = YES; - // delay start not configured by default - self.internalState.delayStart = NO; // does not need to update packages by default if (self.activityState == nil) { - self.internalState.updatePackages = NO; self.internalState.updatePackagesAttData = NO; } else { - self.internalState.updatePackages = self.activityState.updatePackages; self.internalState.updatePackagesAttData = self.activityState.updatePackagesAttData; } if (self.activityState == nil) { @@ -227,13 +243,6 @@ - (id)initWithConfig:(ADJConfig *_Nullable)adjustConfig preLaunchActions:savedPreLaunch]; }]; - /* Not needed, done already in initI:preLaunchActionsArray: method. - // self.deviceTokenData = savedPreLaunch.deviceTokenData; - if (self.activityState != nil) { - [self setDeviceToken:[ADJUserDefaults getPushToken]]; - } - */ - [self addNotificationObserver]; return self; @@ -246,8 +255,6 @@ - (void)applicationDidBecomeActive { selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI delayStartI:selfI]; - [selfI activateWaitingForAttStatusI:selfI]; [selfI stopBackgroundTimerI:selfI]; @@ -311,6 +318,12 @@ - (void)finishedTracking:(ADJResponseData *)responseData { [self launchEventResponseTasks:(ADJEventResponseData*)responseData]; return; } + + // check if it's a purchase verification response + if ([responseData isKindOfClass:[ADJPurchaseVerificationResponseData class]]) { + [self launchPurchaseVerificationResponseTasks:(ADJPurchaseVerificationResponseData *)responseData]; + return; + } } - (void)launchEventResponseTasks:(ADJEventResponseData *)eventResponseData { @@ -345,6 +358,15 @@ - (void)launchAttributionResponseTasks:(ADJAttributionResponseData *)attribution }]; } +- (void)launchPurchaseVerificationResponseTasks:(ADJPurchaseVerificationResponseData *)purchaseVerificationResponseData { + [ADJUtil launchInQueue:self.internalQueue + selfInject:self + block:^(ADJActivityHandler * selfI) { + [selfI launchPurchaseVerificationResponseTasksI:selfI + purchaseVerificationResponseData:purchaseVerificationResponseData]; + }]; +} + - (void)setEnabled:(BOOL)enabled { [ADJUtil launchInQueue:self.internalQueue selfInject:self @@ -361,53 +383,54 @@ - (void)setOfflineMode:(BOOL)offline { }]; } -- (BOOL)isEnabled { - return [self isEnabledI:self]; +- (void)isEnabledWithCompletionHandler:(nonnull ADJIsEnabledGetterBlock)completion { + [ADJUtil launchInQueue:self.internalQueue + selfInject:self + block:^(ADJActivityHandler * selfI) { + [selfI isEnabledI:selfI withCompletionHandler:completion]; + }]; } - (BOOL)isGdprForgotten { return [self isGdprForgottenI:self]; } -- (NSString *)adid { - if (self.activityState == nil) { - return nil; - } - return self.activityState.adid; -} - -- (void)appWillOpenUrl:(NSURL *)url withClickTime:(NSDate *)clickTime { +- (void)processDeeplink:(ADJDeeplink *)deeplink withClickTime:(NSDate *)clickTime { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI appWillOpenUrlI:selfI url:url clickTime:clickTime]; + [selfI processDeeplinkI:selfI + url:deeplink.deeplink + clickTime:clickTime]; }]; } -- (void)processDeeplink:(NSURL * _Nullable)deeplink - clickTime:(NSDate * _Nullable)clickTime - completionHandler:(AdjustResolvedDeeplinkBlock _Nullable)completionHandler { +- (void)processAndResolveDeeplink:(ADJDeeplink * _Nullable)deeplink + clickTime:(NSDate * _Nullable)clickTime + withCompletionHandler:(ADJResolvedDeeplinkBlock _Nullable)completion { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - selfI.cachedDeeplinkResolutionCallback = completionHandler; - [selfI appWillOpenUrlI:selfI url:deeplink clickTime:clickTime]; + selfI.cachedDeeplinkResolutionCallback = completion; + [selfI processDeeplinkI:selfI + url:deeplink.deeplink + clickTime:clickTime]; }]; } -- (void)setDeviceToken:(NSData *)deviceToken { +- (void)setPushTokenData:(NSData *)pushTokenData { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI setDeviceTokenI:selfI deviceToken:deviceToken]; + [selfI setPushTokenI:selfI pushTokenData:pushTokenData]; }]; } -- (void)setPushToken:(NSString *)pushToken { +- (void)setPushTokenString:(NSString *)pushTokenString { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI setPushTokenI:selfI pushToken:pushToken]; + [selfI setPushTokenI:selfI pushTokenString:pushTokenString]; }]; } @@ -475,11 +498,11 @@ - (void)sendAdServicesClickPackage:(ADJActivityHandler *)selfI } ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:self.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:self.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; clickBuilder.internalState = selfI.internalState; ADJActivityPackage *clickPackage = @@ -514,14 +537,6 @@ - (void)backgroundTimerFired { }]; } -- (void)sendFirstPackages { - [ADJUtil launchInQueue:self.internalQueue - selfInject:self - block:^(ADJActivityHandler * selfI) { - [selfI sendFirstPackagesI:selfI]; - }]; -} - - (void)resumeActivityFromWaitingForAttStatus { [ADJUtil launchInQueue:self.internalQueue selfInject:self @@ -530,80 +545,64 @@ - (void)resumeActivityFromWaitingForAttStatus { }]; } -- (void)addSessionCallbackParameter:(NSString *)key - value:(NSString *)value { +- (void)addGlobalCallbackParameter:(NSString *)param + forKey:(NSString *)key { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI addSessionCallbackParameterI:selfI key:key value:value]; + [selfI addGlobalCallbackParameterI:selfI param:param forKey:key]; }]; } -- (void)addSessionPartnerParameter:(NSString *)key - value:(NSString *)value { +- (void)addGlobalPartnerParameter:(NSString *)param + forKey:(NSString *)key { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI addSessionPartnerParameterI:selfI key:key value:value]; + [selfI addGlobalPartnerParameterI:selfI param:param forKey:key]; }]; } -- (void)removeSessionCallbackParameter:(NSString *)key { +- (void)removeGlobalCallbackParameterForKey:(NSString *)key { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI removeSessionCallbackParameterI:selfI key:key]; + [selfI removeGlobalCallbackParameterI:selfI forKey:key]; }]; } -- (void)removeSessionPartnerParameter:(NSString *)key { +- (void)removeGlobalPartnerParameterForKey:(NSString *)key { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI removeSessionPartnerParameterI:selfI key:key]; + [selfI removeGlobalPartnerParameterI:selfI forKey:key]; }]; } -- (void)resetSessionCallbackParameters { +- (void)removeGlobalCallbackParameters { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI resetSessionCallbackParametersI:selfI]; + [selfI removeGlobalCallbackParametersI:selfI]; }]; } -- (void)resetSessionPartnerParameters { +- (void)removeGlobalPartnerParameters { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI resetSessionPartnerParametersI:selfI]; + [selfI removeGlobalPartnerParametersI:selfI]; }]; } -- (void)trackAdRevenue:(NSString *)source payload:(NSData *)payload { +- (void)trackAppStoreSubscription:(ADJAppStoreSubscription *)subscription { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI adRevenueI:selfI source:source payload:payload]; - }]; -} - -- (void)trackSubscription:(ADJSubscription *)subscription { - [ADJUtil launchInQueue:self.internalQueue - selfInject:self - block:^(ADJActivityHandler * selfI) { - [selfI trackSubscriptionI:selfI subscription:subscription]; + [selfI trackAppStoreSubscriptionI:selfI subscription:subscription]; }]; } -- (void)disableThirdPartySharing { - [ADJUtil launchInQueue:self.internalQueue - selfInject:self - block:^(ADJActivityHandler * selfI) { - [selfI disableThirdPartySharingI:selfI]; - }]; -} - - (void)trackThirdPartySharing:(nonnull ADJThirdPartySharing *)thirdPartySharing { [ADJUtil launchInQueue:self.internalQueue selfInject:self @@ -643,20 +642,56 @@ - (void)trackAdRevenue:(ADJAdRevenue *)adRevenue { }]; } -- (void)checkForNewAttStatus { +- (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI checkForNewAttStatusI:selfI]; + [selfI verifyAppStorePurchaseI:selfI purchase:purchase withCompletionHandler:completion]; }]; } -- (void)verifyPurchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler { +- (void)attributionWithCompletionHandler:(nonnull ADJAttributionGetterBlock)completion { + __block ADJAttribution *_Nullable localAttribution = self.attribution; + + if (localAttribution == nil) { + if (self.savedPreLaunch.cachedAttributionReadCallbacksArray == nil) { + self.savedPreLaunch.cachedAttributionReadCallbacksArray = [NSMutableArray array]; + } + [self.savedPreLaunch.cachedAttributionReadCallbacksArray addObject:completion]; + return; + } + + __block ADJAttributionGetterBlock localAttributionCallback = completion; + [ADJUtil launchInMainThread:^{ + localAttributionCallback(localAttribution); + }]; +} + +- (void)adidWithCompletionHandler:(nonnull ADJAdidGetterBlock)completion { + __block NSString *_Nullable localAdid = self.activityState == nil ? nil : self.activityState.adid; + + if (localAdid == nil) { + if (self.savedPreLaunch.cachedAdidReadCallbacksArray == nil) { + self.savedPreLaunch.cachedAdidReadCallbacksArray = [NSMutableArray array]; + } + + [self.savedPreLaunch.cachedAdidReadCallbacksArray addObject:completion]; + return; + } + + __block ADJAdidGetterBlock localAdidCallback = completion; + [ADJUtil launchInMainThread:^{ + localAdidCallback(localAdid); + }]; +} + +- (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { - [selfI verifyPurchaseI:selfI purchase:purchase completionHandler:completionHandler]; + [selfI verifyAndTrackAppStorePurchaseI:selfI event:event withCompletionHandler:completion]; }]; } @@ -680,21 +715,16 @@ - (void)trackAttStatusUpdateI:(ADJActivityHandler *)selfI { ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; infoBuilder.internalState = selfI.internalState; ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"att"]; [selfI.packageHandler addPackage:infoPackage]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", infoPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; } - (NSString *)getBasePath { @@ -723,9 +753,6 @@ - (void)teardown if (self.foregroundTimer != nil) { [self.foregroundTimer cancel]; } - if (self.delayStartTimer != nil) { - [self.delayStartTimer cancel]; - } if (self.attributionHandler != nil) { [self.attributionHandler teardown]; } @@ -740,7 +767,7 @@ - (void)teardown } [self teardownActivityStateS]; [self teardownAttributionS]; - [self teardownAllSessionParametersS]; + [self teardownAllGlobalParametersS]; [ADJUtil teardown]; @@ -755,15 +782,14 @@ - (void)teardown self.adjustConfig = nil; self.internalState = nil; self.packageParams = nil; - self.delayStartTimer = nil; self.logger = nil; } + (void)deleteState { [ADJActivityHandler deleteActivityState]; [ADJActivityHandler deleteAttribution]; - [ADJActivityHandler deleteSessionCallbackParameter]; - [ADJActivityHandler deleteSessionPartnerParameter]; + [ADJActivityHandler deleteGlobalCallbackParameters]; + [ADJActivityHandler deleteGlobalPartnerParameters]; [ADJUserDefaults clearAdjustStuff]; } @@ -775,12 +801,12 @@ + (void)deleteAttribution { [ADJUtil deleteFileWithName:kAttributionFilename]; } -+ (void)deleteSessionCallbackParameter { - [ADJUtil deleteFileWithName:kSessionCallbackParametersFilename]; ++ (void)deleteGlobalCallbackParameters { + [ADJUtil deleteFileWithName:kGlobalCallbackParametersFilename]; } -+ (void)deleteSessionPartnerParameter { - [ADJUtil deleteFileWithName:kSessionPartnerParametersFilename]; ++ (void)deleteGlobalPartnerParameters { + [ADJUtil deleteFileWithName:kGlobalPartnerParametersFilename]; } #pragma mark - internal @@ -798,30 +824,19 @@ - (void)initI:(ADJActivityHandler *)selfI selfI.packageParams = [ADJPackageParams packageParamsWithSdkPrefix:selfI.adjustConfig.sdkPrefix]; // read files that are accessed only in Internal sections - selfI.sessionParameters = [[ADJSessionParameters alloc] init]; - [selfI readSessionCallbackParametersI:selfI]; - [selfI readSessionPartnerParametersI:selfI]; + selfI.globalParameters = [[ADJGlobalParameters alloc] init]; + [selfI readGlobalCallbackParametersI:selfI]; + [selfI readGlobalPartnerParametersI:selfI]; - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Event buffering is enabled"]; - } - if (selfI.adjustConfig.defaultTracker != nil) { [selfI.logger info:@"Default tracker: '%@'", selfI.adjustConfig.defaultTracker]; } - if (selfI.deviceTokenData != nil) { - [selfI.logger info:@"Push token: '%@'", selfI.deviceTokenData]; - if (selfI.activityState != nil) { - [selfI setDeviceToken:selfI.deviceTokenData]; - } - } else { - if (selfI.activityState != nil) { - NSData *deviceToken = [ADJUserDefaults getPushTokenData]; - [selfI setDeviceToken:deviceToken]; - NSString *pushToken = [ADJUserDefaults getPushTokenString]; - [selfI setPushToken:pushToken]; - } + if (selfI.activityState != nil) { + NSData *pushTokenData = [ADJUserDefaults getPushTokenData]; + [selfI setPushTokenData:pushTokenData]; + NSString *pushTokenString = [ADJUserDefaults getPushTokenString]; + [selfI setPushTokenString:pushTokenString]; } if (selfI.activityState != nil) { @@ -839,71 +854,52 @@ - (void)initI:(ADJActivityHandler *)selfI name:kForegroundTimerName ]; - if (selfI.adjustConfig.sendInBackground) { + if (selfI.adjustConfig.isSendingInBackgroundEnabled) { [selfI.logger info:@"Send in background configured"]; selfI.backgroundTimer = [ADJTimerOnce timerWithBlock:^{ [selfI backgroundTimerFired]; } queue:selfI.internalQueue name:kBackgroundTimerName]; } - if (selfI.activityState == nil && - selfI.adjustConfig.delayStart > 0) - { - [selfI.logger info:@"Delay start configured"]; - selfI.internalState.delayStart = YES; - selfI.delayStartTimer = [ADJTimerOnce timerWithBlock:^{ [selfI sendFirstPackages]; } - queue:selfI.internalQueue - name:kDelayStartTimerName]; - } - // Update Waiting for ATT status state - should be done before the package handler is created. selfI.internalState.waitingForAttStatus = [selfI.trackingStatusManager shouldWaitForAttStatus]; [ADJUtil updateUrlSessionConfiguration:selfI.adjustConfig]; ADJUrlStrategy *packageHandlerUrlStrategy = - [[ADJUrlStrategy alloc] - initWithUrlStrategyInfo:selfI.adjustConfig.urlStrategy - extraPath:preLaunchActions.extraPath]; + [[ADJUrlStrategy alloc] initWithUrlStrategyDomains:selfI.adjustConfig.urlStrategyDomains + extraPath:preLaunchActions.extraPath + useSubdomains:selfI.adjustConfig.useSubdomains]; selfI.packageHandler = [[ADJPackageHandler alloc] initWithActivityHandler:selfI startsSending: [selfI toSendI:selfI sdkClickHandlerOnly:NO] - userAgent:selfI.adjustConfig.userAgent urlStrategy:packageHandlerUrlStrategy]; - // update session parameters in package queue - if ([selfI itHasToUpdatePackagesI:selfI]) { - [selfI updatePackagesI:selfI]; - } - ADJUrlStrategy *attributionHandlerUrlStrategy = - [[ADJUrlStrategy alloc] - initWithUrlStrategyInfo:selfI.adjustConfig.urlStrategy - extraPath:preLaunchActions.extraPath]; + [[ADJUrlStrategy alloc] initWithUrlStrategyDomains:selfI.adjustConfig.urlStrategyDomains + extraPath:preLaunchActions.extraPath + useSubdomains:selfI.adjustConfig.useSubdomains]; selfI.attributionHandler = [[ADJAttributionHandler alloc] initWithActivityHandler:selfI startsSending: [selfI toSendI:selfI sdkClickHandlerOnly:NO] - userAgent:selfI.adjustConfig.userAgent urlStrategy:attributionHandlerUrlStrategy]; ADJUrlStrategy *sdkClickHandlerUrlStrategy = - [[ADJUrlStrategy alloc] - initWithUrlStrategyInfo:selfI.adjustConfig.urlStrategy - extraPath:preLaunchActions.extraPath]; + [[ADJUrlStrategy alloc] initWithUrlStrategyDomains:selfI.adjustConfig.urlStrategyDomains + extraPath:preLaunchActions.extraPath + useSubdomains:selfI.adjustConfig.useSubdomains]; selfI.sdkClickHandler = [[ADJSdkClickHandler alloc] initWithActivityHandler:selfI startsSending:[selfI toSendI:selfI sdkClickHandlerOnly:YES] - userAgent:selfI.adjustConfig.userAgent urlStrategy:sdkClickHandlerUrlStrategy]; selfI.purchaseVerificationHandler = [[ADJPurchaseVerificationHandler alloc] initWithActivityHandler:selfI startsSending:[selfI toSendI:selfI sdkClickHandlerOnly:YES] - userAgent:selfI.adjustConfig.userAgent urlStrategy:sdkClickHandlerUrlStrategy]; // Update ATT status and IDFA, if necessary, in packages and sdk_click/verify packages queues. @@ -930,6 +926,9 @@ - (void)initI:(ADJActivityHandler *)selfI [selfI preLaunchActionsI:selfI preLaunchActionsArray:preLaunchActions.preLaunchActionsArray]; + [selfI processCachedAttributionReadCallback]; + [selfI processCachedAdidReadCallback]; + [ADJUtil launchInMainThreadWithInactive:^(BOOL isInactive) { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJActivityHandler * selfI) { if (!isInactive) { @@ -951,9 +950,9 @@ - (void)startI:(ADJActivityHandler *)selfI { } [selfI updateHandlersStatusAndSendI:selfI]; - + [selfI processCoppaComplianceI:selfI]; - + [selfI processSessionI:selfI]; [selfI checkAttributionStateI:selfI]; @@ -968,13 +967,12 @@ - (void)processSessionI:(ADJActivityHandler *)selfI { if (selfI.activityState == nil) { selfI.activityState = [[ADJActivityState alloc] init]; - // selfI.activityState.deviceToken = [ADJUtil convertDeviceToken:selfI.deviceTokenData]; - NSData *deviceToken = [ADJUserDefaults getPushTokenData]; - NSString *deviceTokenString = [ADJUtil convertDeviceToken:deviceToken]; - NSString *pushToken = [ADJUserDefaults getPushTokenString]; + NSData *pushTokenData = [ADJUserDefaults getPushTokenData]; + NSString *pushTokenDataAsString = [ADJUtil pushTokenDataAsString:pushTokenData]; + NSString *pushTokenString = [ADJUserDefaults getPushTokenString]; [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] block:^{ - selfI.activityState.deviceToken = deviceTokenString != nil ? deviceTokenString : pushToken; + selfI.activityState.pushToken = pushTokenDataAsString != nil ? pushTokenDataAsString : pushTokenString; }]; // track the first session package only if it's enabled @@ -984,15 +982,9 @@ - (void)processSessionI:(ADJActivityHandler *)selfI { [selfI setGdprForgetMeI:selfI]; } else { [selfI processCoppaComplianceI:selfI]; - - // check if disable third party sharing request came, then send it first - if ([ADJUserDefaults getDisableThirdPartySharing]) { - [selfI disableThirdPartySharingI:selfI]; - } if (selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray != nil) { for (ADJThirdPartySharing *thirdPartySharing - in selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray) - { + in selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray) { [selfI trackThirdPartySharingI:selfI thirdPartySharing:thirdPartySharing]; } @@ -1019,28 +1011,21 @@ - (void)processSessionI:(ADJActivityHandler *)selfI { block:^{ [selfI.activityState resetSessionAttributes:now]; selfI.activityState.enabled = [selfI.internalState isEnabled]; - selfI.activityState.updatePackages = [selfI.internalState itHasToUpdatePackages]; selfI.activityState.updatePackagesAttData = [selfI.internalState itHasToUpdatePackagesAttData]; }]; - if (selfI.adjustConfig.allowAdServicesInfoReading == YES) { + if (selfI.adjustConfig.isAdServicesEnabled == YES) { [selfI checkForAdServicesAttributionI:selfI]; } [selfI writeActivityStateI:selfI]; [ADJUserDefaults removePushToken]; - [ADJUserDefaults removeDisableThirdPartySharing]; return; } else { - // these checks should run after SDK initialization after the first one - if ([ADJUserDefaults getDisableThirdPartySharing]) { - [selfI disableThirdPartySharingI:selfI]; - } if (selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray != nil) { for (ADJThirdPartySharing *thirdPartySharing - in selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray) - { + in selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray) { [selfI trackThirdPartySharingI:selfI thirdPartySharing:thirdPartySharing]; } @@ -1118,11 +1103,11 @@ - (void)transferSessionPackageI:(ADJActivityHandler *)selfI initWithPackageParams:selfI.packageParams activityState:selfI.activityState config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters + globalParameters:selfI.globalParameters trackingStatusManager:self.trackingStatusManager createdAt:now]; sessionBuilder.internalState = selfI.internalState; - ADJActivityPackage *sessionPackage = [sessionBuilder buildSessionPackage:[selfI.internalState isInDelayedStart]]; + ADJActivityPackage *sessionPackage = [sessionBuilder buildSessionPackage]; [selfI.packageHandler addPackage:sessionPackage]; [selfI.packageHandler sendFirstPackage]; } @@ -1158,7 +1143,9 @@ - (void)processCachedDeeplinkI:(ADJActivityHandler *)selfI { return; } - [selfI appWillOpenUrlI:selfI url:cachedDeeplinkUrl clickTime:cachedDeeplinkClickTime]; + [selfI processDeeplinkI:selfI + url:cachedDeeplinkUrl + clickTime:cachedDeeplinkClickTime]; [ADJUserDefaults removeDeeplink]; } @@ -1178,8 +1165,8 @@ - (void)eventI:(ADJActivityHandler *)selfI event:(ADJEvent *)event { if (![selfI isEnabledI:selfI]) return; if (![selfI checkEventI:selfI event:event]) return; - if (![selfI checkTransactionIdI:selfI transactionId:event.transactionId]) return; - if (selfI.activityState.isGdprForgotten) { return; } + if (selfI.activityState.isGdprForgotten) return; + if (![self shouldProcessEventI:selfI withDeduplicationId:event.deduplicationId]) return; double now = [NSDate.date timeIntervalSince1970]; @@ -1194,63 +1181,24 @@ - (void)eventI:(ADJActivityHandler *)selfI initWithPackageParams:selfI.packageParams activityState:selfI.activityState config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters + globalParameters:selfI.globalParameters trackingStatusManager:self.trackingStatusManager createdAt:now]; eventBuilder.internalState = selfI.internalState; - ADJActivityPackage *eventPackage = [eventBuilder buildEventPackage:event - isInDelay:[selfI.internalState isInDelayedStart]]; + ADJActivityPackage *eventPackage = [eventBuilder buildEventPackage:event]; [selfI.packageHandler addPackage:eventPackage]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", eventPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; // if it is in the background and it can send, start the background timer - if (selfI.adjustConfig.sendInBackground && [selfI.internalState isInBackground]) { + if (selfI.adjustConfig.isSendingInBackgroundEnabled && [selfI.internalState isInBackground]) { [selfI startBackgroundTimerI:selfI]; } [selfI writeActivityStateI:selfI]; } -- (void)adRevenueI:(ADJActivityHandler *)selfI - source:(NSString *)source - payload:(NSData *)payload { - if (!selfI.activityState) { - return; - } - if (![selfI isEnabledI:selfI]) { - return; - } - if (selfI.activityState.isGdprForgotten) { - return; - } - - double now = [NSDate.date timeIntervalSince1970]; - - // Create and submit ad revenue package. - ADJPackageBuilder *adRevenueBuilder = [[ADJPackageBuilder alloc] - initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; - adRevenueBuilder.internalState = selfI.internalState; - ADJActivityPackage *adRevenuePackage = [adRevenueBuilder buildAdRevenuePackage:source payload:payload]; - [selfI.packageHandler addPackage:adRevenuePackage]; - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", adRevenuePackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } -} - -- (void)trackSubscriptionI:(ADJActivityHandler *)selfI - subscription:(ADJSubscription *)subscription { +- (void)trackAppStoreSubscriptionI:(ADJActivityHandler *)selfI + subscription:(ADJAppStoreSubscription *)subscription { if (!selfI.activityState) { return; } @@ -1266,72 +1214,16 @@ - (void)trackSubscriptionI:(ADJActivityHandler *)selfI // Create and submit ad revenue package. ADJPackageBuilder *subscriptionBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; subscriptionBuilder.internalState = selfI.internalState; - ADJActivityPackage *subscriptionPackage = [subscriptionBuilder buildSubscriptionPackage:subscription - isInDelay:[selfI.internalState isInDelayedStart]]; - [selfI.packageHandler addPackage:subscriptionPackage]; - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", subscriptionPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } -} - -- (void)disableThirdPartySharingI:(ADJActivityHandler *)selfI { - // cache the disable third party sharing request, so that the request order maintains - // even this call returns before making server request - [ADJUserDefaults setDisableThirdPartySharing]; - if (!selfI.activityState) { - return; - } - if (![selfI isEnabledI:selfI]) { - return; - } - if (selfI.activityState.isGdprForgotten) { - return; - } - if (selfI.activityState.isThirdPartySharingDisabled) { - return; - } - if (selfI.adjustConfig.coppaCompliantEnabled) { - [selfI.logger warn:@"Call to disable third party sharing API ignored, already done when COPPA enabled"]; - return; - } - - [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] - block:^{ - selfI.activityState.isThirdPartySharingDisabled = YES; - }]; - [selfI writeActivityStateI:selfI]; - - double now = [NSDate.date timeIntervalSince1970]; - - // build package - ADJPackageBuilder *dtpsBuilder = [[ADJPackageBuilder alloc] - initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; - dtpsBuilder.internalState = selfI.internalState; - ADJActivityPackage *dtpsPackage = [dtpsBuilder buildDisableThirdPartySharingPackage]; - - [selfI.packageHandler addPackage:dtpsPackage]; - - [ADJUserDefaults removeDisableThirdPartySharing]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", dtpsPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + ADJActivityPackage *subscriptionPackage = [subscriptionBuilder buildSubscriptionPackage:subscription]; + [selfI.packageHandler addPackage:subscriptionPackage]; + [selfI.packageHandler sendFirstPackage]; } - (BOOL)trackThirdPartySharingI:(ADJActivityHandler *)selfI @@ -1346,8 +1238,8 @@ - (BOOL)trackThirdPartySharingI:(ADJActivityHandler *)selfI if (selfI.activityState.isGdprForgotten) { return NO; } - if (selfI.adjustConfig.coppaCompliantEnabled) { - [selfI.logger warn:@"Calling third party sharing API not allowed when COPPA enabled"]; + if (selfI.adjustConfig.isCoppaComplianceEnabled) { + [selfI.logger warn:@"Calling third party sharing API not allowed when COPPA compliance is enabled"]; return NO; } @@ -1356,21 +1248,16 @@ - (BOOL)trackThirdPartySharingI:(ADJActivityHandler *)selfI // build package ADJPackageBuilder *tpsBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; tpsBuilder.internalState = selfI.internalState; ADJActivityPackage *dtpsPackage = [tpsBuilder buildThirdPartySharingPackage:thirdPartySharing]; [selfI.packageHandler addPackage:dtpsPackage]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", dtpsPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; return YES; } @@ -1393,21 +1280,16 @@ - (BOOL)trackMeasurementConsentI:(ADJActivityHandler *)selfI // build package ADJPackageBuilder *tpsBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; tpsBuilder.internalState = selfI.internalState; ADJActivityPackage *mcPackage = [tpsBuilder buildMeasurementConsentPackage:enabled]; [selfI.packageHandler addPackage:mcPackage]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", mcPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; return YES; } @@ -1432,63 +1314,97 @@ - (void)trackAdRevenueI:(ADJActivityHandler *)selfI // Create and submit ad revenue package. ADJPackageBuilder *adRevenueBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; adRevenueBuilder.internalState = selfI.internalState; - ADJActivityPackage *adRevenuePackage = [adRevenueBuilder buildAdRevenuePackage:adRevenue - isInDelay:[selfI.internalState isInDelayedStart]]; + + ADJActivityPackage *adRevenuePackage = [adRevenueBuilder buildAdRevenuePackage:adRevenue]; [selfI.packageHandler addPackage:adRevenuePackage]; - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", adRevenuePackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; } -- (void)checkForNewAttStatusI:(ADJActivityHandler *)selfI { - if (!selfI.activityState) { +- (void)verifyAppStorePurchaseI:(ADJActivityHandler *)selfI + purchase:(nonnull ADJAppStorePurchase *)purchase + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { + if ([ADJUtil isNull:completion]) { + [selfI.logger warn:@"Purchase verification aborted because completion handler is null"]; return; } - if (![selfI isEnabledI:selfI]) { + if (selfI.adjustConfig.isDataResidency) { + [selfI.logger warn:@"Purchase verification not available for data residency users right now"]; + ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; + verificationResult.verificationStatus = @"not_verified"; + verificationResult.code = 109; + verificationResult.message = @"Purchase verification not available for data residency users right now"; + completion(verificationResult); return; } - if (selfI.activityState.isGdprForgotten) { + if (![selfI isEnabledI:selfI]) { + [selfI.logger warn:@"Purchase verification aborted because SDK is disabled"]; return; } - if (!selfI.trackingStatusManager) { + if ([ADJUtil isNull:purchase]) { + [selfI.logger warn:@"Purchase verification aborted because purchase instance is null"]; + ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; + verificationResult.verificationStatus = @"not_verified"; + verificationResult.code = 101; + verificationResult.message = @"Purchase verification aborted because purchase instance is null"; + completion(verificationResult); return; } - - [selfI.trackingStatusManager checkForNewAttStatus]; + + double now = [NSDate.date timeIntervalSince1970]; + [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] + block:^{ + double lastInterval = now - selfI.activityState.lastActivity; + selfI.activityState.lastInterval = lastInterval; + }]; + + ADJPackageBuilder *purchaseVerificationBuilder = + [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; + purchaseVerificationBuilder.internalState = selfI.internalState; + + ADJActivityPackage *purchaseVerificationPackage = + [purchaseVerificationBuilder buildPurchaseVerificationPackageWithPurchase:purchase]; + purchaseVerificationPackage.purchaseVerificationCallback = completion; + [selfI.purchaseVerificationHandler sendPurchaseVerificationPackage:purchaseVerificationPackage]; } -- (void)verifyPurchaseI:(ADJActivityHandler *)selfI - purchase:(nonnull ADJPurchase *)purchase - completionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completionHandler { - if ([selfI.adjustConfig.urlStrategy isEqualToString:ADJDataResidencyEU] || - [selfI.adjustConfig.urlStrategy isEqualToString:ADJDataResidencyUS] || - [selfI.adjustConfig.urlStrategy isEqualToString:ADJDataResidencyTR]) { +- (void)verifyAndTrackAppStorePurchaseI:(ADJActivityHandler *)selfI + event:(nonnull ADJEvent *)event + withCompletionHandler:(nonnull ADJVerificationResultBlock)completion { + if ([ADJUtil isNull:completion]) { + [selfI.logger warn:@"Purchase verification aborted because completion handler is null"]; + return; + } + if (selfI.adjustConfig.isDataResidency) { [selfI.logger warn:@"Purchase verification not available for data residency users right now"]; + ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; + verificationResult.verificationStatus = @"not_verified"; + verificationResult.code = 109; + verificationResult.message = @"Purchase verification not available for data residency users right now"; + completion(verificationResult); return; } if (![selfI isEnabledI:selfI]) { [selfI.logger warn:@"Purchase verification aborted because SDK is disabled"]; return; } - if ([ADJUtil isNull:completionHandler]) { - [selfI.logger warn:@"Purchase verification aborted because completion handler is null"]; - return; - } - if ([ADJUtil isNull:purchase]) { - [selfI.logger warn:@"Purchase verification aborted because purchase instance is null"]; + if ([ADJUtil isNull:event]) { + [selfI.logger warn:@"Purchase verification aborted because event instance is null"]; ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; verificationResult.verificationStatus = @"not_verified"; verificationResult.code = 101; verificationResult.message = @"Purchase verification aborted because purchase instance is null"; - completionHandler(verificationResult); + completion(verificationResult); return; } @@ -1498,15 +1414,18 @@ - (void)verifyPurchaseI:(ADJActivityHandler *)selfI double lastInterval = now - selfI.activityState.lastActivity; selfI.activityState.lastInterval = lastInterval; }]; - ADJPackageBuilder *purchaseVerificationBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; - purchaseVerificationBuilder.internalState = selfI.internalState; - ADJActivityPackage *purchaseVerificationPackage = [purchaseVerificationBuilder buildPurchaseVerificationPackage:purchase]; - purchaseVerificationPackage.purchaseVerificationCallback = completionHandler; + ADJPackageBuilder *purchaseVerificationBuilder = + [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; + + ADJActivityPackage *purchaseVerificationPackage = + [purchaseVerificationBuilder buildPurchaseVerificationPackageWithEvent:event]; + purchaseVerificationPackage.purchaseVerificationCallback = completion; + purchaseVerificationPackage.event = event; [selfI.purchaseVerificationHandler sendPurchaseVerificationPackage:purchaseVerificationPackage]; } @@ -1600,7 +1519,7 @@ - (void)launchSdkClickResponseTasksI:(ADJActivityHandler *)selfI if (sdkClickResponseData.resolvedDeeplink != nil) { if (selfI.cachedDeeplinkResolutionCallback != nil) { NSString *resolvedDeepLink = sdkClickResponseData.resolvedDeeplink; - AdjustResolvedDeeplinkBlock callback = selfI.cachedDeeplinkResolutionCallback; + ADJResolvedDeeplinkBlock callback = selfI.cachedDeeplinkResolutionCallback; [ADJUtil launchInMainThread:^{ callback(resolvedDeepLink); }]; @@ -1629,6 +1548,23 @@ - (void)launchAttributionResponseTasksI:(ADJActivityHandler *)selfI [selfI prepareDeeplinkI:selfI responseData:attributionResponseData]; } +- (void)launchPurchaseVerificationResponseTasksI:(ADJActivityHandler *)selfI + purchaseVerificationResponseData:(ADJPurchaseVerificationResponseData *)purchaseVerificationResponseData { + [selfI.logger debug: + @"Got purchase_verification JSON response with message: %@", purchaseVerificationResponseData.message]; + ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; + verificationResult.verificationStatus = purchaseVerificationResponseData.jsonResponse[@"verification_status"]; + verificationResult.code = [(NSNumber *)purchaseVerificationResponseData.jsonResponse[@"code"] intValue]; + verificationResult.message = purchaseVerificationResponseData.jsonResponse[@"message"]; + purchaseVerificationResponseData.purchaseVerificationPackage.purchaseVerificationCallback(verificationResult); + + if (purchaseVerificationResponseData.purchaseVerificationPackage && + purchaseVerificationResponseData.purchaseVerificationPackage.event) + { + [self trackEvent:purchaseVerificationResponseData.purchaseVerificationPackage.event]; + } +} + - (void)prepareDeeplinkI:(ADJActivityHandler *)selfI responseData:(ADJAttributionResponseData *)attributionResponseData { if (attributionResponseData == nil) { @@ -1644,8 +1580,9 @@ - (void)prepareDeeplinkI:(ADJActivityHandler *)selfI [ADJUtil launchInMainThread:^{ BOOL toLaunchDeeplink = YES; - if ([selfI.adjustDelegate respondsToSelector:@selector(adjustDeeplinkResponse:)]) { - toLaunchDeeplink = [selfI.adjustDelegate adjustDeeplinkResponse:attributionResponseData.deeplink]; + if ([selfI.adjustDelegate respondsToSelector:@selector(adjustDeferredDeeplinkReceived:)]) { + toLaunchDeeplink = [selfI.adjustDelegate + adjustDeferredDeeplinkReceived:attributionResponseData.deeplink]; } if (toLaunchDeeplink) { @@ -1669,6 +1606,7 @@ - (void)updateAdidI:(ADJActivityHandler *)selfI selfI.activityState.adid = adid; }]; [selfI writeActivityStateI:selfI]; + [selfI processCachedAdidReadCallback]; } - (BOOL)updateAttributionI:(ADJActivityHandler *)selfI @@ -1684,6 +1622,8 @@ - (BOOL)updateAttributionI:(ADJActivityHandler *)selfI selfI.attribution = attribution; [selfI writeAttributionI:selfI]; + [selfI processCachedAttributionReadCallback]; + if (selfI.adjustDelegate == nil) { return NO; } @@ -1695,10 +1635,49 @@ - (BOOL)updateAttributionI:(ADJActivityHandler *)selfI return YES; } +- (void)processCachedAttributionReadCallback { + __block ADJAttribution *_Nullable localAttribution = self.attribution; + if (localAttribution == nil) { + return; + } + if (self.savedPreLaunch.cachedAttributionReadCallbacksArray == nil) { + return; + } + + for (ADJAttributionGetterBlock attributionCallback in + self.savedPreLaunch.cachedAttributionReadCallbacksArray) { + __block ADJAttributionGetterBlock localAttributionCallback = attributionCallback; + [ADJUtil launchInMainThread:^{ + localAttributionCallback(localAttribution); + }]; + } + + [self.savedPreLaunch.cachedAttributionReadCallbacksArray removeAllObjects]; +} + +- (void)processCachedAdidReadCallback { + __block NSString *_Nullable localAdid = self.activityState == nil ? nil : self.activityState.adid; + if (localAdid == nil) { + return; + } + if (self.savedPreLaunch.cachedAdidReadCallbacksArray == nil) { + return; + } + + for (ADJAdidGetterBlock adidCallback in self.savedPreLaunch.cachedAdidReadCallbacksArray) { + __block ADJAdidGetterBlock localAdidCallback = adidCallback; + [ADJUtil launchInMainThread:^{ + localAdidCallback(localAdid); + }]; + } + + [self.savedPreLaunch.cachedAdidReadCallbacksArray removeAllObjects]; +} + - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled { // compare with the saved or internal state if (![selfI hasChangedStateI:selfI - previousState:[selfI isEnabled] + previousState:[selfI isEnabledI:selfI] nextState:enabled trueMessage:@"Adjust already enabled" falseMessage:@"Adjust already disabled"]) { @@ -1738,9 +1717,6 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled { [selfI setGdprForgetMe]; } else { [selfI processCoppaComplianceI:selfI]; - if ([ADJUserDefaults getDisableThirdPartySharing]) { - [selfI disableThirdPartySharing]; - } if (selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray != nil) { for (ADJThirdPartySharing *thirdPartySharing in selfI.savedPreLaunch.preLaunchAdjustThirdPartySharingArray) @@ -1765,15 +1741,15 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled { double now = [NSDate.date timeIntervalSince1970]; [self trackNewSessionI:now withActivityHandler:selfI]; } - NSData *deviceToken = [ADJUserDefaults getPushTokenData]; - if (deviceToken != nil && ![selfI.activityState.deviceToken isEqualToString:[ADJUtil convertDeviceToken:deviceToken]]) { - [self setDeviceToken:deviceToken]; + NSData *pushTokenData = [ADJUserDefaults getPushTokenData]; + if (pushTokenData != nil && ![selfI.activityState.pushToken isEqualToString:[ADJUtil pushTokenDataAsString:pushTokenData]]) { + [self setPushTokenData:pushTokenData]; } - NSString *pushToken = [ADJUserDefaults getPushTokenString]; - if (pushToken != nil && ![selfI.activityState.deviceToken isEqualToString:pushToken]) { - [self setPushToken:pushToken]; + NSString *pushTokenString = [ADJUserDefaults getPushTokenString]; + if (pushTokenString != nil && ![selfI.activityState.pushToken isEqualToString:pushTokenString]) { + [self setPushTokenString:pushTokenString]; } - if (selfI.adjustConfig.allowAdServicesInfoReading == YES) { + if (selfI.adjustConfig.isAdServicesEnabled == YES) { [selfI checkForAdServicesAttributionI:selfI]; } } @@ -1786,7 +1762,7 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled { } - (BOOL)shouldFetchAdServicesI:(ADJActivityHandler *)selfI { - if (selfI.adjustConfig.allowAdServicesInfoReading == NO) { + if (selfI.adjustConfig.isAdServicesEnabled == NO) { return NO; } @@ -1840,6 +1816,13 @@ - (void)setOfflineModeI:(ADJActivityHandler *)selfI unPausingMessage:@"Resuming handlers to put SDK in online mode"]; } +- (void)isEnabledI:(ADJActivityHandler *)selfI withCompletionHandler:(ADJIsEnabledGetterBlock)completion { + __block ADJIsEnabledGetterBlock localIsEnabledCallback = completion; + [ADJUtil launchInMainThread:^{ + localIsEnabledCallback([selfI isEnabledI:selfI]); + }]; +} + - (BOOL)hasChangedStateI:(ADJActivityHandler *)selfI previousState:(BOOL)previousState nextState:(BOOL)nextState @@ -1886,20 +1869,20 @@ - (void)checkStatusI:(ADJActivityHandler *)selfI [selfI updateHandlersStatusAndSendI:selfI]; } -- (void)appWillOpenUrlI:(ADJActivityHandler *)selfI - url:(NSURL *)url - clickTime:(NSDate *)clickTime { +- (void)processDeeplinkI:(ADJActivityHandler *)selfI + url:(NSURL *)deeplink + clickTime:(NSDate *)clickTime { if (![selfI isEnabledI:selfI]) { return; } - if ([ADJUtil isNull:url]) { + if ([ADJUtil isNull:deeplink]) { return; } - if (![ADJUtil isDeeplinkValid:url]) { + if (![ADJUtil isDeeplinkValid:deeplink]) { return; } - NSArray *queryArray = [url.query componentsSeparatedByString:@"&"]; + NSArray *queryArray = [deeplink.query componentsSeparatedByString:@"&"]; if (queryArray == nil) { queryArray = @[]; } @@ -1907,7 +1890,10 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI NSMutableDictionary *adjustDeepLinks = [NSMutableDictionary dictionary]; ADJAttribution *deeplinkAttribution = [[ADJAttribution alloc] init]; for (NSString *fieldValuePair in queryArray) { - [selfI readDeeplinkQueryStringI:selfI queryString:fieldValuePair adjustDeepLinks:adjustDeepLinks attribution:deeplinkAttribution]; + [selfI readDeeplinkQueryStringI:selfI + queryString:fieldValuePair + adjustDeepLinks:adjustDeepLinks + attribution:deeplinkAttribution]; } double now = [NSDate.date timeIntervalSince1970]; @@ -1916,18 +1902,18 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI double lastInterval = now - selfI.activityState.lastActivity; selfI.activityState.lastInterval = lastInterval; }]; - ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc] - initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + ADJPackageBuilder *clickBuilder = + [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; clickBuilder.internalState = selfI.internalState; clickBuilder.deeplinkParameters = [adjustDeepLinks copy]; clickBuilder.attribution = deeplinkAttribution; clickBuilder.clickTime = clickTime; - clickBuilder.deeplink = [url absoluteString]; + clickBuilder.deeplink = [deeplink absoluteString]; ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"deeplink"]; [selfI.sdkClickHandler sendSdkClick:clickPackage]; @@ -1944,12 +1930,14 @@ - (BOOL)readDeeplinkQueryStringI:(ADJActivityHandler *)selfI NSString* key = [pairComponents objectAtIndex:0]; if (![key hasPrefix:kAdjustPrefix]) return NO; - NSString* keyDecoded = [key adjUrlDecode]; + // NSString* keyDecoded = [key adjUrlDecode]; + NSString *keyDecoded = [ADJAdditions adjUrlDecode:key]; NSString* value = [pairComponents objectAtIndex:1]; if (value.length == 0) return NO; - NSString* valueDecoded = [value adjUrlDecode]; + // NSString* valueDecoded = [value adjUrlDecode]; + NSString *valueDecoded = [ADJAdditions adjUrlDecode:value]; if (!valueDecoded) return NO; NSString* keyWOutPrefix = [keyDecoded substringFromIndex:kAdjustPrefix.length]; @@ -1989,8 +1977,8 @@ - (BOOL)trySetAttributionDeeplink:(ADJAttribution *)deeplinkAttribution return NO; } -- (void)setDeviceTokenI:(ADJActivityHandler *)selfI - deviceToken:(NSData *)deviceToken { +- (void)setPushTokenI:(ADJActivityHandler *)selfI + pushTokenData:(NSData *)pushTokenData { if (![selfI isEnabledI:selfI]) { return; } @@ -2001,20 +1989,19 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI return; } - NSString *deviceTokenString = [ADJUtil convertDeviceToken:deviceToken]; + NSString *pushTokenDataAsString = [ADJUtil pushTokenDataAsString:pushTokenData]; - if (deviceTokenString == nil) { + if (pushTokenDataAsString == nil) { return; } - - if ([deviceTokenString isEqualToString:selfI.activityState.deviceToken]) { + if ([pushTokenDataAsString isEqualToString:selfI.activityState.pushToken]) { return; } // save new push token [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] block:^{ - selfI.activityState.deviceToken = deviceTokenString; + selfI.activityState.pushToken = pushTokenDataAsString; }]; [selfI writeActivityStateI:selfI]; @@ -2022,28 +2009,22 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI double now = [NSDate.date timeIntervalSince1970]; ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; infoBuilder.internalState = selfI.internalState; ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push"]; - [selfI.packageHandler addPackage:infoPackage]; + [selfI.packageHandler sendFirstPackage]; // if push token was cached, remove it [ADJUserDefaults removePushToken]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered info %@", infoPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } } - (void)setPushTokenI:(ADJActivityHandler *)selfI - pushToken:(NSString *)pushToken { + pushTokenString:(NSString *)pushTokenString { if (![selfI isEnabledI:selfI]) { return; } @@ -2053,17 +2034,17 @@ - (void)setPushTokenI:(ADJActivityHandler *)selfI if (selfI.activityState.isGdprForgotten) { return; } - if (pushToken == nil) { + if (pushTokenString == nil) { return; } - if ([pushToken isEqualToString:selfI.activityState.deviceToken]) { + if ([pushTokenString isEqualToString:selfI.activityState.pushToken]) { return; } // save new push token [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] block:^{ - selfI.activityState.deviceToken = pushToken; + selfI.activityState.pushToken = pushTokenString; }]; [selfI writeActivityStateI:selfI]; @@ -2071,23 +2052,18 @@ - (void)setPushTokenI:(ADJActivityHandler *)selfI double now = [NSDate.date timeIntervalSince1970]; ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; infoBuilder.internalState = selfI.internalState; ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push"]; [selfI.packageHandler addPackage:infoPackage]; + [selfI.packageHandler sendFirstPackage]; // if push token was cached, remove it [ADJUserDefaults removePushToken]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered info %@", infoPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } } - (void)setGdprForgetMeI:(ADJActivityHandler *)selfI { @@ -2112,22 +2088,17 @@ - (void)setGdprForgetMeI:(ADJActivityHandler *)selfI { double now = [NSDate.date timeIntervalSince1970]; ADJPackageBuilder *gdprBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:self.trackingStatusManager + createdAt:now]; gdprBuilder.internalState = selfI.internalState; ADJActivityPackage *gdprPackage = [gdprBuilder buildGdprPackage]; [selfI.packageHandler addPackage:gdprPackage]; + [selfI.packageHandler sendFirstPackage]; [ADJUserDefaults removeGdprForgetMe]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered gdpr %@", gdprPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } } - (void)setTrackingStateOptedOutI:(ADJActivityHandler *)selfI { @@ -2146,7 +2117,7 @@ - (void)setTrackingStateOptedOutI:(ADJActivityHandler *)selfI { - (void)checkLinkMeI:(ADJActivityHandler *)selfI { #if TARGET_OS_IOS if (@available(iOS 15.0, *)) { - if (selfI.adjustConfig.linkMeEnabled == NO) { + if (selfI.adjustConfig.isLinkMeEnabled == NO) { [self.logger debug:@"LinkMe not allowed by client"]; return; } @@ -2186,7 +2157,7 @@ - (void)checkLinkMeI:(ADJActivityHandler *)selfI { ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams activityState:selfI.activityState config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters + globalParameters:selfI.globalParameters trackingStatusManager:self.trackingStatusManager createdAt:now]; clickBuilder.internalState = selfI.internalState; @@ -2219,14 +2190,6 @@ - (BOOL)isGdprForgottenI:(ADJActivityHandler *)selfI { } } -- (BOOL)itHasToUpdatePackagesI:(ADJActivityHandler *)selfI { - if (selfI.activityState != nil) { - return selfI.activityState.updatePackages; - } else { - return [selfI.internalState itHasToUpdatePackages]; - } -} - - (BOOL)itHasToUpdatePackagesAttDataI:(ADJActivityHandler *)selfI { if (selfI.activityState != nil) { return selfI.activityState.updatePackagesAttData; @@ -2328,53 +2291,53 @@ - (void)readAttribution { syncObject:[ADJAttribution class]]; } -- (void)writeSessionCallbackParametersI:(ADJActivityHandler *)selfI { - @synchronized ([ADJSessionParameters class]) { - if (selfI.sessionParameters == nil) { +- (void)writeGlobalCallbackParametersI:(ADJActivityHandler *)selfI { + @synchronized ([ADJGlobalParameters class]) { + if (selfI.globalParameters == nil) { return; } - [ADJUtil writeObject:selfI.sessionParameters.callbackParameters - fileName:kSessionCallbackParametersFilename - objectName:@"Session Callback parameters" - syncObject:[ADJSessionParameters class]]; + [ADJUtil writeObject:selfI.globalParameters.callbackParameters + fileName:kGlobalCallbackParametersFilename + objectName:@"Global Callback parameters" + syncObject:[ADJGlobalParameters class]]; } } -- (void)writeSessionPartnerParametersI:(ADJActivityHandler *)selfI { - @synchronized ([ADJSessionParameters class]) { - if (selfI.sessionParameters == nil) { +- (void)writeGlobalPartnerParametersI:(ADJActivityHandler *)selfI { + @synchronized ([ADJGlobalParameters class]) { + if (selfI.globalParameters == nil) { return; } - [ADJUtil writeObject:selfI.sessionParameters.partnerParameters - fileName:kSessionPartnerParametersFilename - objectName:@"Session Partner parameters" - syncObject:[ADJSessionParameters class]]; + [ADJUtil writeObject:selfI.globalParameters.partnerParameters + fileName:kGlobalPartnerParametersFilename + objectName:@"Global Partner parameters" + syncObject:[ADJGlobalParameters class]]; } } -- (void)teardownAllSessionParametersS { - @synchronized ([ADJSessionParameters class]) { - if (self.sessionParameters == nil) { +- (void)teardownAllGlobalParametersS { + @synchronized ([ADJGlobalParameters class]) { + if (self.globalParameters == nil) { return; } - [self.sessionParameters.callbackParameters removeAllObjects]; - [self.sessionParameters.partnerParameters removeAllObjects]; - self.sessionParameters = nil; + [self.globalParameters.callbackParameters removeAllObjects]; + [self.globalParameters.partnerParameters removeAllObjects]; + self.globalParameters = nil; } } -- (void)readSessionCallbackParametersI:(ADJActivityHandler *)selfI { - selfI.sessionParameters.callbackParameters = [ADJUtil readObject:kSessionCallbackParametersFilename - objectName:@"Session Callback parameters" +- (void)readGlobalCallbackParametersI:(ADJActivityHandler *)selfI { + selfI.globalParameters.callbackParameters = [ADJUtil readObject:kGlobalCallbackParametersFilename + objectName:@"Global Callback parameters" class:[NSDictionary class] - syncObject:[ADJSessionParameters class]]; + syncObject:[ADJGlobalParameters class]]; } -- (void)readSessionPartnerParametersI:(ADJActivityHandler *)selfI { - selfI.sessionParameters.partnerParameters = [ADJUtil readObject:kSessionPartnerParametersFilename - objectName:@"Session Partner parameters" +- (void)readGlobalPartnerParametersI:(ADJActivityHandler *)selfI { + selfI.globalParameters.partnerParameters = [ADJUtil readObject:kGlobalPartnerParametersFilename + objectName:@"Global Partner parameters" class:[NSDictionary class] - syncObject:[ADJSessionParameters class]]; + syncObject:[ADJGlobalParameters class]]; } # pragma mark - handlers status @@ -2387,18 +2350,8 @@ - (void)updateHandlersStatusAndSendI:(ADJActivityHandler *)selfI { [selfI resumeSendingI:selfI]; - // try to send if it's the first launch and it hasn't received the session response - // even if event buffering is enabled - if ([selfI.internalState isFirstLaunch] && - [selfI.internalState hasSessionResponseNotBeenProcessed]) - { - [selfI.packageHandler sendFirstPackage]; - } - // try to send - if (!selfI.adjustConfig.eventBufferingEnabled) { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; } - (void)pauseSendingI:(ADJActivityHandler *)selfI { @@ -2432,7 +2385,6 @@ - (BOOL)pausedI:(ADJActivityHandler *)selfI sdkClickHandlerOnly:(BOOL)sdkClickHa // other handlers are paused if either: return [selfI.internalState isOffline] // it's offline || ![selfI isEnabledI:selfI] // is disabled - || [selfI.internalState isInDelayedStart] // is in delayed start || [selfI.internalState isWaitingForAttStatus]; // Waiting for ATT status } @@ -2449,7 +2401,7 @@ - (BOOL)toSendI:(ADJActivityHandler *)selfI } // has the option to send in the background -> is to send - if (selfI.adjustConfig.sendInBackground) { + if (selfI.adjustConfig.isSendingInBackgroundEnabled) { return YES; } @@ -2532,77 +2484,6 @@ - (void)backgroundTimerFiredI:(ADJActivityHandler *)selfI { } } -#pragma mark - delay -- (void)delayStartI:(ADJActivityHandler *)selfI { - // it's not configured to start delayed or already finished - if ([selfI.internalState isNotInDelayedStart]) { - return; - } - - // the delay has already started - if ([selfI itHasToUpdatePackagesI:selfI]) { - return; - } - - // check against max start delay - double delayStart = selfI.adjustConfig.delayStart; - double maxDelayStart = [ADJAdjustFactory maxDelayStart]; - - if (delayStart > maxDelayStart) { - NSString * delayStartFormatted = [ADJUtil secondsNumberFormat:delayStart]; - NSString * maxDelayStartFormatted = [ADJUtil secondsNumberFormat:maxDelayStart]; - - [selfI.logger warn:@"Delay start of %@ seconds bigger than max allowed value of %@ seconds", delayStartFormatted, maxDelayStartFormatted]; - delayStart = maxDelayStart; - } - - NSString * delayStartFormatted = [ADJUtil secondsNumberFormat:delayStart]; - [selfI.logger info:@"Waiting %@ seconds before starting first session", delayStartFormatted]; - - [selfI.delayStartTimer startIn:delayStart]; - - selfI.internalState.updatePackages = YES; - - if (selfI.activityState != nil) { - [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] - block:^{ - selfI.activityState.updatePackages = YES; - }]; - [selfI writeActivityStateI:selfI]; - } -} - -- (void)sendFirstPackagesI:(ADJActivityHandler *)selfI { - if ([selfI.internalState isNotInDelayedStart]) { - [selfI.logger info:@"Start delay expired or never configured"]; - return; - } - // update packages in queue - [selfI updatePackagesI:selfI]; - // no longer is in delay start - selfI.internalState.delayStart = NO; - // cancel possible still running timer if it was called by user - [selfI.delayStartTimer cancel]; - // and release timer - selfI.delayStartTimer = nil; - // update the status and try to send first package - [selfI updateHandlersStatusAndSendI:selfI]; -} - -- (void)updatePackagesI:(ADJActivityHandler *)selfI { - // update activity packages - [selfI.packageHandler updatePackagesWithSessionParams:selfI.sessionParameters]; - // no longer needs to update packages - selfI.internalState.updatePackages = NO; - if (selfI.activityState != nil) { - [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] - block:^{ - selfI.activityState.updatePackages = NO; - }]; - [selfI writeActivityStateI:selfI]; - } -} - #pragma mark - waiting for ATT status - (void)activateWaitingForAttStatusI:(ADJActivityHandler *)selfI { @@ -2648,57 +2529,62 @@ - (void)updatePackagesAttStatusAndIdfaI:(ADJActivityHandler *)selfI { } #pragma mark - session parameters -- (void)addSessionCallbackParameterI:(ADJActivityHandler *)selfI - key:(NSString *)key - value:(NSString *)value -{ +- (void)addGlobalCallbackParameterI:(ADJActivityHandler *)selfI + param:(NSString *)param + forKey:(NSString *)key { if (![ADJUtil isValidParameter:key - attributeType:@"key" - parameterName:@"Session Callback"]) return; + attributeType:@"key" + parameterName:@"Global Callback"]) { + return; + } - if (![ADJUtil isValidParameter:value - attributeType:@"value" - parameterName:@"Session Callback"]) return; + if (![ADJUtil isValidParameter:param + attributeType:@"value" + parameterName:@"Global Callback"]) { + return; + } - if (selfI.sessionParameters.callbackParameters == nil) { - selfI.sessionParameters.callbackParameters = [NSMutableDictionary dictionary]; + if (selfI.globalParameters.callbackParameters == nil) { + selfI.globalParameters.callbackParameters = [NSMutableDictionary dictionary]; } - NSString * oldValue = [selfI.sessionParameters.callbackParameters objectForKey:key]; + NSString *oldValue = [selfI.globalParameters.callbackParameters objectForKey:key]; if (oldValue != nil) { - if ([oldValue isEqualToString:value]) { + if ([oldValue isEqualToString:param]) { [selfI.logger verbose:@"Key %@ already present with the same value", key]; return; } [selfI.logger warn:@"Key %@ will be overwritten", key]; } - [selfI.sessionParameters.callbackParameters setObject:value forKey:key]; - - [selfI writeSessionCallbackParametersI:selfI]; + [selfI.globalParameters.callbackParameters setObject:param forKey:key]; + [selfI writeGlobalCallbackParametersI:selfI]; } -- (void)addSessionPartnerParameterI:(ADJActivityHandler *)selfI - key:(NSString *)key - value:(NSString *)value -{ +- (void)addGlobalPartnerParameterI:(ADJActivityHandler *)selfI + param:(NSString *)param + forKey:(NSString *)key { if (![ADJUtil isValidParameter:key attributeType:@"key" - parameterName:@"Session Partner"]) return; + parameterName:@"Global Partner"]) { + return; + } - if (![ADJUtil isValidParameter:value + if (![ADJUtil isValidParameter:param attributeType:@"value" - parameterName:@"Session Partner"]) return; + parameterName:@"Global Partner"]) { + return; + } - if (selfI.sessionParameters.partnerParameters == nil) { - selfI.sessionParameters.partnerParameters = [NSMutableDictionary dictionary]; + if (selfI.globalParameters.partnerParameters == nil) { + selfI.globalParameters.partnerParameters = [NSMutableDictionary dictionary]; } - NSString * oldValue = [selfI.sessionParameters.partnerParameters objectForKey:key]; + NSString *oldValue = [selfI.globalParameters.partnerParameters objectForKey:key]; if (oldValue != nil) { - if ([oldValue isEqualToString:value]) { + if ([oldValue isEqualToString:param]) { [selfI.logger verbose:@"Key %@ already present with the same value", key]; return; } @@ -2706,71 +2592,72 @@ - (void)addSessionPartnerParameterI:(ADJActivityHandler *)selfI } - [selfI.sessionParameters.partnerParameters setObject:value forKey:key]; - - [selfI writeSessionPartnerParametersI:selfI]; + [selfI.globalParameters.partnerParameters setObject:param forKey:key]; + [selfI writeGlobalPartnerParametersI:selfI]; } -- (void)removeSessionCallbackParameterI:(ADJActivityHandler *)selfI - key:(NSString *)key { +- (void)removeGlobalCallbackParameterI:(ADJActivityHandler *)selfI + forKey:(NSString *)key { if (![ADJUtil isValidParameter:key attributeType:@"key" - parameterName:@"Session Callback"]) return; + parameterName:@"Global Callback"]) return; - if (selfI.sessionParameters.callbackParameters == nil) { - [selfI.logger warn:@"Session Callback parameters are not set"]; + if (selfI.globalParameters.callbackParameters == nil) { + [selfI.logger warn:@"Global Callback parameters are not set"]; return; } - NSString * oldValue = [selfI.sessionParameters.callbackParameters objectForKey:key]; + NSString *oldValue = [selfI.globalParameters.callbackParameters objectForKey:key]; if (oldValue == nil) { [selfI.logger warn:@"Key %@ does not exist", key]; return; } [selfI.logger debug:@"Key %@ will be removed", key]; - [selfI.sessionParameters.callbackParameters removeObjectForKey:key]; - [selfI writeSessionCallbackParametersI:selfI]; + [selfI.globalParameters.callbackParameters removeObjectForKey:key]; + [selfI writeGlobalCallbackParametersI:selfI]; } -- (void)removeSessionPartnerParameterI:(ADJActivityHandler *)selfI - key:(NSString *)key { +- (void)removeGlobalPartnerParameterI:(ADJActivityHandler *)selfI + forKey:(NSString *)key { if (![ADJUtil isValidParameter:key attributeType:@"key" - parameterName:@"Session Partner"]) return; + parameterName:@"Global Partner"]) { + return; + } - if (selfI.sessionParameters.partnerParameters == nil) { - [selfI.logger warn:@"Session Partner parameters are not set"]; + if (selfI.globalParameters.partnerParameters == nil) { + [selfI.logger warn:@"Global Partner parameters are not set"]; return; } - NSString * oldValue = [selfI.sessionParameters.partnerParameters objectForKey:key]; + NSString *oldValue = [selfI.globalParameters.partnerParameters objectForKey:key]; if (oldValue == nil) { [selfI.logger warn:@"Key %@ does not exist", key]; return; } [selfI.logger debug:@"Key %@ will be removed", key]; - [selfI.sessionParameters.partnerParameters removeObjectForKey:key]; - [selfI writeSessionPartnerParametersI:selfI]; + [selfI.globalParameters.partnerParameters removeObjectForKey:key]; + [selfI writeGlobalPartnerParametersI:selfI]; } -- (void)resetSessionCallbackParametersI:(ADJActivityHandler *)selfI { - if (selfI.sessionParameters.callbackParameters == nil) { - [selfI.logger warn:@"Session Callback parameters are not set"]; +- (void)removeGlobalCallbackParametersI:(ADJActivityHandler *)selfI { + if (selfI.globalParameters.callbackParameters == nil) { + [selfI.logger warn:@"Global Callback parameters are not set"]; return; } - selfI.sessionParameters.callbackParameters = nil; - [selfI writeSessionCallbackParametersI:selfI]; + selfI.globalParameters.callbackParameters = nil; + [selfI writeGlobalCallbackParametersI:selfI]; } -- (void)resetSessionPartnerParametersI:(ADJActivityHandler *)selfI { - if (selfI.sessionParameters.partnerParameters == nil) { - [selfI.logger warn:@"Session Partner parameters are not set"]; +- (void)removeGlobalPartnerParametersI:(ADJActivityHandler *)selfI { + if (selfI.globalParameters.partnerParameters == nil) { + [selfI.logger warn:@"Global Partner parameters are not set"]; return; } - selfI.sessionParameters.partnerParameters = nil; - [selfI writeSessionPartnerParametersI:selfI]; + selfI.globalParameters.partnerParameters = nil; + [selfI writeGlobalPartnerParametersI:selfI]; } - (void)preLaunchActionsI:(ADJActivityHandler *)selfI @@ -2811,20 +2698,23 @@ - (void)removeNotificationObserver { #pragma mark - checks -- (BOOL)checkTransactionIdI:(ADJActivityHandler *)selfI - transactionId:(NSString *)transactionId { - if (transactionId == nil || transactionId.length == 0) { - return YES; // no transaction ID given +- (BOOL)shouldProcessEventI:(ADJActivityHandler *)selfI + withDeduplicationId:(NSString *)deduplicationId { + if (deduplicationId == nil || deduplicationId.length == 0) { + return YES; // no deduplication ID given } - if ([selfI.activityState findTransactionId:transactionId]) { - [selfI.logger info:@"Skipping duplicate transaction ID '%@'", transactionId]; - [selfI.logger verbose:@"Found transaction ID in %@", selfI.activityState.transactionIds]; - return NO; // transaction ID found -> used already + if ([selfI.activityState eventDeduplicationIdExists:deduplicationId]) { + [selfI.logger info:@"Skipping duplicate event with deduplication ID '%@'", deduplicationId]; + [selfI.logger verbose:@"Found deduplication ID in %@", selfI.activityState.eventDeduplicationIds]; + return NO; // deduplication ID found -> used already } - - [selfI.activityState addTransactionId:transactionId]; - [selfI.logger verbose:@"Added transaction ID %@", selfI.activityState.transactionIds]; + + [selfI.logger verbose:@"Adding deduplication ID [%@] to array [%@]", + deduplicationId, + self.activityState.eventDeduplicationIds]; + + [selfI.activityState addEventDeduplicationId:deduplicationId]; // activity state will get written by caller return YES; } @@ -2868,45 +2758,28 @@ - (BOOL)checkAdRevenueI:(ADJActivityHandler *)selfI } - (void)checkConversionValue:(ADJResponseData *)responseData { - if (!self.adjustConfig.isSKAdNetworkHandlingActive) { + if (!self.adjustConfig.isSkanAttributionEnabled) { return; } if (responseData.jsonResponse == nil) { return; } - NSNumber *conversionValue = [responseData.jsonResponse objectForKey:@"skadn_conv_value"]; + NSNumber *conversionValue = [responseData.jsonResponse objectForKey:kSkanConversionValueResponseKey]; if (!conversionValue) { return; } + NSString *coarseValue = [responseData.jsonResponse objectForKey:kSkanCoarseValueResponseKey]; + NSNumber *lockWindow = [responseData.jsonResponse objectForKey:kSkanLockWindowResponseKey]; - NSString *coarseValue = [responseData.jsonResponse objectForKey:@"skadn_coarse_value"]; - NSNumber *lockWindow = [responseData.jsonResponse objectForKey:@"skadn_lock_window"]; - - [[ADJSKAdNetwork getInstance] adjUpdateConversionValue:[conversionValue intValue] - coarseValue:coarseValue - lockWindow:lockWindow - completionHandler:^(NSError *error) { - if (error) { - // handle error - } else { - // ping old callback if implemented - if ([self.adjustDelegate respondsToSelector:@selector(adjustConversionValueUpdated:)]) { - [self.logger debug:@"Launching adjustConversionValueUpdated: delegate"]; - [ADJUtil launchInMainThread:self.adjustDelegate - selector:@selector(adjustConversionValueUpdated:) - withObject:conversionValue]; - } - // ping new callback if implemented - if ([self.adjustDelegate respondsToSelector:@selector(adjustConversionValueUpdated:coarseValue:lockWindow:)]) { - [self.logger debug:@"Launching adjustConversionValueUpdated:coarseValue:lockWindow: delegate"]; - [ADJUtil launchInMainThread:^{ - [self.adjustDelegate adjustConversionValueUpdated:conversionValue - coarseValue:coarseValue - lockWindow:lockWindow]; - }]; - } - } + [[ADJSKAdNetwork getInstance] updateConversionValue:[conversionValue intValue] + coarseValue:coarseValue + lockWindow:lockWindow + withCompletionHandler:^(NSError *error) { + [self notifySkanCallbackWithConversionValue:conversionValue + coarseValue:coarseValue + lockWindow:lockWindow + apiInvocationError:error]; }]; } @@ -2916,7 +2789,7 @@ - (void)updateAttStatusFromUserCallback:(int)newAttStatusFromUser { - (void)processCoppaComplianceI:(ADJActivityHandler *)selfI { - if (!selfI.adjustConfig.coppaCompliantEnabled) { + if (!selfI.adjustConfig.isCoppaComplianceEnabled) { [self resetThirdPartySharingCoppaActivityStateI:selfI]; return; } @@ -2928,35 +2801,31 @@ - (void)disableThirdPartySharingForCoppaEnabledI:(ADJActivityHandler *)selfI { if (![selfI shouldDisableThirdPartySharingWhenCoppaEnabled:selfI]) { return; } - + [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] block:^{ selfI.activityState.isThirdPartySharingDisabledForCoppa = YES; }]; [selfI writeActivityStateI:selfI]; - ADJThirdPartySharing *thirdPartySharing = [[ADJThirdPartySharing alloc] initWithIsEnabledNumberBool:[NSNumber numberWithBool:NO]]; + ADJThirdPartySharing *thirdPartySharing = + [[ADJThirdPartySharing alloc] initWithIsEnabled:[NSNumber numberWithBool:NO]]; double now = [NSDate.date timeIntervalSince1970]; // build package - ADJPackageBuilder *tpsBuilder = [[ADJPackageBuilder alloc] - initWithPackageParams:selfI.packageParams - activityState:selfI.activityState - config:selfI.adjustConfig - sessionParameters:selfI.sessionParameters - trackingStatusManager:self.trackingStatusManager - createdAt:now]; + ADJPackageBuilder *tpsBuilder = + [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams + activityState:selfI.activityState + config:selfI.adjustConfig + globalParameters:selfI.globalParameters + trackingStatusManager:selfI.trackingStatusManager + createdAt:now]; tpsBuilder.internalState = selfI.internalState; + ADJActivityPackage *dtpsPackage = [tpsBuilder buildThirdPartySharingPackage:thirdPartySharing]; - [selfI.packageHandler addPackage:dtpsPackage]; - - if (selfI.adjustConfig.eventBufferingEnabled) { - [selfI.logger info:@"Buffered event %@", dtpsPackage.suffix]; - } else { - [selfI.packageHandler sendFirstPackage]; - } + [selfI.packageHandler sendFirstPackage]; } - (void)resetThirdPartySharingCoppaActivityStateI:(ADJActivityHandler *)selfI { @@ -2987,6 +2856,35 @@ - (BOOL)shouldDisableThirdPartySharingWhenCoppaEnabled:(ADJActivityHandler *)sel return !selfI.activityState.isThirdPartySharingDisabledForCoppa; } +#pragma mark Utils + +- (void)notifySkanCallbackWithConversionValue:(nonnull NSNumber *)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + apiInvocationError:(nullable NSError *)error { + // Create updated conversion data dictionary + NSMutableDictionary *conversionParams = [[NSMutableDictionary alloc] init]; + [conversionParams setObject:conversionValue.stringValue forKey:kSkanConversionValueCallbackKey]; + if (coarseValue != nil) { + [conversionParams setObject:coarseValue forKey:kSkanCoarseValueCallbackKey]; + } + if (lockWindow != nil) { + NSString *val = (lockWindow.boolValue) ? @"true" : @"false"; + [conversionParams setObject:val forKey:kSkanLockWindowCallbackKey]; + } + if (error != nil) { + [conversionParams setObject:error.localizedDescription forKey:kSkanErrorCallbackKey]; + } + + // Ping the callback method if implemented + if ([self.adjustDelegate respondsToSelector:@selector(adjustSkanUpdatedWithConversionData:)]) { + [self.logger debug:@"Launching delegate's method adjustSkanUpdatedWithConversionData:"]; + [ADJUtil launchInMainThread:^{ + [self.adjustDelegate adjustSkanUpdatedWithConversionData:conversionParams]; + }]; + } +} + @end @interface ADJTrackingStatusManager () @@ -3104,7 +3002,7 @@ - (BOOL)shouldWaitForAttStatus { return NO; } - // Setting timeout value limited to 120 seconds. + // Setting timeout value according to configured/predefined_limit number of seconds. NSUInteger timeoutSec = (self.activityHandler.adjustConfig.attConsentWaitingInterval <= kWaitingForAttStatusLimitSeconds) ? self.activityHandler.adjustConfig.attConsentWaitingInterval : kWaitingForAttStatusLimitSeconds; if (keyExists && [ADJUserDefaults getAttWaitingRemainingSeconds] == 0) { diff --git a/Adjust/ADJActivityKind.h b/Adjust/Internal/ADJActivityKind.h similarity index 94% rename from Adjust/ADJActivityKind.h rename to Adjust/Internal/ADJActivityKind.h index b8549052e..42fa9eeb1 100644 --- a/Adjust/ADJActivityKind.h +++ b/Adjust/Internal/ADJActivityKind.h @@ -22,7 +22,7 @@ typedef NS_ENUM(int, ADJActivityKind) { ADJActivityKindInfo = 6, ADJActivityKindGdpr = 7, ADJActivityKindAdRevenue = 8, - ADJActivityKindDisableThirdPartySharing = 9, + // ADJActivityKindDisableThirdPartySharing = 9, ADJActivityKindSubscription = 10, ADJActivityKindThirdPartySharing = 11, ADJActivityKindMeasurementConsent = 12, diff --git a/Adjust/ADJActivityKind.m b/Adjust/Internal/ADJActivityKind.m similarity index 91% rename from Adjust/ADJActivityKind.m rename to Adjust/Internal/ADJActivityKind.m index a98a6a12d..be0cf8347 100644 --- a/Adjust/ADJActivityKind.m +++ b/Adjust/Internal/ADJActivityKind.m @@ -27,8 +27,6 @@ + (ADJActivityKind)activityKindFromString:(NSString *)activityKindString { return ADJActivityKindGdpr; } else if ([@"ad_revenue" isEqualToString:activityKindString]) { return ADJActivityKindAdRevenue; - } else if ([@"disable_third_party_sharing" isEqualToString:activityKindString]) { - return ADJActivityKindDisableThirdPartySharing; } else if ([@"subscription" isEqualToString:activityKindString]) { return ADJActivityKindSubscription; } else if ([@"third_party_sharing" isEqualToString:activityKindString]) { @@ -58,8 +56,6 @@ + (NSString *)activityKindToString:(ADJActivityKind)activityKind { return @"gdpr"; case ADJActivityKindAdRevenue: return @"ad_revenue"; - case ADJActivityKindDisableThirdPartySharing: - return @"disable_third_party_sharing"; case ADJActivityKindSubscription: return @"subscription"; case ADJActivityKindThirdPartySharing: diff --git a/Adjust/ADJActivityPackage.h b/Adjust/Internal/ADJActivityPackage.h similarity index 93% rename from Adjust/ADJActivityPackage.h rename to Adjust/Internal/ADJActivityPackage.h index d4b88f928..ec7f764e0 100644 --- a/Adjust/ADJActivityPackage.h +++ b/Adjust/Internal/ADJActivityPackage.h @@ -7,6 +7,7 @@ // #import "ADJActivityKind.h" +#import "ADJEvent.h" @interface ADJActivityPackage : NSObject @@ -24,6 +25,8 @@ @property (nonatomic, copy) void (^purchaseVerificationCallback)(id); +@property (nonatomic, strong) ADJEvent *event; + @property (nonatomic, assign) NSUInteger errorCount; @property (nonatomic, copy) NSNumber *firstErrorCode; diff --git a/Adjust/ADJActivityPackage.m b/Adjust/Internal/ADJActivityPackage.m similarity index 99% rename from Adjust/ADJActivityPackage.m rename to Adjust/Internal/ADJActivityPackage.m index 97e9fdb85..97e95a696 100644 --- a/Adjust/ADJActivityPackage.m +++ b/Adjust/Internal/ADJActivityPackage.m @@ -17,7 +17,6 @@ - (NSString *)extendedString { NSMutableString *builder = [NSMutableString string]; NSArray *excludedKeys = @[ @"secret_id", - @"app_secret", @"signature", @"headers_id", @"native_version", diff --git a/Adjust/ADJActivityState.h b/Adjust/Internal/ADJActivityState.h similarity index 74% rename from Adjust/ADJActivityState.h rename to Adjust/Internal/ADJActivityState.h index e9f3b2876..f1df19413 100644 --- a/Adjust/ADJActivityState.h +++ b/Adjust/Internal/ADJActivityState.h @@ -14,12 +14,10 @@ @property (nonatomic, assign) BOOL enabled; @property (nonatomic, assign) BOOL isGdprForgotten; @property (nonatomic, assign) BOOL askingAttribution; -@property (nonatomic, assign) BOOL isThirdPartySharingDisabled; @property (nonatomic, assign) BOOL isThirdPartySharingDisabledForCoppa; @property (nonatomic, copy) NSString *dedupeToken; -@property (nonatomic, copy) NSString *deviceToken; -@property (nonatomic, assign) BOOL updatePackages; +@property (nonatomic, copy) NSString *pushToken; @property (nonatomic, assign) BOOL updatePackagesAttData; @property (nonatomic, copy) NSString *adid; @@ -38,8 +36,8 @@ @property (nonatomic, assign) double lastActivity; // Entire time in seconds since 1970 @property (nonatomic, assign) double sessionLength; // Entire duration in seconds -// last ten transaction identifiers -@property (nonatomic, strong) NSMutableArray *transactionIds; +// last stored event deduplication identifiers +@property (nonatomic, strong) NSMutableArray *eventDeduplicationIds; // Not persisted, only injected @property (nonatomic, assign) BOOL isPersisted; @@ -48,9 +46,14 @@ - (void)resetSessionAttributes:(double)now; + (void)saveAppToken:(NSString *)appTokenToSave; ++ (void)setEventDeduplicationIdsArraySize:(NSInteger)size; -// Transaction ID management -- (void)addTransactionId:(NSString *)transactionId; -- (BOOL)findTransactionId:(NSString *)transactionId; +// Deduplication ID management +- (BOOL)eventDeduplicationIdExists:(NSString *)deduplicationId; +- (void)addEventDeduplicationId:(NSString *)deduplicationId; + + +- (BOOL)isCoppaComplianceEnabled; +- (void)setCoppaComplianceWithIsEnabled:(BOOL)isCoppaComplianceEnabled; @end diff --git a/Adjust/ADJActivityState.m b/Adjust/Internal/ADJActivityState.m similarity index 75% rename from Adjust/ADJActivityState.m rename to Adjust/Internal/ADJActivityState.m index 296b71677..bebcced5c 100644 --- a/Adjust/ADJActivityState.m +++ b/Adjust/Internal/ADJActivityState.m @@ -8,11 +8,11 @@ #import "ADJAdjustFactory.h" #import "ADJActivityState.h" -#import "NSString+ADJAdditions.h" +#import "ADJAdditions.h" #import "ADJUtil.h" -static const int kTransactionIdCount = 10; static NSString *appToken = nil; +static NSUInteger eventDeduplicationIdsArraySize = 10; @implementation ADJActivityState @@ -36,11 +36,9 @@ - (id)init { self.enabled = YES; self.isGdprForgotten = NO; self.askingAttribution = NO; - self.isThirdPartySharingDisabled = NO; self.isThirdPartySharingDisabledForCoppa = NO; - self.deviceToken = nil; - self.transactionIds = [NSMutableArray arrayWithCapacity:kTransactionIdCount]; - self.updatePackages = NO; + self.pushToken = nil; + self.eventDeduplicationIds = [NSMutableArray array]; self.updatePackagesAttData = NO; self.trackingManagerAuthorizationStatus = -1; @@ -55,6 +53,15 @@ + (void)saveAppToken:(NSString *)appTokenToSave { } } ++ (void)setEventDeduplicationIdsArraySize:(NSInteger)size { + @synchronized (self) { + if (size >= 0) { + eventDeduplicationIdsArraySize = size; + [[ADJAdjustFactory logger] info:@"Setting deduplication IDs array size to: %ld", size]; + } + } +} + - (void)resetSessionAttributes:(double)now { self.subsessionCount = 1; self.sessionLength = 0; @@ -63,23 +70,30 @@ - (void)resetSessionAttributes:(double)now { self.lastActivity = now; } -- (void)addTransactionId:(NSString *)transactionId { - // Create array. - if (self.transactionIds == nil) { - self.transactionIds = [NSMutableArray arrayWithCapacity:kTransactionIdCount]; +- (void)addEventDeduplicationId:(NSString *)deduplicationId { + if (eventDeduplicationIdsArraySize == 0) { + [[ADJAdjustFactory logger] error:@"Cannot add deduplication id - deduplication IDs array size configured to 0"]; + return; } - // Make space. - if (self.transactionIds.count == kTransactionIdCount) { - [self.transactionIds removeObjectAtIndex:0]; + while (self.eventDeduplicationIds.count >= eventDeduplicationIdsArraySize) { + [[ADJAdjustFactory logger] info:@"Removing deduplication ID \"%@\" to make space", self.eventDeduplicationIds[0]]; + [self.eventDeduplicationIds removeObjectAtIndex:0]; } - // Add the new ID. - [self.transactionIds addObject:transactionId]; + [[ADJAdjustFactory logger] info:@"Added deduplication ID \"%@\"", deduplicationId]; + [self.eventDeduplicationIds addObject:deduplicationId]; } -- (BOOL)findTransactionId:(NSString *)transactionId { - return [self.transactionIds containsObject:transactionId]; +- (BOOL)eventDeduplicationIdExists:(NSString *)deduplicationId { + return [self.eventDeduplicationIds containsObject:deduplicationId]; +} + +- (BOOL)isCoppaComplianceEnabled { + return self.isThirdPartySharingDisabledForCoppa; +} +- (void)setCoppaComplianceWithIsEnabled:(BOOL)isCoppaComplianceEnabled { + self.isThirdPartySharingDisabledForCoppa = isCoppaComplianceEnabled; } #pragma mark - Private & helper methods @@ -100,11 +114,11 @@ - (void)assignRandomToken:(NSString *)randomToken { } - (NSString *)description { - return [NSString stringWithFormat:@"ec:%d sc:%d ssc:%d ask:%d sl:%.1f ts:%.1f la:%.1f dt:%@ gdprf:%d dtps:%d dtpsc:%d att:%d", + return [NSString stringWithFormat:@"ec:%d sc:%d ssc:%d ask:%d sl:%.1f ts:%.1f la:%.1f pt:%@ gdprf:%d dtpsc:%d att:%d", self.eventCount, self.sessionCount, self.subsessionCount, self.askingAttribution, self.sessionLength, - self.timeSpent, self.lastActivity, self.deviceToken, - self.isGdprForgotten, self.isThirdPartySharingDisabled, self.isThirdPartySharingDisabledForCoppa, self.trackingManagerAuthorizationStatus]; + self.timeSpent, self.lastActivity, self.pushToken, + self.isGdprForgotten, self.isThirdPartySharingDisabledForCoppa, self.trackingManagerAuthorizationStatus]; } #pragma mark - NSCoding protocol methods @@ -131,10 +145,15 @@ - (id)initWithCoder:(NSCoder *)decoder { } if ([decoder containsValueForKey:@"transactionIds"]) { - self.transactionIds = [decoder decodeObjectForKey:@"transactionIds"]; + self.eventDeduplicationIds = [decoder decodeObjectForKey:@"transactionIds"]; } - if (self.transactionIds == nil) { - self.transactionIds = [NSMutableArray arrayWithCapacity:kTransactionIdCount]; + + if (self.eventDeduplicationIds == nil) { + self.eventDeduplicationIds = [NSMutableArray array]; + } else { + while (self.eventDeduplicationIds.count > eventDeduplicationIdsArraySize) { + [self.eventDeduplicationIds removeObjectAtIndex:0]; + } } if ([decoder containsValueForKey:@"enabled"]) { @@ -155,12 +174,6 @@ - (id)initWithCoder:(NSCoder *)decoder { self.askingAttribution = NO; } - if ([decoder containsValueForKey:@"isThirdPartySharingDisabled"]) { - self.isThirdPartySharingDisabled = [decoder decodeBoolForKey:@"isThirdPartySharingDisabled"]; - } else { - self.isThirdPartySharingDisabled = NO; - } - if ([decoder containsValueForKey:@"isThirdPartySharingDisabledForCoppa"]) { self.isThirdPartySharingDisabledForCoppa = [decoder decodeBoolForKey:@"isThirdPartySharingDisabledForCoppa"]; } else { @@ -168,13 +181,7 @@ - (id)initWithCoder:(NSCoder *)decoder { } if ([decoder containsValueForKey:@"deviceToken"]) { - self.deviceToken = [decoder decodeObjectForKey:@"deviceToken"]; - } - - if ([decoder containsValueForKey:@"updatePackages"]) { - self.updatePackages = [decoder decodeBoolForKey:@"updatePackages"]; - } else { - self.updatePackages = NO; + self.pushToken = [decoder decodeObjectForKey:@"deviceToken"]; } if ([decoder containsValueForKey:@"updatePackagesAttData"]) { @@ -211,14 +218,12 @@ - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeDouble:self.timeSpent forKey:@"timeSpent"]; [encoder encodeDouble:self.lastActivity forKey:@"lastActivity"]; [encoder encodeObject:self.dedupeToken forKey:@"uuid"]; - [encoder encodeObject:self.transactionIds forKey:@"transactionIds"]; + [encoder encodeObject:self.eventDeduplicationIds forKey:@"transactionIds"]; [encoder encodeBool:self.enabled forKey:@"enabled"]; [encoder encodeBool:self.isGdprForgotten forKey:@"isGdprForgotten"]; [encoder encodeBool:self.askingAttribution forKey:@"askingAttribution"]; - [encoder encodeBool:self.isThirdPartySharingDisabled forKey:@"isThirdPartySharingDisabled"]; [encoder encodeBool:self.isThirdPartySharingDisabledForCoppa forKey:@"isThirdPartySharingDisabledForCoppa"]; - [encoder encodeObject:self.deviceToken forKey:@"deviceToken"]; - [encoder encodeBool:self.updatePackages forKey:@"updatePackages"]; + [encoder encodeObject:self.pushToken forKey:@"deviceToken"]; [encoder encodeBool:self.updatePackagesAttData forKey:@"updatePackagesAttData"]; [encoder encodeObject:self.adid forKey:@"adid"]; [encoder encodeObject:self.attributionDetails forKey:@"attributionDetails"]; @@ -244,10 +249,8 @@ - (id)copyWithZone:(NSZone *)zone { copy.isGdprForgotten = self.isGdprForgotten; copy.lastActivity = self.lastActivity; copy.askingAttribution = self.askingAttribution; - copy.isThirdPartySharingDisabled = self.isThirdPartySharingDisabled; copy.isThirdPartySharingDisabledForCoppa = self.isThirdPartySharingDisabledForCoppa; - copy.deviceToken = [self.deviceToken copyWithZone:zone]; - copy.updatePackages = self.updatePackages; + copy.pushToken = [self.pushToken copyWithZone:zone]; copy.updatePackagesAttData = self.updatePackagesAttData; copy.trackingManagerAuthorizationStatus = self.trackingManagerAuthorizationStatus; } diff --git a/Adjust/Internal/ADJAdditions.h b/Adjust/Internal/ADJAdditions.h new file mode 100644 index 000000000..60cf9dbf8 --- /dev/null +++ b/Adjust/Internal/ADJAdditions.h @@ -0,0 +1,27 @@ +// +// ADJAdditions.h +// Adjust +// +// Created by Uglješa Erceg (@uerceg) on 29th May 2024 +// Copyright © 2024 Adjust. All rights reserved. +// + +#import + +@interface ADJAdditions : NSObject + ++ (NSString *)adjJoin:(NSString *)strings, ...; + ++ (NSString *)adjTrim:(NSString *)stringToTrim; + ++ (NSString *)adjUrlEncode:(NSString *)stringToEncode; + ++ (NSString *)adjUrlDecode:(NSString *)stringToDecode; + ++ (NSString *)adjEncodeBase64:(NSData *)dataToEncode; + ++ (BOOL)adjIsStringEqual:(NSString *)first toString:(NSString *)second; + ++ (BOOL)adjIsNumberEqual:(NSNumber *)first toNumber:(NSNumber *)second; + +@end diff --git a/Adjust/Internal/ADJAdditions.m b/Adjust/Internal/ADJAdditions.m new file mode 100644 index 000000000..9c6d56c51 --- /dev/null +++ b/Adjust/Internal/ADJAdditions.m @@ -0,0 +1,116 @@ +// +// ADJAdditions.m +// Adjust +// +// Created by Uglješa Erceg (@uerceg) on 29th May 2024 +// Copyright © 2024 Adjust. All rights reserved. +// + +#import "ADJAdditions.h" + +@implementation ADJAdditions + +static const char _base64EncodingTable[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + ++ (NSString *)adjJoin:(NSString *)first, ... { + NSString *iter, *result = first; + va_list strings; + va_start(strings, first); + while ((iter = va_arg(strings, NSString*))) { + NSString *capitalized = iter.capitalizedString; + result = [result stringByAppendingString:capitalized]; + } + va_end(strings); + return result; +} + ++ (NSString *)adjTrim:(NSString *)stringToTrim { + return [stringToTrim stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; +} + ++ (NSString *)adjUrlEncode:(NSString *)stringToEncode { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, + (CFStringRef)stringToEncode, + NULL, + (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", + CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))); +#pragma clang diagnostic pop + // Alternative: + // return [self stringByAddingPercentEncodingWithAllowedCharacters: + // [NSCharacterSet characterSetWithCharactersInString:@"!*'\"();:@&=+$,/?%#[]% "]]; +} + ++ (NSString *)adjUrlDecode:(NSString *)stringToDecode { + return (NSString *)CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapes(kCFAllocatorDefault, + (CFStringRef)stringToDecode, + CFSTR(""))); +} + +// http://stackoverflow.com/a/4727124 ++ (NSString *)adjEncodeBase64:(NSData *)dataToEncode { + const unsigned char* objRawData = dataToEncode.bytes; + char* objPointer; + char* strResult; + + // get the raw data length and ensure we actually have data + NSUInteger intLength = dataToEncode.length; + if (intLength == 0) { + return nil; + } + + // setup the string-based result placeholder and pointer within that placeholder + strResult = (char *)calloc((((intLength + 2) / 3) * 4) + 1, sizeof(char)); + objPointer = strResult; + + // iterate through everything + while (intLength > 2) { // keep going until we have less than 24 bits + *objPointer++ = _base64EncodingTable[objRawData[0] >> 2]; + *objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)]; + *objPointer++ = _base64EncodingTable[((objRawData[1] & 0x0f) << 2) + (objRawData[2] >> 6)]; + *objPointer++ = _base64EncodingTable[objRawData[2] & 0x3f]; + + // we just handled 3 octets (24 bits) of data + objRawData += 3; + intLength -= 3; + } + + // now deal with the tail end of things + if (intLength != 0) { + *objPointer++ = _base64EncodingTable[objRawData[0] >> 2]; + if (intLength > 1) { + *objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)]; + *objPointer++ = _base64EncodingTable[(objRawData[1] & 0x0f) << 2]; + *objPointer++ = '='; + } else { + *objPointer++ = _base64EncodingTable[(objRawData[0] & 0x03) << 4]; + *objPointer++ = '='; + *objPointer++ = '='; + } + } + + // terminate the string-based result + *objPointer = '\0'; + + // return the results as an NSString object + NSString *encodedString = [NSString stringWithCString:strResult encoding:NSASCIIStringEncoding]; + free(strResult); + return encodedString; +} + ++ (BOOL)adjIsStringEqual:(NSString *)first toString:(NSString *)second { + if (first == nil && second == nil) { + return YES; + } + return [first isEqualToString:second]; +} + ++ (BOOL)adjIsNumberEqual:(NSNumber *)first toNumber:(NSNumber *)second { + if (first == nil && second == nil) { + return YES; + } + return [first isEqualToNumber:second]; +} + +@end diff --git a/Adjust/ADJAdjustFactory.h b/Adjust/Internal/ADJAdjustFactory.h similarity index 87% rename from Adjust/ADJAdjustFactory.h rename to Adjust/Internal/ADJAdjustFactory.h index bb4de2b3f..289b7e252 100644 --- a/Adjust/ADJAdjustFactory.h +++ b/Adjust/Internal/ADJAdjustFactory.h @@ -27,8 +27,7 @@ + (ADJBackoffStrategy *)installSessionBackoffStrategy; + (BOOL)testing; -+ (NSTimeInterval)maxDelayStart; -+ (NSString *)urlOverwrite; ++ (NSString *)testUrlOverwrite; + (BOOL)adServicesFrameworkEnabled; + (void)setLogger:(id)logger; @@ -43,11 +42,7 @@ + (void)setSdkClickHandlerBackoffStrategy:(ADJBackoffStrategy *)backoffStrategy; + (void)setTesting:(BOOL)testing; + (void)setAdServicesFrameworkEnabled:(BOOL)adServicesFrameworkEnabled; -+ (void)setMaxDelayStart:(NSTimeInterval)maxDelayStart; -+ (void)setUrlOverwrite:(NSString *)urlOverwrite; - -+ (void)enableSigning; -+ (void)disableSigning; ++ (void)setTestUrlOverwrite:(NSString *)testUrlOverwrite; + (void)teardown:(BOOL)deleteState; @end diff --git a/Adjust/ADJAdjustFactory.m b/Adjust/Internal/ADJAdjustFactory.m similarity index 75% rename from Adjust/ADJAdjustFactory.m rename to Adjust/Internal/ADJAdjustFactory.m index f0d6c9cf9..c81f97bc5 100644 --- a/Adjust/ADJAdjustFactory.m +++ b/Adjust/Internal/ADJAdjustFactory.m @@ -23,10 +23,9 @@ static ADJBackoffStrategy * sdkClickHandlerBackoffStrategy = nil; static ADJBackoffStrategy * installSessionBackoffStrategy = nil; static BOOL internalTesting = NO; -static NSTimeInterval internalMaxDelayStart = -1; static BOOL internalAdServicesFrameworkEnabled = YES; -static NSString * internalUrlOverwrite = nil; +static NSString * internalTestUrlOverwrite = nil; @implementation ADJAdjustFactory @@ -110,15 +109,8 @@ + (BOOL)adServicesFrameworkEnabled { return internalAdServicesFrameworkEnabled; } -+ (NSTimeInterval)maxDelayStart { - if (internalMaxDelayStart < 0) { - return 10.0; // 10 seconds - } - return internalMaxDelayStart; -} - -+ (NSString *)urlOverwrite { - return internalUrlOverwrite; ++ (NSString *)testUrlOverwrite { + return internalTestUrlOverwrite; } + (void)setLogger:(id)logger { @@ -168,54 +160,8 @@ + (void)setAdServicesFrameworkEnabled:(BOOL)adServicesFrameworkEnabled { internalAdServicesFrameworkEnabled = adServicesFrameworkEnabled; } -+ (void)setMaxDelayStart:(NSTimeInterval)maxDelayStart { - internalMaxDelayStart = maxDelayStart; -} - -+ (void)setUrlOverwrite:(NSString *)urlOverwrite { - internalUrlOverwrite = urlOverwrite; -} - -+ (void)enableSigning { - Class signerClass = NSClassFromString(@"ADJSigner"); - if (signerClass == nil) { - return; - } - - SEL enabledSEL = NSSelectorFromString(@"enableSigning"); - if (![signerClass respondsToSelector:enabledSEL]) { - return; - } - - IMP enableIMP = [signerClass methodForSelector:enabledSEL]; - if (!enableIMP) { - return; - } - - void (*enableFunc)(id, SEL) = (void *)enableIMP; - - enableFunc(signerClass, enabledSEL); -} - -+ (void)disableSigning { - Class signerClass = NSClassFromString(@"ADJSigner"); - if (signerClass == nil) { - return; - } - - SEL disableSEL = NSSelectorFromString(@"disableSigning"); - if (![signerClass respondsToSelector:disableSEL]) { - return; - } - - IMP disableIMP = [signerClass methodForSelector:disableSEL]; - if (!disableIMP) { - return; - } - - void (*disableFunc)(id, SEL) = (void *)disableIMP; - - disableFunc(signerClass, disableSEL); ++ (void)setTestUrlOverwrite:(NSString *)testUrlOverwrite { + internalTestUrlOverwrite = testUrlOverwrite; } + (void)teardown:(BOOL)deleteState { @@ -236,8 +182,7 @@ + (void)teardown:(BOOL)deleteState { sdkClickHandlerBackoffStrategy = nil; installSessionBackoffStrategy = nil; internalTesting = NO; - internalMaxDelayStart = -1; - internalUrlOverwrite = nil; + internalTestUrlOverwrite = nil; internalAdServicesFrameworkEnabled = YES; } @end diff --git a/Adjust/ADJAttributionHandler.h b/Adjust/Internal/ADJAttributionHandler.h similarity index 94% rename from Adjust/ADJAttributionHandler.h rename to Adjust/Internal/ADJAttributionHandler.h index 4a27a26b1..cee6fd1d5 100644 --- a/Adjust/ADJAttributionHandler.h +++ b/Adjust/Internal/ADJAttributionHandler.h @@ -16,7 +16,6 @@ - (id)initWithActivityHandler:(id) activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy; - (void)checkSessionResponse:(ADJSessionResponseData *)sessionResponseData; diff --git a/Adjust/ADJAttributionHandler.m b/Adjust/Internal/ADJAttributionHandler.m similarity index 96% rename from Adjust/ADJAttributionHandler.m rename to Adjust/Internal/ADJAttributionHandler.m index a99f84ada..cef07b0e3 100644 --- a/Adjust/ADJAttributionHandler.m +++ b/Adjust/Internal/ADJAttributionHandler.m @@ -10,7 +10,7 @@ #import "ADJAdjustFactory.h" #import "ADJUtil.h" #import "ADJActivityHandler.h" -#import "NSString+ADJAdditions.h" +#import "ADJAdditions.h" #import "ADJTimerOnce.h" #import "ADJPackageBuilder.h" #import "ADJUtil.h" @@ -33,7 +33,6 @@ @interface ADJAttributionHandler() @implementation ADJAttributionHandler - (id)initWithActivityHandler:(id) activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy { self = [super init]; @@ -43,7 +42,6 @@ - (id)initWithActivityHandler:(id) activityHandler self.requestHandler = [[ADJRequestHandler alloc] initWithResponseCallback:self urlStrategy:urlStrategy - userAgent:userAgent requestTimeout:[ADJAdjustFactory requestTimeout]]; self.activityHandler = activityHandler; self.logger = ADJAdjustFactory.logger; @@ -153,7 +151,7 @@ - (void)checkAttributionI:(ADJAttributionHandler*)selfI [selfI.activityHandler setAskingAttribution:NO]; NSDictionary * jsonAttribution = [responseData.jsonResponse objectForKey:@"attribution"]; - responseData.attribution = [ADJAttribution dataWithJsonDict:jsonAttribution adid:responseData.adid]; + responseData.attribution = [[ADJAttribution alloc] initWithJsonDict:jsonAttribution]; } - (void)checkDeeplinkI:(ADJAttributionHandler*)selfI @@ -242,7 +240,7 @@ - (ADJActivityPackage *)buildAndGetAttributionPackageI:(ADJAttributionHandler*)s initWithPackageParams:selfI.activityHandler.packageParams activityState:selfI.activityHandler.activityState config:selfI.activityHandler.adjustConfig - sessionParameters:selfI.activityHandler.sessionParameters + globalParameters:selfI.activityHandler.globalParameters trackingStatusManager:selfI.activityHandler.trackingStatusManager createdAt:now]; ADJActivityPackage *attributionPackage = [attributionBuilder buildAttributionPackage:selfI.lastInitiatedBy]; diff --git a/Adjust/ADJBackoffStrategy.h b/Adjust/Internal/ADJBackoffStrategy.h similarity index 100% rename from Adjust/ADJBackoffStrategy.h rename to Adjust/Internal/ADJBackoffStrategy.h diff --git a/Adjust/ADJBackoffStrategy.m b/Adjust/Internal/ADJBackoffStrategy.m similarity index 100% rename from Adjust/ADJBackoffStrategy.m rename to Adjust/Internal/ADJBackoffStrategy.m diff --git a/Adjust/ADJSessionParameters.h b/Adjust/Internal/ADJGlobalParameters.h similarity index 78% rename from Adjust/ADJSessionParameters.h rename to Adjust/Internal/ADJGlobalParameters.h index 603a89d0d..6bd3b19e4 100644 --- a/Adjust/ADJSessionParameters.h +++ b/Adjust/Internal/ADJGlobalParameters.h @@ -1,5 +1,5 @@ // -// ADJSessionParameters.h +// ADJGlobalParameters.h // Adjust // // Created by Pedro Filipe on 27/05/16. @@ -8,7 +8,7 @@ #import -@interface ADJSessionParameters : NSObject +@interface ADJGlobalParameters : NSObject @property (nonatomic, strong) NSMutableDictionary* callbackParameters; @property (nonatomic, strong) NSMutableDictionary* partnerParameters; diff --git a/Adjust/ADJSessionParameters.m b/Adjust/Internal/ADJGlobalParameters.m similarity index 69% rename from Adjust/ADJSessionParameters.m rename to Adjust/Internal/ADJGlobalParameters.m index 1c9622ae8..c5216a9a1 100644 --- a/Adjust/ADJSessionParameters.m +++ b/Adjust/Internal/ADJGlobalParameters.m @@ -1,14 +1,14 @@ // -// ADJSessionParameters.m +// ADJGlobalParameters.m // Adjust // // Created by Pedro Filipe on 27/05/16. // Copyright © 2016 adjust GmbH. All rights reserved. // -#import "ADJSessionParameters.h" +#import "ADJGlobalParameters.h" -@implementation ADJSessionParameters +@implementation ADJGlobalParameters - (id)initWithCoder:(NSCoder *)decoder { self = [super init]; @@ -21,9 +21,9 @@ - (id)initWithCoder:(NSCoder *)decoder { } #pragma mark - NSCopying --(id)copyWithZone:(NSZone *)zone -{ - ADJSessionParameters* copy = [[[self class] allocWithZone:zone] init]; +- (id)copyWithZone:(NSZone *)zone { + + ADJGlobalParameters* copy = [[[self class] allocWithZone:zone] init]; if (copy) { copy.callbackParameters = [self.callbackParameters copyWithZone:zone]; copy.partnerParameters = [self.partnerParameters copyWithZone:zone]; diff --git a/Adjust/ADJPackageBuilder.h b/Adjust/Internal/ADJPackageBuilder.h similarity index 82% rename from Adjust/ADJPackageBuilder.h rename to Adjust/Internal/ADJPackageBuilder.h index f3f802370..a33ace8e6 100644 --- a/Adjust/ADJPackageBuilder.h +++ b/Adjust/Internal/ADJPackageBuilder.h @@ -5,14 +5,14 @@ // Created by Christian Wellenbrock (@wellle) on 3rd July 2013. // Copyright (c) 2013-2018 Adjust GmbH. All rights reserved. // +#import #import "ADJEvent.h" #import "ADJConfig.h" #import "ADJPackageParams.h" #import "ADJActivityState.h" #import "ADJActivityPackage.h" -#import "ADJSessionParameters.h" -#import +#import "ADJGlobalParameters.h" #import "ADJActivityHandler.h" #import "ADJThirdPartySharing.h" @@ -37,20 +37,16 @@ - (id _Nullable)initWithPackageParams:(ADJPackageParams * _Nullable)packageParams activityState:(ADJActivityState * _Nullable)activityState config:(ADJConfig * _Nullable)adjustConfig - sessionParameters:(ADJSessionParameters * _Nullable)sessionParameters + globalParameters:(ADJGlobalParameters * _Nullable)globalParameters trackingStatusManager:(ADJTrackingStatusManager * _Nullable)trackingStatusManager createdAt:(double)createdAt; -- (ADJActivityPackage * _Nullable)buildSessionPackage:(BOOL)isInDelay; +- (ADJActivityPackage * _Nullable)buildSessionPackage; -- (ADJActivityPackage * _Nullable)buildEventPackage:(ADJEvent * _Nullable)event - isInDelay:(BOOL)isInDelay; +- (ADJActivityPackage * _Nullable)buildEventPackage:(ADJEvent * _Nullable)event; - (ADJActivityPackage * _Nullable)buildInfoPackage:(NSString * _Nullable)infoSource; -- (ADJActivityPackage * _Nullable)buildAdRevenuePackage:(NSString * _Nullable)source - payload:(NSData * _Nullable)payload; - - (ADJActivityPackage * _Nullable)buildClickPackage:(NSString * _Nullable)clickSource; - (ADJActivityPackage * _Nullable)buildClickPackage:(NSString * _Nullable)clickSource @@ -60,23 +56,21 @@ - (ADJActivityPackage * _Nullable)buildClickPackage:(NSString * _Nullable)clickSource linkMeUrl:(NSString * _Nullable)linkMeUrl; -- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackage:(ADJPurchase * _Nullable)purchase; +- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackageWithPurchase:(ADJAppStorePurchase * _Nullable)purchase; + +- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackageWithEvent:(ADJEvent * _Nullable)event; - (ADJActivityPackage * _Nullable)buildAttributionPackage:(NSString * _Nullable)initiatedBy; - (ADJActivityPackage * _Nullable)buildGdprPackage; -- (ADJActivityPackage * _Nullable)buildDisableThirdPartySharingPackage; - - (ADJActivityPackage * _Nullable)buildThirdPartySharingPackage:(nonnull ADJThirdPartySharing *)thirdPartySharing; - (ADJActivityPackage * _Nullable)buildMeasurementConsentPackage:(BOOL)enabled; -- (ADJActivityPackage * _Nullable)buildSubscriptionPackage:( ADJSubscription * _Nullable)subscription - isInDelay:(BOOL)isInDelay; +- (ADJActivityPackage * _Nullable)buildSubscriptionPackage:(ADJAppStoreSubscription * _Nullable)subscription; -- (ADJActivityPackage * _Nullable)buildAdRevenuePackage:(ADJAdRevenue * _Nullable)adRevenue - isInDelay:(BOOL)isInDelay; +- (ADJActivityPackage * _Nullable)buildAdRevenuePackage:(ADJAdRevenue * _Nullable)adRevenue; + (void)parameters:(NSMutableDictionary * _Nullable)parameters setDictionary:(NSDictionary * _Nullable)dictionary @@ -108,7 +102,8 @@ setNumberWithoutRounding:(NSNumber * _Nullable)value forActivityKind:(ADJActivityKind)activityKind withAttStatus:(NSString * _Nullable)attStatusString configuration:(ADJConfig * _Nullable)adjConfig - packageParams:(ADJPackageParams * _Nullable)packageParams; + packageParams:(ADJPackageParams * _Nullable)packageParams + activityState:(ADJActivityState *_Nullable)activityState; + (void)removeConsentDataFromParameters:(nonnull NSMutableDictionary *)parameters; diff --git a/Adjust/ADJPackageBuilder.m b/Adjust/Internal/ADJPackageBuilder.m similarity index 72% rename from Adjust/ADJPackageBuilder.m rename to Adjust/Internal/ADJPackageBuilder.m index 530e601d4..0e7fd178e 100644 --- a/Adjust/ADJPackageBuilder.m +++ b/Adjust/Internal/ADJPackageBuilder.m @@ -13,8 +13,11 @@ #import "ADJAdjustFactory.h" #import "ADJPackageBuilder.h" #import "ADJActivityPackage.h" -#import "NSData+ADJAdditions.h" +#import "ADJAdditions.h" #import "ADJUserDefaults.h" +#import "ADJAdRevenue.h" +#import "ADJAppStorePurchase.h" +#import "ADJAppStoreSubscription.h" NSString * const ADJAttributionTokenParameter = @"attribution_token"; @@ -28,7 +31,7 @@ @interface ADJPackageBuilder() @property (nonatomic, copy) ADJActivityState *activityState; -@property (nonatomic, weak) ADJSessionParameters *sessionParameters; +@property (nonatomic, weak) ADJGlobalParameters *globalParameters; @property (nonatomic, weak) ADJTrackingStatusManager *trackingStatusManager; @@ -41,7 +44,7 @@ @implementation ADJPackageBuilder - (id)initWithPackageParams:(ADJPackageParams * _Nullable)packageParams activityState:(ADJActivityState * _Nullable)activityState config:(ADJConfig * _Nullable)adjustConfig - sessionParameters:(ADJSessionParameters * _Nullable)sessionParameters + globalParameters:(ADJGlobalParameters * _Nullable)globalParameters trackingStatusManager:(ADJTrackingStatusManager * _Nullable)trackingStatusManager createdAt:(double)createdAt { self = [super init]; @@ -53,7 +56,7 @@ - (id)initWithPackageParams:(ADJPackageParams * _Nullable)packageParams self.packageParams = packageParams; self.adjustConfig = adjustConfig; self.activityState = activityState; - self.sessionParameters = sessionParameters; + self.globalParameters = globalParameters; self.trackingStatusManager = trackingStatusManager; return self; @@ -61,8 +64,8 @@ - (id)initWithPackageParams:(ADJPackageParams * _Nullable)packageParams #pragma mark - Public methods -- (ADJActivityPackage *)buildSessionPackage:(BOOL)isInDelay { - NSMutableDictionary *parameters = [self getSessionParameters:isInDelay]; +- (ADJActivityPackage *)buildSessionPackage { + NSMutableDictionary *parameters = [self getSessionParameters]; ADJActivityPackage *sessionPackage = [self defaultActivityPackage]; sessionPackage.path = @"/session"; sessionPackage.activityKind = ADJActivityKindSession; @@ -73,18 +76,15 @@ - (ADJActivityPackage *)buildSessionPackage:(BOOL)isInDelay { return sessionPackage; } -- (ADJActivityPackage *)buildEventPackage:(ADJEvent *)event - isInDelay:(BOOL)isInDelay { - NSMutableDictionary *parameters = [self getEventParameters:isInDelay forEventPackage:event]; +- (ADJActivityPackage *)buildEventPackage:(ADJEvent *)event { + NSMutableDictionary *parameters = [self getEventParameters:event]; ADJActivityPackage *eventPackage = [self defaultActivityPackage]; eventPackage.path = @"/event"; eventPackage.activityKind = ADJActivityKindEvent; eventPackage.suffix = [self eventSuffix:event]; eventPackage.parameters = parameters; - if (isInDelay) { - eventPackage.callbackParameters = [ADJUtil deepCopyOfDictionary:event.callbackParameters]; - eventPackage.partnerParameters = [ADJUtil deepCopyOfDictionary:event.partnerParameters]; - } + eventPackage.callbackParameters = [ADJUtil deepCopyOfDictionary:event.callbackParameters]; + eventPackage.partnerParameters = [ADJUtil deepCopyOfDictionary:event.partnerParameters]; eventPackage.parameters = [ADJUtil deepCopyOfDictionary:eventPackage.parameters]; return eventPackage; @@ -102,29 +102,15 @@ - (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource { return infoPackage; } -- (ADJActivityPackage *)buildAdRevenuePackage:(NSString *)source payload:(NSData *)payload { - NSMutableDictionary *parameters = [self getAdRevenueParameters:source payload:payload]; - ADJActivityPackage *adRevenuePackage = [self defaultActivityPackage]; - adRevenuePackage.path = @"/ad_revenue"; - adRevenuePackage.activityKind = ADJActivityKindAdRevenue; - adRevenuePackage.suffix = @""; - adRevenuePackage.parameters = parameters; - adRevenuePackage.parameters = [ADJUtil deepCopyOfDictionary:adRevenuePackage.parameters]; - - return adRevenuePackage; -} - -- (ADJActivityPackage *)buildAdRevenuePackage:(ADJAdRevenue *)adRevenue isInDelay:(BOOL)isInDelay { - NSMutableDictionary *parameters = [self getAdRevenueParameters:adRevenue isInDelay:isInDelay]; +- (ADJActivityPackage *)buildAdRevenuePackage:(ADJAdRevenue *)adRevenue { + NSMutableDictionary *parameters = [self getAdRevenueParameters:adRevenue]; ADJActivityPackage *adRevenuePackage = [self defaultActivityPackage]; adRevenuePackage.path = @"/ad_revenue"; adRevenuePackage.activityKind = ADJActivityKindAdRevenue; adRevenuePackage.suffix = @""; adRevenuePackage.parameters = parameters; - if (isInDelay) { - adRevenuePackage.callbackParameters = [ADJUtil deepCopyOfDictionary:adRevenue.callbackParameters]; - adRevenuePackage.partnerParameters = [ADJUtil deepCopyOfDictionary:adRevenue.partnerParameters]; - } + adRevenuePackage.callbackParameters = [ADJUtil deepCopyOfDictionary:adRevenue.callbackParameters]; + adRevenuePackage.partnerParameters = [ADJUtil deepCopyOfDictionary:adRevenue.partnerParameters]; adRevenuePackage.parameters = [ADJUtil deepCopyOfDictionary:adRevenuePackage.parameters]; return adRevenuePackage; @@ -170,19 +156,6 @@ - (ADJActivityPackage *)buildGdprPackage { return gdprPackage; } -- (ADJActivityPackage *)buildDisableThirdPartySharingPackage { - NSMutableDictionary *parameters = [self getDisableThirdPartySharingParameters]; - ADJActivityPackage *dtpsPackage = [self defaultActivityPackage]; - dtpsPackage.path = @"/disable_third_party_sharing"; - dtpsPackage.activityKind = ADJActivityKindDisableThirdPartySharing; - dtpsPackage.suffix = @""; - dtpsPackage.parameters = parameters; - dtpsPackage.parameters = [ADJUtil deepCopyOfDictionary:dtpsPackage.parameters]; - - return dtpsPackage; -} - - - (ADJActivityPackage *)buildThirdPartySharingPackage:(nonnull ADJThirdPartySharing *)thirdPartySharing { NSMutableDictionary *parameters = [self getThirdPartySharingParameters:thirdPartySharing]; ADJActivityPackage *tpsPackage = [self defaultActivityPackage]; @@ -207,18 +180,15 @@ - (ADJActivityPackage *)buildMeasurementConsentPackage:(BOOL)enabled { return mcPackage; } -- (ADJActivityPackage *)buildSubscriptionPackage:(ADJSubscription *)subscription - isInDelay:(BOOL)isInDelay { - NSMutableDictionary *parameters = [self getSubscriptionParameters:isInDelay forSubscriptionPackage:subscription]; +- (ADJActivityPackage *)buildSubscriptionPackage:(ADJAppStoreSubscription *)subscription { + NSMutableDictionary *parameters = [self getSubscriptionParameters:subscription]; ADJActivityPackage *subscriptionPackage = [self defaultActivityPackage]; subscriptionPackage.path = @"/v2/purchase"; subscriptionPackage.activityKind = ADJActivityKindSubscription; subscriptionPackage.suffix = @""; subscriptionPackage.parameters = parameters; - if (isInDelay) { - subscriptionPackage.callbackParameters = [ADJUtil deepCopyOfDictionary:subscription.callbackParameters]; - subscriptionPackage.partnerParameters = [ADJUtil deepCopyOfDictionary:subscription.partnerParameters]; - } + subscriptionPackage.callbackParameters = [ADJUtil deepCopyOfDictionary:subscription.callbackParameters]; + subscriptionPackage.partnerParameters = [ADJUtil deepCopyOfDictionary:subscription.partnerParameters]; subscriptionPackage.parameters = [ADJUtil deepCopyOfDictionary:subscriptionPackage.parameters]; return subscriptionPackage; @@ -276,15 +246,9 @@ - (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource return [self buildClickPackage:clickSource extraParameters:parameters]; } -- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackage:(ADJPurchase * _Nullable)purchase { +- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackageWithPurchase:(ADJAppStorePurchase * _Nullable)purchase { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - if (purchase.receipt != nil) { - NSString *receiptBase64 = [purchase.receipt adjEncodeBase64]; - [ADJPackageBuilder parameters:parameters - setString:receiptBase64 - forKey:@"receipt"]; - } if (purchase.transactionId != nil) { [ADJPackageBuilder parameters:parameters setString:purchase.transactionId @@ -299,6 +263,38 @@ - (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackage:(ADJPurchase return [self buildPurchaseVerificationPackageWithExtraParams:parameters]; } +- (ADJActivityPackage * _Nullable)buildPurchaseVerificationPackageWithEvent:(ADJEvent *)event { + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + + if (event.transactionId != nil) { + [ADJPackageBuilder parameters:parameters + setString:event.transactionId + forKey:@"transaction_id"]; + } + if (event.productId != nil) { + [ADJPackageBuilder parameters:parameters + setString:event.productId + forKey:@"product_id"]; + } + if (event.eventToken != nil) { + [ADJPackageBuilder parameters:parameters + setString:event.eventToken + forKey:@"event_token"]; + } + if (event.revenue != nil) { + [ADJPackageBuilder parameters:parameters + setNumber:event.revenue + forKey:@"revenue"]; + } + if (event.currency != nil) { + [ADJPackageBuilder parameters:parameters + setString:event.currency + forKey:@"currency"]; + } + + return [self buildPurchaseVerificationPackageWithExtraParams:parameters]; +} + + (void)parameters:(NSMutableDictionary *)parameters setDictionary:(NSDictionary *)dictionary forKey:(NSString *)key { if (dictionary == nil) { return; @@ -320,15 +316,15 @@ + (void)parameters:(NSMutableDictionary *)parameters setString:(NSString *)value #pragma mark - Private & helper methods -- (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay { +- (NSMutableDictionary *)getSessionParameters { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; @@ -340,7 +336,6 @@ - (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -352,13 +347,8 @@ - (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -370,10 +360,8 @@ - (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay { } } - if (!isInDelay) { - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; - } + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [self addConsentToParameters:parameters forActivityKind:ADJActivityKindSession]; [self addIdfvIfPossibleToParameters:parameters]; @@ -382,15 +370,15 @@ - (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay { return parameters; } -- (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJEvent *)event { +- (NSMutableDictionary *)getEventParameters:(ADJEvent *)event { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:event.currency forKey:@"currency"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; @@ -405,28 +393,11 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; [ADJPackageBuilder parameters:parameters setNumber:event.revenue forKey:@"revenue"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; - - // FYI: long time ago deprecated way of purchase verification, to be removed - // if (event.emptyReceipt) { - // NSString *emptyReceipt = @"empty"; - // [ADJPackageBuilder parameters:parameters setString:emptyReceipt forKey:@"receipt"]; - // [ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"transaction_id"]; - // } else if (event.receipt != nil) { - // NSString *receiptBase64 = [event.receipt adjEncodeBase64]; - // [ADJPackageBuilder parameters:parameters setString:receiptBase64 forKey:@"receipt"]; - // [ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"transaction_id"]; - // } - // FYI: event.transactionId being historically used for deduplication + for IAP verification - // if (event.transactionId) { - // [ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"deduplication_id"]; - // } [ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"transaction_id"]; - [ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"deduplication_id"]; + [ADJPackageBuilder parameters:parameters setString:event.deduplicationId forKey:@"deduplication_id"]; [ADJPackageBuilder parameters:parameters setString:event.productId forKey:@"product_id"]; - [ADJPackageBuilder parameters:parameters setString:[event.receipt adjEncodeBase64] forKey:@"receipt"]; if ([self.trackingStatusManager canGetAttStatus]) { [ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.attStatus @@ -436,13 +407,9 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { [ADJPackageBuilder parameters:parameters setInt:self.activityState.eventCount forKey:@"event_count"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -454,17 +421,14 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ } } - if (!isInDelay) { - NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:[self.sessionParameters.callbackParameters copy] - source:[event.callbackParameters copy] - parameterName:@"Callback"]; - NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:[self.sessionParameters.partnerParameters copy] - source:[event.partnerParameters copy] - parameterName:@"Partner"]; - - [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; - [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; - } + NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:[self.globalParameters.callbackParameters copy] + source:[event.callbackParameters copy] + parameterName:@"Callback"]; + NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:[self.globalParameters.partnerParameters copy] + source:[event.partnerParameters copy] + parameterName:@"Partner"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; [self addConsentToParameters:parameters forActivityKind:ADJActivityKindEvent]; [self addIdfvIfPossibleToParameters:parameters]; @@ -476,14 +440,14 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ - (NSMutableDictionary *)getInfoParameters:(NSString *)source { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; [ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"]; @@ -499,9 +463,8 @@ - (NSMutableDictionary *)getInfoParameters:(NSString *)source { [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; [ADJPackageBuilder parameters:parameters setDictionary:self.deeplinkParameters forKey:@"params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setDate:self.purchaseTime forKey:@"purchase_time"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setString:source forKey:@"source"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -514,13 +477,8 @@ - (NSMutableDictionary *)getInfoParameters:(NSString *)source { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -546,74 +504,15 @@ - (NSMutableDictionary *)getInfoParameters:(NSString *)source { return parameters; } -- (NSMutableDictionary *)getAdRevenueParameters:(NSString *)source payload:(NSData *)payload { - NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; - [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceType forKey:@"device_type"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.environment forKey:@"environment"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"]; - [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; - [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; - [ADJPackageBuilder parameters:parameters setString:source forKey:@"source"]; - [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; - [ADJPackageBuilder parameters:parameters setData:payload forKey:@"payload"]; - - if ([self.trackingStatusManager canGetAttStatus]) { - [ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.attStatus - forKey:@"att_status"]; - } else { - [ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.trackingEnabled - forKey:@"tracking_enabled"]; - } - - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; - [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; - [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.timeSpent forKey:@"time_spent"]; - if (self.activityState.isPersisted) { - [ADJPackageBuilder parameters:parameters setString:self.activityState.dedupeToken forKey:@"primary_dedupe_token"]; - } else { - [ADJPackageBuilder parameters:parameters setString:self.activityState.dedupeToken forKey:@"secondary_dedupe_token"]; - } - } - - [self addConsentToParameters:parameters forActivityKind:ADJActivityKindAdRevenue]; - [self addIdfvIfPossibleToParameters:parameters]; - [self injectFeatureFlagsWithParameters:parameters]; - - return parameters; -} - -- (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue isInDelay:(BOOL)isInDelay { +- (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; @@ -625,7 +524,6 @@ - (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue isInDe [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -645,25 +543,17 @@ - (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue isInDe forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - - if (!isInDelay) { - NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:[self.sessionParameters.callbackParameters copy] - source:[adRevenue.callbackParameters copy] - parameterName:@"Callback"]; - NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:[self.sessionParameters.partnerParameters copy] - source:[adRevenue.partnerParameters copy] - parameterName:@"Partner"]; - - [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; - [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; - } + NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:[self.globalParameters.callbackParameters copy] + source:[adRevenue.callbackParameters copy] + parameterName:@"Callback"]; + NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:[self.globalParameters.partnerParameters copy] + source:[adRevenue.partnerParameters copy] + parameterName:@"Partner"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -685,14 +575,14 @@ - (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue isInDe - (NSMutableDictionary *)getClickParameters:(NSString *)source { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; [ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"]; @@ -708,9 +598,8 @@ - (NSMutableDictionary *)getClickParameters:(NSString *)source { [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; [ADJPackageBuilder parameters:parameters setDictionary:self.deeplinkParameters forKey:@"params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setDate:self.purchaseTime forKey:@"purchase_time"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setString:source forKey:@"source"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -723,13 +612,8 @@ - (NSMutableDictionary *)getClickParameters:(NSString *)source { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -759,11 +643,11 @@ - (NSMutableDictionary *)getAttributionParameters:(NSString *)initiatedBy { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceType forKey:@"device_type"]; @@ -774,7 +658,6 @@ - (NSMutableDictionary *)getAttributionParameters:(NSString *)initiatedBy { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -786,11 +669,8 @@ - (NSMutableDictionary *)getAttributionParameters:(NSString *)initiatedBy { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.adjustConfig.needsCost) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.needsCost forKey:@"needs_cost"]; + if (self.adjustConfig.isCostDataInAttributionEnabled) { + [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isCostDataInAttributionEnabled forKey:@"needs_cost"]; } if (self.activityState != nil) { @@ -812,11 +692,11 @@ - (NSMutableDictionary *)getGdprParameters { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceType forKey:@"device_type"]; @@ -826,7 +706,6 @@ - (NSMutableDictionary *)getGdprParameters { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -838,10 +717,6 @@ - (NSMutableDictionary *)getGdprParameters { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { if (self.activityState.isPersisted) { [ADJPackageBuilder parameters:parameters setString:self.activityState.dedupeToken forKey:@"primary_dedupe_token"]; @@ -857,82 +732,17 @@ - (NSMutableDictionary *)getGdprParameters { return parameters; } -- (NSMutableDictionary *)getDisableThirdPartySharingParameters { - NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; - [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; - [ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"]; - [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; - [ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"]; - [ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"]; - [ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceType forKey:@"device_type"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.environment forKey:@"environment"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"]; - [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; - [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setDictionary:self.deeplinkParameters forKey:@"params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; - [ADJPackageBuilder parameters:parameters setDate:self.purchaseTime forKey:@"purchase_time"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; - [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; - [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; - - if ([self.trackingStatusManager canGetAttStatus]) { - [ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.attStatus - forKey:@"att_status"]; - } else { - [ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.trackingEnabled - forKey:@"tracking_enabled"]; - } - - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; - [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; - [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.timeSpent forKey:@"time_spent"]; - if (self.activityState.isPersisted) { - [ADJPackageBuilder parameters:parameters setString:self.activityState.dedupeToken forKey:@"primary_dedupe_token"]; - } else { - [ADJPackageBuilder parameters:parameters setString:self.activityState.dedupeToken forKey:@"secondary_dedupe_token"]; - } - } - - [self addConsentToParameters:parameters forActivityKind:ADJActivityKindDisableThirdPartySharing]; - [self addIdfvIfPossibleToParameters:parameters]; - [self injectFeatureFlagsWithParameters:parameters]; - - return parameters; -} - - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySharing *)thirdPartySharing { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; [ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"]; @@ -948,9 +758,8 @@ - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySh [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; [ADJPackageBuilder parameters:parameters setDictionary:self.deeplinkParameters forKey:@"params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setDate:self.purchaseTime forKey:@"purchase_time"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -974,13 +783,8 @@ - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySh setDictionaryJson:thirdPartySharing.partnerSharingSettings forKey:@"partner_sharing_settings"]; - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -1002,14 +806,14 @@ - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySh - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; [ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"]; @@ -1025,9 +829,8 @@ - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled { [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; [ADJPackageBuilder parameters:parameters setDictionary:self.deeplinkParameters forKey:@"params"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setDate:self.purchaseTime forKey:@"purchase_time"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -1045,13 +848,8 @@ - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -1069,15 +867,15 @@ - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled { return parameters; } -- (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscriptionPackage:(ADJSubscription *)subscription { +- (NSMutableDictionary *)getSubscriptionParameters:(ADJAppStoreSubscription *)subscription { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceType forKey:@"device_type"]; @@ -1088,7 +886,6 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -1100,12 +897,8 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -1117,23 +910,18 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti } } - if (!isInDelay) { - NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:self.sessionParameters.callbackParameters - source:subscription.callbackParameters - parameterName:@"Callback"]; - NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:self.sessionParameters.partnerParameters - source:subscription.partnerParameters - parameterName:@"Partner"]; - - [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; - [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; - } + NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:self.globalParameters.callbackParameters + source:subscription.callbackParameters + parameterName:@"Callback"]; + NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:self.globalParameters.partnerParameters + source:subscription.partnerParameters + parameterName:@"Partner"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedCallbackParameters forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:mergedPartnerParameters forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setNumber:subscription.price forKey:@"revenue"]; [ADJPackageBuilder parameters:parameters setString:subscription.currency forKey:@"currency"]; [ADJPackageBuilder parameters:parameters setString:subscription.transactionId forKey:@"transaction_id"]; - [ADJPackageBuilder parameters:parameters setString:[subscription.receipt adjEncodeBase64] forKey:@"receipt"]; - [ADJPackageBuilder parameters:parameters setString:subscription.billingStore forKey:@"billing_store"]; [ADJPackageBuilder parameters:parameters setDate:subscription.transactionDate forKey:@"transaction_date"]; [ADJPackageBuilder parameters:parameters setString:subscription.salesRegion forKey:@"sales_region"]; @@ -1147,13 +935,13 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti - (NSMutableDictionary *)getPurchaseVerificationParameters { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appSecret forKey:@"app_secret"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.appToken forKey:@"app_token"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.buildNumber forKey:@"app_version"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.versionNumber forKey:@"app_version_short"]; [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"attribution_deeplink"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.bundleIdentifier forKey:@"bundle_id"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.callbackParameters copy] forKey:@"callback_params"]; + [ADJPackageBuilder parameters:parameters setDictionary:[ADJUserDefaults getControlParams] forKey:@"control_params"]; [ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"]; [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"]; [ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"]; @@ -1166,8 +954,7 @@ - (NSMutableDictionary *)getPurchaseVerificationParameters { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osName forKey:@"os_name"]; [ADJPackageBuilder parameters:parameters setString:self.packageParams.osVersion forKey:@"os_version"]; - [ADJPackageBuilder parameters:parameters setDictionary:[self.sessionParameters.partnerParameters copy] forKey:@"partner_params"]; - [ADJPackageBuilder parameters:parameters setString:self.adjustConfig.secretId forKey:@"secret_id"]; + [ADJPackageBuilder parameters:parameters setDictionary:[self.globalParameters.partnerParameters copy] forKey:@"partner_params"]; [ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"]; [ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"]; @@ -1179,13 +966,8 @@ - (NSMutableDictionary *)getPurchaseVerificationParameters { forKey:@"tracking_enabled"]; } - if (self.adjustConfig.isDeviceKnown) { - [ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.isDeviceKnown forKey:@"device_known"]; - } - if (self.activityState != nil) { - [ADJPackageBuilder parameters:parameters setDuration:self.activityState.lastInterval forKey:@"last_interval"]; - [ADJPackageBuilder parameters:parameters setString:self.activityState.deviceToken forKey:@"push_token"]; + [ADJPackageBuilder parameters:parameters setString:self.activityState.pushToken forKey:@"push_token"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.sessionCount forKey:@"session_count"]; [ADJPackageBuilder parameters:parameters setDuration:self.activityState.sessionLength forKey:@"session_length"]; [ADJPackageBuilder parameters:parameters setInt:self.activityState.subsessionCount forKey:@"subsession_count"]; @@ -1207,19 +989,19 @@ - (NSMutableDictionary *)getPurchaseVerificationParameters { - (void)addIdfvIfPossibleToParameters:(NSMutableDictionary *)parameters { id logger = [ADJAdjustFactory logger]; - if (self.adjustConfig.coppaCompliantEnabled) { + if (self.adjustConfig.isCoppaComplianceEnabled) { [logger info:@"Cannot read IDFV with COPPA enabled"]; return; } + if (self.adjustConfig.isIdfvReadingEnabled == NO) { + return; + } [ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"]; } - (void)injectFeatureFlagsWithParameters:(NSMutableDictionary *)parameters { - [ADJPackageBuilder parameters:parameters - setBool:self.adjustConfig.eventBufferingEnabled - forKey:@"event_buffering_enabled"]; [ADJPackageBuilder parameters:parameters - setBool:self.adjustConfig.sendInBackground + setBool:self.adjustConfig.isSendingInBackgroundEnabled forKey:@"send_in_background_enabled"]; if (self.internalState != nil) { [ADJPackageBuilder parameters:parameters @@ -1235,16 +1017,16 @@ - (void)injectFeatureFlagsWithParameters:(NSMutableDictionary *)parameters { forKey:@"background"]; } } - if (self.adjustConfig.coppaCompliantEnabled == YES) { + if (self.adjustConfig.isCoppaComplianceEnabled == YES) { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"ff_coppa"]; } - if (self.adjustConfig.isSKAdNetworkHandlingActive == NO) { + if (self.adjustConfig.isSkanAttributionEnabled == NO) { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"ff_skadn_disabled"]; } - if (self.adjustConfig.allowIdfaReading == NO) { + if (self.adjustConfig.isIdfaReadingEnabled == NO) { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"ff_idfa_disabled"]; } - if (self.adjustConfig.allowAdServicesInfoReading == NO) { + if (self.adjustConfig.isAdServicesEnabled == NO) { [ADJPackageBuilder parameters:parameters setBool:YES forKey:@"ff_adserv_disabled"]; } } @@ -1367,7 +1149,9 @@ + (void)addConsentDataToParameters:(NSMutableDictionary * _Nullable)parameters forActivityKind:(ADJActivityKind)activityKind withAttStatus:(NSString * _Nullable)attStatusString configuration:(ADJConfig * _Nullable)adjConfig - packageParams:(ADJPackageParams * _Nullable)packageParams { + packageParams:(ADJPackageParams * _Nullable)packageParams + activityState:(ADJActivityState *_Nullable)activityState +{ if (![ADJUtil shouldUseConsentParamsForActivityKind:activityKind andAttStatus:attStatusString]) { @@ -1375,11 +1159,11 @@ + (void)addConsentDataToParameters:(NSMutableDictionary * _Nullable)parameters } // idfa - if (!adjConfig.allowIdfaReading) { + if (!adjConfig.isIdfaReadingEnabled) { [[ADJAdjustFactory logger] info:@"Cannot read IDFA because it's forbidden by ADJConfig setting"]; return; } - if (adjConfig.coppaCompliantEnabled) { + if (adjConfig.isCoppaComplianceEnabled) { [[ADJAdjustFactory logger] info:@"Cannot read IDFA with COPPA enabled"]; return; } @@ -1387,7 +1171,7 @@ + (void)addConsentDataToParameters:(NSMutableDictionary * _Nullable)parameters __block NSString *idfa = nil; [ADJUtil launchSynchronisedWithObject:[ADJPackageBuilder class] block:^{ // read once && IDFA not cached - if (adjConfig.readDeviceInfoOnceEnabled && packageParams.idfaCached != nil) { + if (adjConfig.isDeviceIdsReadingOnceEnabled && packageParams.idfaCached != nil) { idfa = packageParams.idfaCached; } else { // read IDFA @@ -1421,10 +1205,11 @@ + (void)updateAttStatusInParameters:(nonnull NSMutableDictionary *)parameters { - (void)addConsentToParameters:(NSMutableDictionary *)parameters forActivityKind:(ADJActivityKind)activityKind { [ADJPackageBuilder addConsentDataToParameters:parameters - forActivityKind:activityKind - withAttStatus:[parameters objectForKey:@"att_status"] - configuration:self.adjustConfig - packageParams:self.packageParams]; + forActivityKind:activityKind + withAttStatus:[parameters objectForKey:@"att_status"] + configuration:self.adjustConfig + packageParams:self.packageParams + activityState:self.activityState]; } @end diff --git a/Adjust/ADJPackageHandler.h b/Adjust/Internal/ADJPackageHandler.h similarity index 84% rename from Adjust/ADJPackageHandler.h rename to Adjust/Internal/ADJPackageHandler.h index a32ea8dbe..ae0096bfc 100644 --- a/Adjust/ADJPackageHandler.h +++ b/Adjust/Internal/ADJPackageHandler.h @@ -11,7 +11,7 @@ #import "ADJPackageHandler.h" #import "ADJActivityHandler.h" #import "ADJResponseData.h" -#import "ADJSessionParameters.h" +#import "ADJGlobalParameters.h" #import "ADJRequestHandler.h" #import "ADJUrlStrategy.h" @@ -19,7 +19,6 @@ - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy; //extraPath:(NSString *)extraPath; @@ -27,7 +26,6 @@ - (void)sendFirstPackage; - (void)pauseSending; - (void)resumeSending; -- (void)updatePackagesWithSessionParams:(ADJSessionParameters *)sessionParameters; - (void)updatePackagesWithAttStatus:(int)attStatus; - (void)flush; diff --git a/Adjust/ADJPackageHandler.m b/Adjust/Internal/ADJPackageHandler.m similarity index 79% rename from Adjust/ADJPackageHandler.m rename to Adjust/Internal/ADJPackageHandler.m index 7bf6cf1a0..0c0d27922 100644 --- a/Adjust/ADJPackageHandler.m +++ b/Adjust/Internal/ADJPackageHandler.m @@ -43,7 +43,6 @@ @implementation ADJPackageHandler - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy { self = [super init]; @@ -62,7 +61,6 @@ - (id)initWithActivityHandler:(id)activityHandler [selfI initI:selfI activityHandler:activityHandler startsSending:startsSending - userAgent:userAgent urlStrategy:urlStrategy]; }]; @@ -97,7 +95,7 @@ - (void)responseCallback:(ADJResponseData *)responseData { [self.activityHandler setTrackingStateOptedOut]; return; } - if (responseData.jsonResponse == nil) { + if (responseData.jsonResponse == nil || responseData.retryInMilli != nil) { [self closeFirstPackage:responseData]; } else { [self sendNextPackage:responseData]; @@ -112,7 +110,7 @@ - (void)sendNextPackage:(ADJResponseData *)responseData { [ADJUtil launchInQueue:self.internalQueue selfInject:self block:^(ADJPackageHandler* selfI) { - [selfI sendNextI:selfI]; + [selfI sendNextI:selfI previousResponseContinueIn:responseData.continueInMilli]; }]; [self.activityHandler finishedTracking:responseData]; @@ -132,23 +130,48 @@ - (void)closeFirstPackage:(ADJResponseData *)responseData { }]; NSTimeInterval waitTime; - if (responseData.activityKind == ADJActivityKindSession && [ADJUserDefaults getInstallTracked] == NO) { - waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount backoffStrategy:self.backoffStrategyForInstallSession]; + if (responseData.retryInMilli != nil) { + waitTime = [responseData.retryInMilli intValue] / 1000.0; + + [self.logger verbose:@"Waiting for %@ seconds before retrying with retry_in", + [ADJUtil secondsNumberFormat:waitTime]]; } else { - waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount backoffStrategy:self.backoffStrategy]; + waitTime = [self retryPackageUsingBackoffWithResponse:responseData]; } - NSString *waitTimeFormatted = [ADJUtil secondsNumberFormat:waitTime]; - [self.logger verbose:@"Waiting for %@ seconds before retrying the %d time", waitTimeFormatted, self.lastPackageRetriesCount]; - self.totalWaitTime += waitTime; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(waitTime * NSEC_PER_SEC)), self.internalQueue, ^{ - [self.logger verbose:@"Package handler finished waiting"]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(waitTime * NSEC_PER_SEC)), + self.internalQueue, ^{ + [self.logger verbose:@"Package handler finished waiting to retry"]; + if (self.sendingSemaphore == nil) { + [self.logger error:@"Sending semaphore is nil"]; + return; + } dispatch_semaphore_signal(self.sendingSemaphore); responseData.sdkPackage.waitBeforeSend += waitTime; [self sendFirstPackage]; }); } +- (NSTimeInterval)retryPackageUsingBackoffWithResponse:(ADJResponseData *)responseData { + self.lastPackageRetriesCount++; + + NSTimeInterval waitTime; + if (responseData.activityKind == ADJActivityKindSession + && [ADJUserDefaults getInstallTracked] == NO) + { + waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount + backoffStrategy:self.backoffStrategyForInstallSession]; + } else { + waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount + backoffStrategy:self.backoffStrategy]; + } + + [self.logger verbose:@"Waiting for %@ seconds before retrying the %d time", + [ADJUtil secondsNumberFormat:waitTime], self.lastPackageRetriesCount]; + + return waitTime; +} + - (void)pauseSending { self.paused = YES; } @@ -157,17 +180,6 @@ - (void)resumeSending { self.paused = NO; } -- (void)updatePackagesWithSessionParams:(ADJSessionParameters *)sessionParameters { - // make copy to prevent possible Activity Handler changes of it - ADJSessionParameters * sessionParametersCopy = [sessionParameters copy]; - - [ADJUtil launchInQueue:self.internalQueue - selfInject:self - block:^(ADJPackageHandler* selfI) { - [selfI updatePackagesI:selfI sessionParameters:sessionParametersCopy]; - }]; -} - - (void)updatePackagesWithAttStatus:(int)attStatus { [ADJUtil launchInQueue:self.internalQueue selfInject:self @@ -209,7 +221,6 @@ + (void)deletePackageQueue { - (void)initI:(ADJPackageHandler *)selfI activityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy { selfI.activityHandler = activityHandler; @@ -217,7 +228,6 @@ - (void)initI:(ADJPackageHandler *)selfI selfI.requestHandler = [[ADJRequestHandler alloc] initWithResponseCallback:self urlStrategy:urlStrategy - userAgent:userAgent requestTimeout:[ADJAdjustFactory requestTimeout]]; selfI.logger = ADJAdjustFactory.logger; selfI.sendingSemaphore = dispatch_semaphore_create(1); @@ -260,7 +270,7 @@ - (void)sendFirstI:(ADJPackageHandler *)selfI ADJActivityPackage *activityPackage = [selfI.packageQueue objectAtIndex:0]; if (![activityPackage isKindOfClass:[ADJActivityPackage class]]) { [selfI.logger error:@"Failed to read activity package"]; - [selfI sendNextI:selfI]; + [selfI sendNextI:selfI previousResponseContinueIn:nil]; return; } @@ -294,7 +304,9 @@ - (void)sendFirstI:(ADJPackageHandler *)selfI sendingParameters:[sendingParameters copy]]; } -- (void)sendNextI:(ADJPackageHandler *)selfI { +- (void)sendNextI:(ADJPackageHandler *)selfI + previousResponseContinueIn:(NSNumber *)previousResponseContinueIn +{ if ([selfI.packageQueue count] > 0) { [selfI.packageQueue removeObjectAtIndex:0]; [selfI writePackageQueueS:selfI]; @@ -304,42 +316,34 @@ - (void)sendNextI:(ADJPackageHandler *)selfI { selfI.totalWaitTime = 0.0; } - dispatch_semaphore_signal(selfI.sendingSemaphore); - [selfI sendFirstI:selfI]; -} - -- (void)updatePackagesI:(ADJPackageHandler *)selfI - sessionParameters:(ADJSessionParameters *)sessionParameters { - [selfI.logger debug:@"Updating package handler queue"]; - [selfI.logger verbose:@"Session callback parameters: %@", sessionParameters.callbackParameters]; - [selfI.logger verbose:@"Session partner parameters: %@", sessionParameters.partnerParameters]; - - // create package queue copy for new state of array - NSMutableArray *packageQueueCopy = [NSMutableArray array]; - - for (ADJActivityPackage *activityPackage in selfI.packageQueue) { - // callback parameters - NSDictionary *mergedCallbackParameters = [ADJUtil mergeParameters:sessionParameters.callbackParameters - source:activityPackage.callbackParameters - parameterName:@"Callback"]; - [ADJPackageBuilder parameters:activityPackage.parameters - setDictionary:mergedCallbackParameters - forKey:@"callback_params"]; - - // partner parameters - NSDictionary *mergedPartnerParameters = [ADJUtil mergeParameters:sessionParameters.partnerParameters - source:activityPackage.partnerParameters - parameterName:@"Partner"]; - [ADJPackageBuilder parameters:activityPackage.parameters - setDictionary:mergedPartnerParameters - forKey:@"partner_params"]; - // add to copy queue - [packageQueueCopy addObject:activityPackage]; + // if previous response contained continue_in + // delay for that time + if (previousResponseContinueIn != nil) { + NSTimeInterval waitTime = [previousResponseContinueIn intValue] / 1000.0; + + [self.logger verbose: + @"Waiting for %@ seconds before continuing for next package in continue_in", + [ADJUtil secondsNumberFormat:waitTime]]; + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(waitTime * NSEC_PER_SEC)), + self.internalQueue, ^{ + [self.logger verbose:@"Package handler finished waiting to continue"]; + if (selfI.sendingSemaphore == nil) { + [self.logger error:@"Sending semaphore is nil"]; + return; + } + dispatch_semaphore_signal(selfI.sendingSemaphore); + [self sendFirstPackage]; + }); + } else { + // otherwise just signal and send next + if (selfI.sendingSemaphore == nil) { + [self.logger error:@"Sending semaphore is nil"]; + return; + } + dispatch_semaphore_signal(selfI.sendingSemaphore); + [selfI sendFirstI:selfI]; } - - // write package queue copy - selfI.packageQueue = packageQueueCopy; - [selfI writePackageQueueS:selfI]; } - (void)updatePackagesTrackingI:(ADJPackageHandler *)selfI @@ -355,7 +359,8 @@ - (void)updatePackagesTrackingI:(ADJPackageHandler *)selfI forActivityKind:activityPackage.activityKind withAttStatus:[activityPackage.parameters objectForKey:@"att_status"] configuration:selfI.activityHandler.adjustConfig - packageParams:selfI.activityHandler.packageParams]; + packageParams:selfI.activityHandler.packageParams + activityState:selfI.activityHandler.activityState]; // add to copy queue [packageQueueCopy addObject:activityPackage]; } diff --git a/Adjust/ADJPackageParams.h b/Adjust/Internal/ADJPackageParams.h similarity index 100% rename from Adjust/ADJPackageParams.h rename to Adjust/Internal/ADJPackageParams.h diff --git a/Adjust/ADJPackageParams.m b/Adjust/Internal/ADJPackageParams.m similarity index 100% rename from Adjust/ADJPackageParams.m rename to Adjust/Internal/ADJPackageParams.m diff --git a/Adjust/ADJPurchaseVerificationHandler.h b/Adjust/Internal/ADJPurchaseVerificationHandler.h similarity index 94% rename from Adjust/ADJPurchaseVerificationHandler.h rename to Adjust/Internal/ADJPurchaseVerificationHandler.h index 2e8fd4e3e..a1284abf9 100644 --- a/Adjust/ADJPurchaseVerificationHandler.h +++ b/Adjust/Internal/ADJPurchaseVerificationHandler.h @@ -18,7 +18,6 @@ NS_ASSUME_NONNULL_BEGIN - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy; - (void)pauseSending; - (void)resumeSending; diff --git a/Adjust/ADJPurchaseVerificationHandler.m b/Adjust/Internal/ADJPurchaseVerificationHandler.m similarity index 79% rename from Adjust/ADJPurchaseVerificationHandler.m rename to Adjust/Internal/ADJPurchaseVerificationHandler.m index 49ebdbfe6..461c73ce2 100644 --- a/Adjust/ADJPurchaseVerificationHandler.m +++ b/Adjust/Internal/ADJPurchaseVerificationHandler.m @@ -13,6 +13,7 @@ #import "ADJBackoffStrategy.h" #import "ADJUserDefaults.h" #import "ADJPackageBuilder.h" +#import "ADJPurchaseVerificationResult.h" static const char * const kInternalQueueName = "com.adjust.PurchaseVerificationQueue"; @@ -29,6 +30,7 @@ @interface ADJPurchaseVerificationHandler() @property (nonatomic, weak) id activityHandler; @property (nonatomic, assign) NSInteger lastPackageRetriesCount; +@property (nonatomic, strong) NSNumber *lastPackageRetryInMilli; @end @@ -38,7 +40,6 @@ @implementation ADJPurchaseVerificationHandler - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy { self = [super init]; if (self == nil) { @@ -51,7 +52,6 @@ - (id)initWithActivityHandler:(id)activityHandler self.requestHandler = [[ADJRequestHandler alloc] initWithResponseCallback:self urlStrategy:urlStrategy - userAgent:userAgent requestTimeout:[ADJAdjustFactory requestTimeout]]; [ADJUtil launchInQueue:self.internalQueue @@ -160,17 +160,39 @@ - (void)sendNextPurchaseVerificationPackageI:(ADJPurchaseVerificationHandler *)s [selfI sendNextPurchaseVerificationPackage]; }; - if (selfI.lastPackageRetriesCount <= 0) { + NSNumber *waitTimeSecondsDouble = [selfI waitTimeTimeInterval]; + + if (waitTimeSecondsDouble != nil) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, + (int64_t)(waitTimeSecondsDouble.doubleValue * NSEC_PER_SEC)), + self.internalQueue, work); + } else { work(); - return; + } +} +- (NSNumber *)waitTimeTimeInterval { + if (self.lastPackageRetriesCount > 0) { + NSTimeInterval waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount + backoffStrategy:self.backoffStrategy]; + + [self.logger verbose: + @"Waiting for %@ seconds before retrying purchase_verification for the %d time", + [ADJUtil secondsNumberFormat:waitTime], self.lastPackageRetriesCount]; + + return @(waitTime); } - NSTimeInterval waitTime = [ADJUtil waitingTime:selfI.lastPackageRetriesCount backoffStrategy:self.backoffStrategy]; - NSString *waitTimeFormatted = [ADJUtil secondsNumberFormat:waitTime]; - [self.logger verbose:@"Waiting for %@ seconds before retrying purchase_verification for the %d time", - waitTimeFormatted, - selfI.lastPackageRetriesCount]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(waitTime * NSEC_PER_SEC)), self.internalQueue, work); + if (self.lastPackageRetryInMilli != nil) { + NSTimeInterval waitTime = [self.lastPackageRetryInMilli intValue] / 1000.0; + + [self.logger verbose: + @"Waiting for %@ seconds before retrying purchase_verification with retry_in", + [ADJUtil secondsNumberFormat:waitTime]]; + + return @(waitTime); + } + + return nil; } - (void)updatePackagesTrackingI:(ADJPurchaseVerificationHandler *)selfI @@ -185,20 +207,13 @@ - (void)updatePackagesTrackingI:(ADJPurchaseVerificationHandler *)selfI forActivityKind:activityPackage.activityKind withAttStatus:[activityPackage.parameters objectForKey:@"att_status"] configuration:selfI.activityHandler.adjustConfig - packageParams:selfI.activityHandler.packageParams]; + packageParams:selfI.activityHandler.packageParams + activityState:selfI.activityHandler.activityState]; } } - (void)responseCallback:(ADJResponseData *)responseData { - if (responseData.jsonResponse) { - [self.logger debug: - @"Got purchase_verification JSON response with message: %@", responseData.message]; - ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; - verificationResult.verificationStatus = responseData.jsonResponse[@"verification_status"]; - verificationResult.code = [(NSNumber *)responseData.jsonResponse[@"code"] intValue]; - verificationResult.message = responseData.jsonResponse[@"message"]; - responseData.purchaseVerificationPackage.purchaseVerificationCallback(verificationResult); - } else { + if (!responseData.jsonResponse) { [self.logger error: @"Could not get purchase_verification JSON response with message: %@", responseData.message]; ADJPurchaseVerificationResult *verificationResult = [[ADJPurchaseVerificationResult alloc] init]; @@ -211,17 +226,37 @@ - (void)responseCallback:(ADJResponseData *)responseData { // If yes, disable SDK and flush any potentially stored packages that happened afterwards. if (responseData.trackingState == ADJTrackingStateOptedOut) { self.lastPackageRetriesCount = 0; + self.lastPackageRetryInMilli = nil; [self.activityHandler setTrackingStateOptedOut]; return; } - if (responseData.jsonResponse == nil) { - self.lastPackageRetriesCount++; - [self.logger error:@"Retrying purchase_verification package for the %d time", self.lastPackageRetriesCount]; + + if ([self retryPackageWithResponse:responseData]) { [self sendPurchaseVerificationPackage:responseData.purchaseVerificationPackage]; return; } + self.lastPackageRetriesCount = 0; + self.lastPackageRetryInMilli = nil; [self.activityHandler finishedTracking:responseData]; } +- (BOOL)retryPackageWithResponse:(ADJResponseData *)responseData { + if (responseData.jsonResponse == nil) { + self.lastPackageRetriesCount++; + [self.logger error:@"Retrying purchase_verification package for the %d time", + self.lastPackageRetriesCount]; + return YES; + } + + if (responseData.retryInMilli != nil) { + self.lastPackageRetryInMilli = responseData.retryInMilli; + [self.logger error:@"Retrying purchase_verification package with retry in %d ms", + [responseData.retryInMilli intValue]]; + return YES; + } + + return NO; +} + @end diff --git a/Adjust/ADJRequestHandler.h b/Adjust/Internal/ADJRequestHandler.h similarity index 94% rename from Adjust/ADJRequestHandler.h rename to Adjust/Internal/ADJRequestHandler.h index 75cc2ba88..33fad77f2 100644 --- a/Adjust/ADJRequestHandler.h +++ b/Adjust/Internal/ADJRequestHandler.h @@ -18,7 +18,6 @@ - (id)initWithResponseCallback:(id)responseCallback urlStrategy:(ADJUrlStrategy *)urlStrategy - userAgent:(NSString *)userAgent requestTimeout:(double)requestTimeout; - (void)sendPackageByPOST:(ADJActivityPackage *)activityPackage diff --git a/Adjust/ADJRequestHandler.m b/Adjust/Internal/ADJRequestHandler.m similarity index 57% rename from Adjust/ADJRequestHandler.m rename to Adjust/Internal/ADJRequestHandler.m index 3834080ed..52393b789 100644 --- a/Adjust/ADJRequestHandler.m +++ b/Adjust/Internal/ADJRequestHandler.m @@ -12,7 +12,8 @@ #import "ADJAdjustFactory.h" #import "ADJPackageBuilder.h" #import "ADJActivityPackage.h" -#import "NSString+ADJAdditions.h" +#import "ADJAdditions.h" +#import "ADJUserDefaults.h" #include static NSString * const ADJMethodGET = @"MethodGET"; @@ -21,7 +22,6 @@ @interface ADJRequestHandler() @property (nonatomic, strong) ADJUrlStrategy *urlStrategy; -@property (nonatomic, copy) NSString *userAgent; @property (nonatomic, assign) double requestTimeout; @property (nonatomic, weak) id responseCallback; @@ -39,7 +39,6 @@ @implementation ADJRequestHandler - (id)initWithResponseCallback:(id)responseCallback urlStrategy:(ADJUrlStrategy *)urlStrategy - userAgent:(NSString *)userAgent requestTimeout:(double)requestTimeout { self = [super init]; @@ -48,7 +47,6 @@ - (id)initWithResponseCallback:(id)responseCallback return nil; } self.urlStrategy = urlStrategy; - self.userAgent = userAgent; self.requestTimeout = requestTimeout; self.responseCallback = responseCallback; @@ -61,7 +59,6 @@ - (id)initWithResponseCallback:(id)responseCallback [self.exceptionKeys addObject:@"headers_id"]; [self.exceptionKeys addObject:@"native_version"]; [self.exceptionKeys addObject:@"algorithm"]; - [self.exceptionKeys addObject:@"app_secret"]; [self.exceptionKeys addObject:@"adj_signing_id"]; return self; @@ -84,25 +81,34 @@ - (void)sendPackageByPOST:(ADJActivityPackage *)activityPackage sendingParams:sendingParameters responseData:responseData]; - NSMutableDictionary *parametersCopy = [[NSMutableDictionary alloc] + NSMutableDictionary *mergedParameters = [[NSMutableDictionary alloc] initWithDictionary:parameters]; - [parametersCopy addEntriesFromDictionary:responseData.sendingParameters]; + [mergedParameters addEntriesFromDictionary:responseData.sendingParameters]; - NSString * appSecret = [parametersCopy objectForKey:@"app_secret"]; - [parametersCopy removeObjectForKey:@"app_secret"]; + NSMutableDictionary *_Nonnull outputParams = + [self signWithSigPluginWithMergedParameters:mergedParameters + activityKind:activityKind + clientSdk:clientSdk + urlHostString:urlHostString]; - [self signWithSigV2PluginWithParams:parametersCopy - activityKind:activityKind - clientSdk:clientSdk]; - NSString * authorizationHeader = [self buildAuthorizationHeader:parametersCopy - activityKind:activityKind - appSecret:appSecret]; + NSString *_Nullable authorizationHeader = nil; + + if (outputParams.count > 0) { + authorizationHeader = [outputParams objectForKey:@"authorization"]; + [outputParams removeObjectForKey:@"authorization"]; + + if ([outputParams objectForKey:@"endpoint"] != nil) { + urlHostString = [outputParams objectForKey:@"endpoint"]; + } + [outputParams removeObjectForKey:@"endpoint"]; + + mergedParameters = outputParams; + } NSMutableURLRequest *urlRequest = [self requestForPostPackage:path clientSdk:clientSdk - parameters:parameters - urlHostString:urlHostString - sendingParameters:responseData.sendingParameters]; + mergedParameters:mergedParameters + urlHostString:urlHostString]; [self sendRequest:urlRequest authorizationHeader:authorizationHeader @@ -126,25 +132,34 @@ - (void)sendPackageByGET:(ADJActivityPackage *)activityPackage sendingParams:sendingParameters responseData:responseData]; - NSMutableDictionary *parametersCopy = [[NSMutableDictionary alloc] + NSMutableDictionary *mergedParameters = [[NSMutableDictionary alloc] initWithDictionary:parameters]; - [parametersCopy addEntriesFromDictionary:responseData.sendingParameters]; + [mergedParameters addEntriesFromDictionary:responseData.sendingParameters]; + + NSMutableDictionary *_Nonnull outputParams = + [self signWithSigPluginWithMergedParameters:mergedParameters + activityKind:activityKind + clientSdk:clientSdk + urlHostString:urlHostString]; - NSString *appSecret = [parametersCopy objectForKey:@"app_secret"]; - [parametersCopy removeObjectForKey:@"app_secret"]; + NSString *_Nullable authorizationHeader = nil; - [self signWithSigV2PluginWithParams:parametersCopy - activityKind:activityKind - clientSdk:clientSdk]; - NSString * authorizationHeader = [self buildAuthorizationHeader:parametersCopy - activityKind:activityKind - appSecret:appSecret]; + if (outputParams.count > 0) { + authorizationHeader = [outputParams objectForKey:@"authorization"]; + [outputParams removeObjectForKey:@"authorization"]; + + if ([outputParams objectForKey:@"endpoint"] != nil) { + urlHostString = [outputParams objectForKey:@"endpoint"]; + } + [outputParams removeObjectForKey:@"endpoint"]; + + mergedParameters = outputParams; + } NSMutableURLRequest *urlRequest = [self requestForGetPackage:path clientSdk:clientSdk - parameters:parameters - urlHostString:urlHostString - sendingParameters:responseData.sendingParameters]; + mergedParameters:mergedParameters + urlHostString:urlHostString]; [self sendRequest:urlRequest authorizationHeader:authorizationHeader @@ -194,9 +209,6 @@ - (void)sendRequest:(NSMutableURLRequest *)request [ADJAdjustFactory.logger debug:@"Authorization header content: %@", authorizationHeader]; [request setValue:authorizationHeader forHTTPHeaderField:@"Authorization"]; } - if (self.userAgent != nil) { - [request setValue:self.userAgent forHTTPHeaderField:@"User-Agent"]; - } Class NSURLSessionClass = NSClassFromString(@"NSURLSession"); if (NSURLSessionClass != nil) { @@ -354,8 +366,10 @@ - (void)handleResponseWithData:(NSData *)data return; } - NSString *responseString = [[[NSString alloc] - initWithData:data encoding:NSUTF8StringEncoding] adjTrim]; + // NSString *responseString = [[[NSString alloc] + // initWithData:data encoding:NSUTF8StringEncoding] adjTrim]; + NSString *responseString = [ADJAdditions adjTrim:[[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]]; NSInteger statusCode = urlResponse.statusCode; [self.logger verbose:@"Response: %@", responseString]; @@ -371,8 +385,15 @@ - (void)handleResponseWithData:(NSData *)data NSString *messageResponse = [responseData.jsonResponse objectForKey:@"message"]; responseData.message = messageResponse; - responseData.timeStamp = [responseData.jsonResponse objectForKey:@"timestamp"]; + responseData.timestamp = [responseData.jsonResponse objectForKey:@"timestamp"]; responseData.adid = [responseData.jsonResponse objectForKey:@"adid"]; + responseData.continueInMilli = [responseData.jsonResponse objectForKey:@"continue_in"]; + responseData.retryInMilli = [responseData.jsonResponse objectForKey:@"retry_in"]; + + NSDictionary *controlParams = [responseData.jsonResponse objectForKey:@"control_params"]; + if (controlParams != nil) { + [ADJUserDefaults saveControlParams:controlParams]; + } NSString *trackingState = [responseData.jsonResponse objectForKey:@"tracking_state"]; if (trackingState != nil) { @@ -389,10 +410,8 @@ - (void)handleResponseWithData:(NSData *)data - (NSMutableURLRequest *) requestForPostPackage:(NSString *)path clientSdk:(NSString *)clientSdk - parameters:(NSDictionary *)parameters + mergedParameters:(NSDictionary *)mergedParameters urlHostString:(NSString *)urlHostString - sendingParameters: - (NSDictionary *)sendingParameters { NSString *urlString = [NSString stringWithFormat:@"%@%@%@", urlHostString, self.urlStrategy.extraPath, path]; @@ -406,16 +425,13 @@ - (void)handleResponseWithData:(NSData *)data request.HTTPMethod = @"POST"; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setValue:clientSdk forHTTPHeaderField:@"Client-Sdk"]; + // in case of beta release, specify build version here + // [request setValue:@"2" forHTTPHeaderField:@"Beta-Version"]; - NSUInteger sendingParametersCount = sendingParameters? sendingParameters.count : 0; NSMutableArray *kvParameters = - [NSMutableArray arrayWithCapacity: - parameters.count + sendingParametersCount]; + [NSMutableArray arrayWithCapacity:mergedParameters.count]; - [self injectParameters:parameters - kvArray:kvParameters]; - [self injectParameters:sendingParameters - kvArray:kvParameters]; + [self injectParameters:mergedParameters kvArray:kvParameters]; NSString *bodyString = [kvParameters componentsJoinedByString:@"&"]; NSData *body = [NSData dataWithBytes:bodyString.UTF8String length:bodyString.length]; @@ -426,18 +442,13 @@ - (void)handleResponseWithData:(NSData *)data - (NSMutableURLRequest *) requestForGetPackage:(NSString *)path clientSdk:(NSString *)clientSdk - parameters:(NSDictionary *)parameters + mergedParameters:(NSDictionary *)mergedParameters urlHostString:(NSString *)urlHostString - sendingParameters:(NSDictionary *)sendingParameters { - NSUInteger sendingParametersCount = sendingParameters? sendingParameters.count : 0; NSMutableArray *kvParameters = - [NSMutableArray arrayWithCapacity: - parameters.count + sendingParametersCount]; + [NSMutableArray arrayWithCapacity:mergedParameters.count]; - [self injectParameters:parameters - kvArray:kvParameters]; - [self injectParameters:sendingParameters + [self injectParameters:mergedParameters kvArray:kvParameters]; NSString *queryStringParameters = [kvParameters componentsJoinedByString:@"&"]; @@ -457,6 +468,8 @@ - (void)handleResponseWithData:(NSData *)data request.timeoutInterval = self.requestTimeout; request.HTTPMethod = @"GET"; [request setValue:clientSdk forHTTPHeaderField:@"Client-Sdk"]; + // in case of beta release, specify build version here + // [request setValue:@"2" forHTTPHeaderField:@"Beta-Version"]; return request; } @@ -473,193 +486,15 @@ - (void)handleResponseWithData:(NSData *)data continue; } NSString *value = [parameters objectForKey:key]; - NSString *escapedValue = [value adjUrlEncode]; - NSString *escapedKey = [key adjUrlEncode]; + // NSString *escapedValue = [value adjUrlEncode]; + NSString *escapedValue = [ADJAdditions adjUrlEncode:value]; + // NSString *escapedKey = [key adjUrlEncode]; + NSString *escapedKey = [ADJAdditions adjUrlEncode:key]; NSString *pair = [NSString stringWithFormat:@"%@=%@", escapedKey, escapedValue]; [kvArray addObject:pair]; } } -#pragma mark - Authorization Header -- (NSString *)buildAuthorizationHeader:(NSDictionary *)parameters - activityKind:(ADJActivityKind)activityKind - appSecret:(NSString *)appSecret -{ - NSString *adjSigningId = [parameters objectForKey:@"adj_signing_id"]; - NSString *signature = [parameters objectForKey:@"signature"]; - NSString *headersId = [parameters objectForKey:@"headers_id"]; - NSString *nativeVersion = [parameters objectForKey:@"native_version"]; - NSString *algorithm = [parameters objectForKey:@"algorithm"]; - NSString *authorizationHeaderWithAdjSigningId = [self buildAuthorizationHeaderV2:signature - adjSigningId:adjSigningId - headersId:headersId - nativeVersion:nativeVersion - algorithm:algorithm]; - if (authorizationHeaderWithAdjSigningId != nil) { - return authorizationHeaderWithAdjSigningId; - } - - NSString *secretId = [parameters objectForKey:@"secret_id"]; - NSString *authorizationHeaderWithSecretId = [self buildAuthorizationHeaderV2:signature - secretId:secretId - headersId:headersId - nativeVersion:nativeVersion - algorithm:algorithm]; - if (authorizationHeaderWithSecretId != nil) { - return authorizationHeaderWithSecretId; - } - - return [self buildAuthorizationHeaderV1:appSecret - secretId:secretId - parameters:parameters - activityKind:activityKind]; -} - -- (NSString *)buildAuthorizationHeaderV2:(NSString *)signature - adjSigningId:(NSString *)adjSigningId - headersId:(NSString *)headersId - nativeVersion:(NSString *)nativeVersion - algorithm:(NSString *)algorithm -{ - if (adjSigningId == nil || signature == nil || headersId == nil) { - return nil; - } - - NSString * signatureHeader = [NSString stringWithFormat:@"signature=\"%@\"", signature]; - NSString * adjSigningIdHeader = [NSString stringWithFormat:@"adj_signing_id=\"%@\"", adjSigningId]; - NSString * idHeader = [NSString stringWithFormat:@"headers_id=\"%@\"", headersId]; - NSString * algorithmHeader = [NSString stringWithFormat:@"algorithm=\"%@\"", algorithm != nil ? algorithm : @"adj1"]; - - NSString * authorizationHeader = [NSString stringWithFormat:@"Signature %@,%@,%@,%@", - signatureHeader, adjSigningIdHeader, algorithmHeader, idHeader]; - - if (nativeVersion == nil) { - return [authorizationHeader stringByAppendingFormat:@",native_version=\"\""]; - } - return [authorizationHeader stringByAppendingFormat:@",native_version=\"%@\"", nativeVersion]; -} - - -- (NSString *)buildAuthorizationHeaderV2:(NSString *)signature - secretId:(NSString *)secretId - headersId:(NSString *)headersId - nativeVersion:(NSString *)nativeVersion - algorithm:(NSString *)algorithm -{ - if (secretId == nil || signature == nil || headersId == nil) { - return nil; - } - - NSString * signatureHeader = [NSString stringWithFormat:@"signature=\"%@\"", signature]; - NSString * secretIdHeader = [NSString stringWithFormat:@"secret_id=\"%@\"", secretId]; - NSString * idHeader = [NSString stringWithFormat:@"headers_id=\"%@\"", headersId]; - NSString * algorithmHeader = [NSString stringWithFormat:@"algorithm=\"%@\"", algorithm != nil ? algorithm : @"adj1"]; - - NSString * authorizationHeader = [NSString stringWithFormat:@"Signature %@,%@,%@,%@", - signatureHeader, secretIdHeader, algorithmHeader, idHeader]; - - if (nativeVersion == nil) { - return [authorizationHeader stringByAppendingFormat:@",native_version=\"\""]; - } - return [authorizationHeader stringByAppendingFormat:@",native_version=\"%@\"", nativeVersion]; -} - -- (NSString *)buildAuthorizationHeaderV1:(NSString *)appSecret - secretId:(NSString *)secretId - parameters:(NSDictionary *)parameters - activityKind:(ADJActivityKind)activityKind -{ - if (appSecret == nil) { - return nil; - } - - NSString *activityKindS = [ADJActivityKindUtil activityKindToString:activityKind]; - NSDictionary *signatureParameters = [self buildSignatureParameters:parameters - appSecret:appSecret - activityKindS:activityKindS]; - NSMutableString *fields = [[NSMutableString alloc] initWithCapacity:5]; - NSMutableString *clearSignature = [[NSMutableString alloc] initWithCapacity:5]; - - // signature part of header - for (NSDictionary *key in signatureParameters) { - [fields appendFormat:@"%@ ", key]; - NSString *value = [signatureParameters objectForKey:key]; - [clearSignature appendString:value]; - } - - NSString *secretIdHeader = [NSString stringWithFormat:@"secret_id=\"%@\"", secretId]; - // algorithm part of header - NSString *algorithm = @"sha256"; - NSString *signature = [clearSignature adjSha256]; - NSString *signatureHeader = [NSString stringWithFormat:@"signature=\"%@\"", signature]; - NSString *algorithmHeader = [NSString stringWithFormat:@"algorithm=\"%@\"", algorithm]; - // fields part of header - // Remove last empty space. - if (fields.length > 0) { - [fields deleteCharactersInRange:NSMakeRange(fields.length - 1, 1)]; - } - - NSString *fieldsHeader = [NSString stringWithFormat:@"headers=\"%@\"", fields]; - // putting it all together - NSString *authorizationHeader = [NSString stringWithFormat:@"Signature %@,%@,%@,%@", - secretIdHeader, - signatureHeader, - algorithmHeader, - fieldsHeader]; - return authorizationHeader; -} - -- (NSDictionary *)buildSignatureParameters:(NSDictionary *)parameters - appSecret:(NSString *)appSecret - activityKindS:(NSString *)activityKindS { - NSString *appSecretName = @"app_secret"; - NSString *sourceName = @"source"; - NSString *payloadName = @"payload"; - NSString *activityKindName = @"activity_kind"; - NSString *activityKindValue = activityKindS; - NSString *createdAtName = @"created_at"; - NSString *createdAtValue = [parameters objectForKey:createdAtName]; - NSString *deviceIdentifierName = [self getValidIdentifier:parameters]; - NSString *deviceIdentifierValue = [parameters objectForKey:deviceIdentifierName]; - NSMutableDictionary *signatureParameters = [[NSMutableDictionary alloc] initWithCapacity:6]; - - [self checkAndAddEntry:signatureParameters key:appSecretName value:appSecret]; - [self checkAndAddEntry:signatureParameters key:createdAtName value:createdAtValue]; - [self checkAndAddEntry:signatureParameters key:activityKindName value:activityKindValue]; - [self checkAndAddEntry:signatureParameters key:deviceIdentifierName value:deviceIdentifierValue]; - [self checkAndAddEntry:signatureParameters key:sourceName value:parameters[sourceName]]; - [self checkAndAddEntry:signatureParameters key:payloadName value:parameters[payloadName]]; - - return signatureParameters; -} - -- (void)checkAndAddEntry:(NSMutableDictionary *)parameters - key:(NSString *)key - value:(NSString *)value { - if (key == nil) { - return; - } - - if (value == nil) { - return; - } - - [parameters setObject:value forKey:key]; -} - -- (NSString *)getValidIdentifier:(NSDictionary *)parameters { - NSString *idfaName = @"idfa"; - NSString *randomTokenName = @"random_token"; - - if ([parameters objectForKey:idfaName] != nil) { - return idfaName; - } - if ([parameters objectForKey:randomTokenName] != nil) { - return randomTokenName; - } - return nil; -} - #pragma mark - JSON - (void)saveJsonResponse:(NSData *)jsonData responseData:(ADJResponseData *)responseData { NSError *error = nil; @@ -699,37 +534,49 @@ - (NSDictionary *)buildJsonDict:(NSData *)jsonData return jsonDict; } -- (void)signWithSigV2PluginWithParams:(NSMutableDictionary *)params - activityKind:(ADJActivityKind)activityKind - clientSdk:(NSString *)clientSdk +- (nonnull NSMutableDictionary *) + signWithSigPluginWithMergedParameters: + (nonnull NSDictionary *)mergedParameters + activityKind:(ADJActivityKind)activityKind + clientSdk:(nonnull NSString *)clientSdk + urlHostString:(nonnull NSString *)urlHostString { - Class signerClass = NSClassFromString(@"ADJSigner"); + NSMutableDictionary *_Nonnull outputParams = + [NSMutableDictionary dictionary]; + + _Nullable Class signerClass = NSClassFromString(@"ADJSigner"); if (signerClass == nil) { - return; + return outputParams; } - SEL signSEL = NSSelectorFromString(@"sign:withActivityKind:withSdkVersion:"); + _Nonnull SEL signSEL = NSSelectorFromString(@"sign:withExtraParams:withOutputParams:"); if (![signerClass respondsToSelector:signSEL]) { - return; + return outputParams; } - const char *activityKindChar = [[ADJActivityKindUtil activityKindToString:activityKind] UTF8String]; - const char *sdkVersionChar = [clientSdk UTF8String]; + NSMutableDictionary *_Nonnull extraParams = + [NSMutableDictionary dictionary]; + + [extraParams setObject:clientSdk forKey:@"client_sdk"]; + + [extraParams setObject:[ADJActivityKindUtil activityKindToString:activityKind] + forKey:@"activity_kind"]; - // Stack allocated strings to ensure their lifetime stays until the next iteration - static char packageActivityKind[64], sdkVersion[64]; - strncpy(packageActivityKind, activityKindChar, strlen(activityKindChar) + 1); - strncpy(sdkVersion, sdkVersionChar, strlen(sdkVersionChar) + 1); + [extraParams setObject:urlHostString forKey:@"endpoint"]; - // NSInvocation setArgument requires lvalue references with exact matching types to the executed function signature. - // With this usage we ensure that the lifetime of the object remains until the next iteration, as it points to the - // stack allocated string where we copied the buffer. - const char *lvalActivityKind = packageActivityKind; - const char *lvalSdkVersion = sdkVersion; + NSDictionary *_Nullable controlParams = + [ADJUserDefaults getControlParams]; + if (controlParams != nil) { + for (NSString *_Nonnull controlParamsKey in controlParams) { + NSString *_Nonnull controlParamsValue = [controlParams objectForKey:controlParamsKey]; + + [extraParams setObject:controlParamsValue forKey:controlParamsKey]; + } + } /* - [ADJSigner sign:parameters - withActivityKind:activityKindChar - withSdkVersion:sdkVersionChar]; + [ADJSigner sign:packageParams + withExtraParams:extraParams + withOutputParams:outputParams]; */ NSMethodSignature *signMethodSignature = [signerClass methodSignatureForSelector:signSEL]; @@ -737,33 +584,13 @@ - (void)signWithSigV2PluginWithParams:(NSMutableDictionary *)params [signInvocation setSelector:signSEL]; [signInvocation setTarget:signerClass]; - [signInvocation setArgument:¶ms atIndex:2]; - [signInvocation setArgument:&lvalActivityKind atIndex:3]; - [signInvocation setArgument:&lvalSdkVersion atIndex:4]; + [signInvocation setArgument:&mergedParameters atIndex:2]; + [signInvocation setArgument:&extraParams atIndex:3]; + [signInvocation setArgument:&outputParams atIndex:4]; [signInvocation invoke]; - SEL getVersionSEL = NSSelectorFromString(@"getVersion"); - if (![signerClass respondsToSelector:getVersionSEL]) { - return; - } - /* - NSString *signerVersion = [ADJSigner getVersion]; - */ - IMP getVersionIMP = [signerClass methodForSelector:getVersionSEL]; - if (!getVersionIMP) { - return; - } - id (*getVersionFunc)(id, SEL) = (void *)getVersionIMP; - id signerVersion = getVersionFunc(signerClass, getVersionSEL); - if (![signerVersion isKindOfClass:[NSString class]]) { - return; - } - - NSString *signerVersionString = (NSString *)signerVersion; - [ADJPackageBuilder parameters:params - setString:signerVersionString - forKey:@"native_version"]; + return outputParams; } @end diff --git a/Adjust/ADJResponseData.h b/Adjust/Internal/ADJResponseData.h similarity index 92% rename from Adjust/ADJResponseData.h rename to Adjust/Internal/ADJResponseData.h index 473c0ad19..379af1237 100644 --- a/Adjust/ADJResponseData.h +++ b/Adjust/Internal/ADJResponseData.h @@ -25,12 +25,16 @@ typedef NS_ENUM(int, ADJTrackingState) { @property (nonatomic, copy) NSString *message; -@property (nonatomic, copy) NSString *timeStamp; +@property (nonatomic, copy) NSString *timestamp; @property (nonatomic, copy) NSString *adid; @property (nonatomic, copy) NSNumber *errorCode; +@property (nonatomic, copy) NSNumber *continueInMilli; + +@property (nonatomic, copy) NSNumber *retryInMilli; + @property (nonatomic, assign) BOOL success; @property (nonatomic, assign) BOOL willRetry; diff --git a/Adjust/ADJResponseData.m b/Adjust/Internal/ADJResponseData.m similarity index 86% rename from Adjust/ADJResponseData.m rename to Adjust/Internal/ADJResponseData.m index 1d7e46c0a..abdc7fdb2 100644 --- a/Adjust/ADJResponseData.m +++ b/Adjust/Internal/ADJResponseData.m @@ -73,7 +73,7 @@ + (id)buildResponseData:(ADJActivityPackage *)activityPackage { - (NSString *)description { return [NSString stringWithFormat:@"message:%@ timestamp:%@ adid:%@ success:%d willRetry:%d attribution:%@ trackingState:%d, json:%@", - self.message, self.timeStamp, self.adid, self.success, self.willRetry, self.attribution, self.trackingState, self.jsonResponse]; + self.message, self.timestamp, self.adid, self.success, self.willRetry, self.attribution, self.trackingState, self.jsonResponse]; } #pragma mark - NSCopying @@ -83,8 +83,10 @@ - (id)copyWithZone:(NSZone *)zone { if (copy) { copy.message = [self.message copyWithZone:zone]; - copy.timeStamp = [self.timeStamp copyWithZone:zone]; + copy.timestamp = [self.timestamp copyWithZone:zone]; copy.adid = [self.adid copyWithZone:zone]; + copy.continueInMilli = [self.continueInMilli copyWithZone:zone]; + copy.retryInMilli = [self.retryInMilli copyWithZone:zone]; copy.willRetry = self.willRetry; copy.trackingState = self.trackingState; copy.jsonResponse = [self.jsonResponse copyWithZone:zone]; @@ -100,10 +102,10 @@ - (id)copyWithZone:(NSZone *)zone { @implementation ADJSessionResponseData - (ADJSessionSuccess *)successResponseData { - ADJSessionSuccess *successResponseData = [ADJSessionSuccess sessionSuccessResponseData]; + ADJSessionSuccess *successResponseData = [[ADJSessionSuccess alloc] init]; successResponseData.message = self.message; - successResponseData.timeStamp = self.timeStamp; + successResponseData.timestamp = self.timestamp; successResponseData.adid = self.adid; successResponseData.jsonResponse = self.jsonResponse; @@ -111,10 +113,10 @@ - (ADJSessionSuccess *)successResponseData { } - (ADJSessionFailure *)failureResponseData { - ADJSessionFailure *failureResponseData = [ADJSessionFailure sessionFailureResponseData]; + ADJSessionFailure *failureResponseData = [[ADJSessionFailure alloc] init]; failureResponseData.message = self.message; - failureResponseData.timeStamp = self.timeStamp; + failureResponseData.timestamp = self.timestamp; failureResponseData.adid = self.adid; failureResponseData.willRetry = self.willRetry; failureResponseData.jsonResponse = self.jsonResponse; @@ -155,10 +157,10 @@ - (id)initWithEventToken:(NSString *)eventToken } - (ADJEventSuccess *)successResponseData { - ADJEventSuccess *successResponseData = [ADJEventSuccess eventSuccessResponseData]; + ADJEventSuccess *successResponseData = [[ADJEventSuccess alloc] init]; successResponseData.message = self.message; - successResponseData.timeStamp = self.timeStamp; + successResponseData.timestamp = self.timestamp; successResponseData.adid = self.adid; successResponseData.eventToken = self.eventToken; successResponseData.callbackId = self.callbackId; @@ -168,10 +170,10 @@ - (ADJEventSuccess *)successResponseData { } - (ADJEventFailure *)failureResponseData { - ADJEventFailure *failureResponseData = [ADJEventFailure eventFailureResponseData]; + ADJEventFailure *failureResponseData = [[ADJEventFailure alloc] init]; failureResponseData.message = self.message; - failureResponseData.timeStamp = self.timeStamp; + failureResponseData.timestamp = self.timestamp; failureResponseData.adid = self.adid; failureResponseData.eventToken = self.eventToken; failureResponseData.callbackId = self.callbackId; @@ -183,7 +185,7 @@ - (ADJEventFailure *)failureResponseData { - (NSString *)description { return [NSString stringWithFormat:@"message:%@ timestamp:%@ adid:%@ eventToken:%@ success:%d willRetry:%d attribution:%@ json:%@", - self.message, self.timeStamp, self.adid, self.eventToken, self.success, self.willRetry, self.attribution, self.jsonResponse]; + self.message, self.timestamp, self.adid, self.eventToken, self.success, self.willRetry, self.attribution, self.jsonResponse]; } - (id)copyWithZone:(NSZone *)zone { @@ -208,7 +210,7 @@ - (id)copyWithZone:(NSZone *)zone { - (NSString *)description { return [NSString stringWithFormat:@"message:%@ timestamp:%@ adid:%@ success:%d willRetry:%d attribution:%@ deeplink:%@ json:%@", - self.message, self.timeStamp, self.adid, self.success, self.willRetry, self.attribution, self.deeplink, self.jsonResponse]; + self.message, self.timestamp, self.adid, self.success, self.willRetry, self.attribution, self.deeplink, self.jsonResponse]; } @end diff --git a/Adjust/Internal/ADJSKAdNetwork.h b/Adjust/Internal/ADJSKAdNetwork.h new file mode 100644 index 000000000..cdd7b57a0 --- /dev/null +++ b/Adjust/Internal/ADJSKAdNetwork.h @@ -0,0 +1,25 @@ +// +// ADJSKAdNetwork.h +// Adjust +// +// Created by Uglješa Erceg (@uerceg) on 27th October 2022. +// Copyright © 2022-Present Adjust GmbH. All rights reserved. +// + +#import + +@interface ADJSKAdNetwork : NSObject + ++ (nullable instancetype)getInstance; + +- (void)registerWithConversionValue:(NSInteger)conversionValue + coarseValue:(nonnull NSString *)coarseValue + lockWindow:(nonnull NSNumber *)lockWindow + withCompletionHandler:(void (^_Nonnull)(NSError *_Nullable error))completion; + +- (void)updateConversionValue:(NSInteger)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + withCompletionHandler:(void (^_Nullable)(NSError *_Nullable error))completion; + +@end diff --git a/Adjust/ADJSKAdNetwork.m b/Adjust/Internal/ADJSKAdNetwork.m similarity index 85% rename from Adjust/ADJSKAdNetwork.m rename to Adjust/Internal/ADJSKAdNetwork.m index bf312778d..d1be1093c 100644 --- a/Adjust/ADJSKAdNetwork.m +++ b/Adjust/Internal/ADJSKAdNetwork.m @@ -81,7 +81,7 @@ - (void)updateConversionValue:(NSInteger)conversionValue { } - (void)updatePostbackConversionValue:(NSInteger)conversionValue - completionHandler:(void (^)(NSError *error))completion { + withCompletionHandler:(void (^)(NSError *error))completion { Class class = NSClassFromString(@"SKAdNetwork"); SEL selector = NSSelectorFromString(@"updatePostbackConversionValue:completionHandler:"); if (@available(iOS 15.4, *)) { @@ -101,7 +101,7 @@ - (void)updatePostbackConversionValue:(NSInteger)conversionValue - (void)updatePostbackConversionValue:(NSInteger)fineValue coarseValue:(NSString *)coarseValue - completionHandler:(void (^)(NSError *error))completion { + withCompletionHandler:(void (^)(NSError *error))completion { Class class = NSClassFromString(@"SKAdNetwork"); SEL selector = NSSelectorFromString(@"updatePostbackConversionValue:coarseValue:completionHandler:"); if (@available(iOS 16.1, *)) { @@ -123,7 +123,7 @@ - (void)updatePostbackConversionValue:(NSInteger)fineValue - (void)updatePostbackConversionValue:(NSInteger)fineValue coarseValue:(NSString *)coarseValue lockWindow:(BOOL)lockWindow - completionHandler:(void (^)(NSError *error))completion { + withCompletionHandler:(void (^)(NSError *error))completion { Class class = NSClassFromString(@"SKAdNetwork"); SEL selector = NSSelectorFromString(@"updatePostbackConversionValue:coarseValue:lockWindow:completionHandler:"); if (@available(iOS 16.1, *)) { @@ -145,54 +145,52 @@ - (void)updatePostbackConversionValue:(NSInteger)fineValue #pragma mark - Adjust helper methods -- (void)adjRegisterWithCompletionHandler:(void (^)(NSError *error))callback { +- (void)registerWithConversionValue:(NSInteger)conversionValue + coarseValue:(nonnull NSString *)coarseValue + lockWindow:(nonnull NSNumber *)lockWindow + withCompletionHandler:(void (^_Nonnull)(NSError *_Nullable error))completion { if (NSClassFromString(@"SKAdNetwork") == nil) { [self.logger debug:@"StoreKit.framework not found in the app (SKAdNetwork class not found)"]; return; } if ([ADJUserDefaults getSkadRegisterCallTimestamp] != nil) { [self.logger debug:@"Call to register app with SKAdNetwork already made for this install"]; - callback(nil); + completion(nil); return; } if (@available(iOS 16.1, *)) { - [self updatePostbackConversionValue:0 - coarseValue:[self getSkAdNetworkCoarseConversionValue:@"low"] - lockWindow:NO - completionHandler:^(NSError * _Nonnull error) { - callback(error); + [self updatePostbackConversionValue:conversionValue + coarseValue:[self getSkAdNetworkCoarseConversionValue:coarseValue] + lockWindow:lockWindow + withCompletionHandler:^(NSError * _Nullable error) { + completion(error); }]; } else if (@available(iOS 15.4, *)) { - [self updatePostbackConversionValue:0 - completionHandler:^(NSError * _Nonnull error) { - callback(error); + [self updatePostbackConversionValue:conversionValue + withCompletionHandler:^(NSError * _Nullable error) { + completion(error); }]; } else if (@available(iOS 14.0, *)) { [self registerAppForAdNetworkAttribution]; - callback(nil); + completion(nil); } else { [self.logger error:@"SKAdNetwork API not available on this iOS version"]; - callback(nil); + completion(nil); return; } [self writeSkAdNetworkRegisterCallTimestamp]; } -- (void)adjUpdateConversionValue:(NSInteger)conversionValue - coarseValue:(NSString *)coarseValue - lockWindow:(NSNumber *)lockWindow - completionHandler:(void (^)(NSError *error))callback { +- (void)updateConversionValue:(NSInteger)conversionValue + coarseValue:(nullable NSString *)coarseValue + lockWindow:(nullable NSNumber *)lockWindow + withCompletionHandler:(void (^_Nullable)(NSError *_Nullable error))completion { if (NSClassFromString(@"SKAdNetwork") == nil) { [self.logger debug:@"StoreKit.framework not found in the app (SKAdNetwork class not found)"]; return; } - // let's make sure that the conversionValue makes sense - if (conversionValue < 0) { - callback(nil); - return; - } if (@available(iOS 16.1, *)) { // let's check if coarseValue and lockWindow make sense @@ -202,56 +200,68 @@ - (void)adjUpdateConversionValue:(NSInteger)conversionValue [self updatePostbackConversionValue:conversionValue coarseValue:[self getSkAdNetworkCoarseConversionValue:coarseValue] lockWindow:[lockWindow boolValue] - completionHandler:^(NSError * _Nonnull error) { + withCompletionHandler:^(NSError * _Nullable error) { if (error) { [self.logger error:@"Call to SKAdNetwork's updatePostbackConversionValue:coarseValue:lockWindow:completionHandler: method with conversion value: %d, coarse value: %@, lock window: %d failed\nDescription: %@", conversionValue, coarseValue, [lockWindow boolValue], error.localizedDescription]; } else { [self.logger debug:@"Called SKAdNetwork's updatePostbackConversionValue:coarseValue:lockWindow:completionHandler: method with conversion value: %d, coarse value: %@, lock window: %d", conversionValue, coarseValue, [lockWindow boolValue]]; } - callback(error); + if (completion != nil) { + completion(error); + } }]; } else { // Only coarse value is received [self updatePostbackConversionValue:conversionValue coarseValue:[self getSkAdNetworkCoarseConversionValue:coarseValue] - completionHandler:^(NSError * _Nonnull error) { + withCompletionHandler:^(NSError * _Nullable error) { if (error) { [self.logger error:@"Call to SKAdNetwork's updatePostbackConversionValue:coarseValue:completionHandler: method with conversion value: %d, coarse value: %@ failed\nDescription: %@", conversionValue, coarseValue, error.localizedDescription]; } else { [self.logger debug:@"Called SKAdNetwork's updatePostbackConversionValue:coarseValue:completionHandler: method with conversion value: %d, coarse value: %@", conversionValue, coarseValue]; } - callback(error); + if (completion != nil) { + completion(error); + } }]; } } else { // they don't, let's make sure to update conversion value with a // call to updatePostbackConversionValue:completionHandler: method [self updatePostbackConversionValue:conversionValue - completionHandler:^(NSError * _Nonnull error) { + withCompletionHandler:^(NSError * _Nullable error) { if (error) { [self.logger error:@"Call to SKAdNetwork's updatePostbackConversionValue:completionHandler: method with conversion value: %d failed\nDescription: %@", conversionValue, error.localizedDescription]; } else { [self.logger debug:@"Called SKAdNetwork's updatePostbackConversionValue:completionHandler: method with conversion value: %d", conversionValue]; } - callback(error); + if (completion != nil) { + completion(error); + } }]; } } else if (@available(iOS 15.4, *)) { [self updatePostbackConversionValue:conversionValue - completionHandler:^(NSError * _Nonnull error) { + withCompletionHandler:^(NSError * _Nullable error) { if (error) { [self.logger error:@"Call to SKAdNetwork's updatePostbackConversionValue:completionHandler: method with conversion value: %d failed\nDescription: %@", conversionValue, error.localizedDescription]; } else { [self.logger debug:@"Called SKAdNetwork's updatePostbackConversionValue:completionHandler: method with conversion value: %d", conversionValue]; } - callback(error); + if (completion != nil) { + completion(error); + } }]; } else if (@available(iOS 14.0, *)) { [self updateConversionValue:conversionValue]; - callback(nil); + if (completion != nil) { + completion(nil); + } } else { [self.logger error:@"SKAdNetwork API not available on this iOS version"]; - callback(nil); + if (completion != nil) { + completion(nil); + } } } diff --git a/Adjust/ADJSdkClickHandler.h b/Adjust/Internal/ADJSdkClickHandler.h similarity index 93% rename from Adjust/ADJSdkClickHandler.h rename to Adjust/Internal/ADJSdkClickHandler.h index 2ccf63e08..e1418d5dc 100644 --- a/Adjust/ADJSdkClickHandler.h +++ b/Adjust/Internal/ADJSdkClickHandler.h @@ -16,7 +16,6 @@ - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy; - (void)pauseSending; - (void)resumeSending; diff --git a/Adjust/ADJSdkClickHandler.m b/Adjust/Internal/ADJSdkClickHandler.m similarity index 81% rename from Adjust/ADJSdkClickHandler.m rename to Adjust/Internal/ADJSdkClickHandler.m index 0bbdb873f..5fcf6bd7d 100644 --- a/Adjust/ADJSdkClickHandler.m +++ b/Adjust/Internal/ADJSdkClickHandler.m @@ -29,6 +29,7 @@ @interface ADJSdkClickHandler() @property (nonatomic, weak) id activityHandler; @property (nonatomic, assign) NSInteger lastPackageRetriesCount; +@property (nonatomic, strong) NSNumber *lastPackageRetryInMilli; @end @@ -38,7 +39,6 @@ @implementation ADJSdkClickHandler - (id)initWithActivityHandler:(id)activityHandler startsSending:(BOOL)startsSending - userAgent:(NSString *)userAgent urlStrategy:(ADJUrlStrategy *)urlStrategy { self = [super init]; @@ -53,7 +53,6 @@ - (id)initWithActivityHandler:(id)activityHandler self.requestHandler = [[ADJRequestHandler alloc] initWithResponseCallback:self urlStrategy:urlStrategy - userAgent:userAgent requestTimeout:[ADJAdjustFactory requestTimeout]]; [ADJUtil launchInQueue:self.internalQueue @@ -183,16 +182,38 @@ - (void)sendNextSdkClickI:(ADJSdkClickHandler *)selfI { [selfI sendNextSdkClick]; }; - if (selfI.lastPackageRetriesCount <= 0) { + NSNumber *waitTimeSecondsDouble = [selfI waitTimeTimeInterval]; + + if (waitTimeSecondsDouble != nil) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, + (int64_t)(waitTimeSecondsDouble.doubleValue * NSEC_PER_SEC)), + self.internalQueue, work); + } else { work(); - return; } +} - NSTimeInterval waitTime = [ADJUtil waitingTime:selfI.lastPackageRetriesCount backoffStrategy:self.backoffStrategy]; - NSString *waitTimeFormatted = [ADJUtil secondsNumberFormat:waitTime]; +- (NSNumber *)waitTimeTimeInterval { + if (self.lastPackageRetriesCount > 0) { + NSTimeInterval waitTime = [ADJUtil waitingTime:self.lastPackageRetriesCount + backoffStrategy:self.backoffStrategy]; + + [self.logger verbose:@"Waiting for %@ seconds before retrying sdk_click for the %d time", + [ADJUtil secondsNumberFormat:waitTime], self.lastPackageRetriesCount]; + + return @(waitTime); + } - [self.logger verbose:@"Waiting for %@ seconds before retrying sdk_click for the %d time", waitTimeFormatted, selfI.lastPackageRetriesCount]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(waitTime * NSEC_PER_SEC)), self.internalQueue, work); + if (self.lastPackageRetryInMilli != nil) { + NSTimeInterval waitTime = [self.lastPackageRetryInMilli intValue] / 1000.0; + + [self.logger verbose:@"Waiting for %@ seconds before retrying sdk_click with retry_in", + [ADJUtil secondsNumberFormat:waitTime]]; + + return @(waitTime); + } + + return nil; } - (void)updatePackagesTrackingI:(ADJSdkClickHandler *)selfI @@ -207,7 +228,8 @@ - (void)updatePackagesTrackingI:(ADJSdkClickHandler *)selfI forActivityKind:activityPackage.activityKind withAttStatus:[activityPackage.parameters objectForKey:@"att_status"] configuration:selfI.activityHandler.adjustConfig - packageParams:selfI.activityHandler.packageParams]; + packageParams:selfI.activityHandler.packageParams + activityState:selfI.activityHandler.activityState]; } } @@ -223,17 +245,19 @@ - (void)responseCallback:(ADJResponseData *)responseData { // If yes, disable SDK and flush any potentially stored packages that happened afterwards. if (responseData.trackingState == ADJTrackingStateOptedOut) { self.lastPackageRetriesCount = 0; + self.lastPackageRetryInMilli = nil; [self.activityHandler setTrackingStateOptedOut]; return; } - if (responseData.jsonResponse == nil) { - self.lastPackageRetriesCount++; - [self.logger error:@"Retrying sdk_click package for the %d time", self.lastPackageRetriesCount]; + + if ([self retryPackageWithResponse:responseData]) { [self sendSdkClick:responseData.sdkClickPackage]; return; } + self.lastPackageRetriesCount = 0; - + self.lastPackageRetryInMilli = nil; + if ([ADJPackageBuilder isAdServicesPackage:responseData.sdkClickPackage]) { // set as tracked [ADJUserDefaults setAdServicesTracked]; @@ -246,4 +270,22 @@ - (void)responseCallback:(ADJResponseData *)responseData { [self.activityHandler finishedTracking:responseData]; } +- (BOOL)retryPackageWithResponse:(ADJResponseData *)responseData { + if (responseData.jsonResponse == nil) { + self.lastPackageRetriesCount++; + [self.logger error:@"Retrying sdk_click package for the %d time", + self.lastPackageRetriesCount]; + return YES; + } + + if (responseData.retryInMilli != nil) { + self.lastPackageRetryInMilli = responseData.retryInMilli; + [self.logger error:@"Retrying sdk_click package with retry in %d ms", + [responseData.retryInMilli intValue]]; + return YES; + } + + return NO; +} + @end diff --git a/Adjust/ADJTimerCycle.h b/Adjust/Internal/ADJTimerCycle.h similarity index 100% rename from Adjust/ADJTimerCycle.h rename to Adjust/Internal/ADJTimerCycle.h diff --git a/Adjust/ADJTimerCycle.m b/Adjust/Internal/ADJTimerCycle.m similarity index 100% rename from Adjust/ADJTimerCycle.m rename to Adjust/Internal/ADJTimerCycle.m diff --git a/Adjust/ADJTimerOnce.h b/Adjust/Internal/ADJTimerOnce.h similarity index 100% rename from Adjust/ADJTimerOnce.h rename to Adjust/Internal/ADJTimerOnce.h diff --git a/Adjust/ADJTimerOnce.m b/Adjust/Internal/ADJTimerOnce.m similarity index 100% rename from Adjust/ADJTimerOnce.m rename to Adjust/Internal/ADJTimerOnce.m diff --git a/Adjust/ADJUrlStrategy.h b/Adjust/Internal/ADJUrlStrategy.h similarity index 75% rename from Adjust/ADJUrlStrategy.h rename to Adjust/Internal/ADJUrlStrategy.h index 2bd3dcba8..5a758d38f 100644 --- a/Adjust/ADJUrlStrategy.h +++ b/Adjust/Internal/ADJUrlStrategy.h @@ -13,14 +13,16 @@ @property (nonatomic, readonly, copy) NSString *extraPath; -- (instancetype)initWithUrlStrategyInfo:(NSString *)urlStrategyInfo - extraPath:(NSString *)extraPath; +- (instancetype)initWithUrlStrategyDomains:(NSArray *)domains + extraPath:(NSString *)extraPath + useSubdomains:(BOOL)useSubdomains; - (NSString *)urlForActivityKind:(ADJActivityKind)activityKind isConsentGiven:(BOOL)isConsentGiven withSendingParams:(NSMutableDictionary *)sendingParams; - (void)resetAfterSuccess; + - (BOOL)shouldRetryAfterFailure:(ADJActivityKind)activityKind; @end diff --git a/Adjust/Internal/ADJUrlStrategy.m b/Adjust/Internal/ADJUrlStrategy.m new file mode 100644 index 000000000..cb1ca4f31 --- /dev/null +++ b/Adjust/Internal/ADJUrlStrategy.m @@ -0,0 +1,216 @@ +// +// ADJUrlStrategy.m +// Adjust +// +// Created by Pedro S. on 11.08.20. +// Copyright © 2020 adjust GmbH. All rights reserved. +// + +#import "ADJUrlStrategy.h" +#import "ADJAdjustFactory.h" + +static NSString * const kBaseAnalyticsUrl = @"https://analytics.adjust.com"; +static NSString * const kBaseConsentUrl = @"https://consent.adjust.com"; +static NSString * const kGdprUrl = @"https://gdpr.adjust.com"; +static NSString * const kSubscriptionUrl = @"https://subscription.adjust.com"; +static NSString * const kPurchaseVerificationUrl = @"https://ssrv.adjust.com"; + +static NSString * const kBaseAnalyticsIoUrl = @"https://analytics.adjust.io"; +static NSString * const kBaseConsentIoUrl = @"https://consent.adjust.io"; +static NSString * const kGdprIoUrl = @"https://gdpr.adjust.io"; +static NSString * const kSubscriptionIoUrl = @"https://subscription.adjust.io"; +static NSString * const kPurchaseVerificationIoUrl = @"https://ssrv.adjust.io"; + +// TODO: remove testServerCustomEndPointKey +static NSString *const testServerCustomEndPointKey = @"test_server_custom_end_point"; +static NSString *const testServerAdjustEndPointKey = @"test_server_adjust_end_point"; + + +@interface ADJUrlStrategy () + +@property (nonatomic, copy) NSMutableArray *baseUrlAnalyticsChoicesArray; + +@property (nonatomic, copy) NSMutableArray *baseUrlConsentChoicesArray; + +@property (nonatomic, copy) NSMutableArray *gdprUrlChoicesArray; + +@property (nonatomic, copy) NSMutableArray *subscriptionUrlChoicesArray; + +@property (nonatomic, copy) NSMutableArray *purchaseVerificationUrlChoicesArray; + +@property (nonatomic, copy) NSString *testUrlOverwrite; + +@property (nonatomic, assign) BOOL wasLastAttemptSuccess; + +@property (nonatomic, assign) NSUInteger choiceIndex; + +@property (nonatomic, assign) NSUInteger startingChoiceIndex; + +@end + +@implementation ADJUrlStrategy + +- (instancetype)initWithUrlStrategyDomains:(NSArray *)domains + extraPath:(NSString *)extraPath + useSubdomains:(BOOL)useSubdomains { + self = [super init]; + + _extraPath = extraPath ?: @""; + + _baseUrlAnalyticsChoicesArray = [NSMutableArray array]; + _baseUrlConsentChoicesArray = [NSMutableArray array]; + _gdprUrlChoicesArray = [NSMutableArray array]; + _subscriptionUrlChoicesArray = [NSMutableArray array]; + _purchaseVerificationUrlChoicesArray = [NSMutableArray array]; + + if (domains != nil) { + if (useSubdomains == YES) { + for (NSString *domain in domains) { + NSString *baseAnalyticsUrl = [ADJUrlStrategy generateBaseAnalyticsUrlForDomain:domain]; + NSString *baseConsentUrl = [ADJUrlStrategy generateBaseConsentUrlForDomain:domain]; + NSString *gdprUrl = [ADJUrlStrategy generateGdprUrlForDomain:domain]; + NSString *subscriptionUrl = [ADJUrlStrategy generateSubscriptionUrlForDomain:domain]; + NSString *purchaseVerificationUrl = [ADJUrlStrategy generatePurchaseVerificationUrlForDomain:domain]; + + if ([_baseUrlAnalyticsChoicesArray containsObject:baseAnalyticsUrl] == NO) { + [_baseUrlAnalyticsChoicesArray addObject:baseAnalyticsUrl]; + } + if ([_baseUrlConsentChoicesArray containsObject:baseConsentUrl] == NO) { + [_baseUrlConsentChoicesArray addObject:baseConsentUrl]; + } + if ([_gdprUrlChoicesArray containsObject:gdprUrl] == NO) { + [_gdprUrlChoicesArray addObject:gdprUrl]; + } + if ([_subscriptionUrlChoicesArray containsObject:subscriptionUrl] == NO) { + [_subscriptionUrlChoicesArray addObject:subscriptionUrl]; + } + if ([_purchaseVerificationUrlChoicesArray containsObject:purchaseVerificationUrl] == NO) { + [_purchaseVerificationUrlChoicesArray addObject:purchaseVerificationUrl]; + } + } + } else { + for (NSString *domain in domains) { + NSString *domainUrl = [NSString stringWithFormat:@"https://%@", domain]; + + if ([_baseUrlAnalyticsChoicesArray containsObject:domainUrl] == NO) { + [_baseUrlAnalyticsChoicesArray addObject:domainUrl]; + } + if ([_baseUrlConsentChoicesArray containsObject:domainUrl] == NO) { + [_baseUrlConsentChoicesArray addObject:domainUrl]; + } + if ([_gdprUrlChoicesArray containsObject:domainUrl] == NO) { + [_gdprUrlChoicesArray addObject:domainUrl]; + } + if ([_subscriptionUrlChoicesArray containsObject:domainUrl] == NO) { + [_subscriptionUrlChoicesArray addObject:domainUrl]; + } + if ([_purchaseVerificationUrlChoicesArray containsObject:domainUrl] == NO) { + [_purchaseVerificationUrlChoicesArray addObject:domainUrl]; + } + } + } + } else { + [_baseUrlConsentChoicesArray setArray:@[kBaseConsentUrl, + kBaseConsentIoUrl]]; + [_baseUrlAnalyticsChoicesArray setArray:@[kBaseAnalyticsUrl, + kBaseAnalyticsIoUrl]]; + [_gdprUrlChoicesArray setArray:@[kGdprUrl, + kGdprIoUrl]]; + [_subscriptionUrlChoicesArray setArray:@[kSubscriptionUrl, + kSubscriptionIoUrl]]; + [_purchaseVerificationUrlChoicesArray setArray:@[kPurchaseVerificationUrl, + kPurchaseVerificationIoUrl]]; + } + + _testUrlOverwrite = [ADJAdjustFactory testUrlOverwrite]; + _wasLastAttemptSuccess = NO; + _choiceIndex = 0; + _startingChoiceIndex = 0; + + return self; +} + ++ (NSString *)generateBaseAnalyticsUrlForDomain:(NSString *)domain { + return [NSString stringWithFormat:@"https://analytics.%@", domain]; +} + ++ (NSString *)generateBaseConsentUrlForDomain:(NSString *)domain { + return [NSString stringWithFormat:@"https://consent.%@", domain]; +} + ++ (NSString *)generateGdprUrlForDomain:(NSString *)domain { + return [NSString stringWithFormat:@"https://gdpr.%@", domain]; +} + ++ (NSString *)generateSubscriptionUrlForDomain:(NSString *)domain { + return [NSString stringWithFormat:@"https://subscription.%@", domain]; +} + ++ (NSString *)generatePurchaseVerificationUrlForDomain:(NSString *)domain { + return [NSString stringWithFormat:@"https://ssrv.%@", domain]; +} + +- (nonnull NSString *)urlForActivityKind:(ADJActivityKind)activityKind + isConsentGiven:(BOOL)isConsentGiven + withSendingParams:(NSMutableDictionary *)sendingParams { + NSString *_Nonnull urlByActivityKind = [self urlForActivityKind:activityKind + isConsentGiven:isConsentGiven]; + + if (self.testUrlOverwrite != nil) { + [sendingParams setObject:urlByActivityKind + forKey:testServerAdjustEndPointKey]; + return self.testUrlOverwrite; + } + + return urlByActivityKind; +} + +- (nonnull NSString *)urlForActivityKind:(ADJActivityKind)activityKind + isConsentGiven:(BOOL)isConsentGiven { + if (activityKind == ADJActivityKindGdpr) { + return [self.gdprUrlChoicesArray objectAtIndex:self.choiceIndex]; + } + + if (activityKind == ADJActivityKindSubscription) { + return [self.subscriptionUrlChoicesArray objectAtIndex:self.choiceIndex]; + } + + if (activityKind == ADJActivityKindPurchaseVerification) { + return [self.purchaseVerificationUrlChoicesArray objectAtIndex:self.choiceIndex]; + } + + if (isConsentGiven) { + return [self.baseUrlConsentChoicesArray objectAtIndex:self.choiceIndex]; + } else { + return [self.baseUrlAnalyticsChoicesArray objectAtIndex:self.choiceIndex]; + } +} + +- (void)resetAfterSuccess { + self.startingChoiceIndex = self.choiceIndex; + self.wasLastAttemptSuccess = YES; +} + +- (BOOL)shouldRetryAfterFailure:(ADJActivityKind)activityKind { + self.wasLastAttemptSuccess = NO; + + NSUInteger choiceListSize; + if (activityKind == ADJActivityKindGdpr) { + choiceListSize = [self.gdprUrlChoicesArray count]; + } else if (activityKind == ADJActivityKindSubscription) { + choiceListSize = [self.subscriptionUrlChoicesArray count]; + } else if (activityKind == ADJActivityKindPurchaseVerification) { + choiceListSize = [self.purchaseVerificationUrlChoicesArray count]; + } else { + // baseUrlConsentChoicesArray or baseUrlAnalyticsChoicesArray should be of equal size + choiceListSize = [self.baseUrlConsentChoicesArray count]; + } + + NSUInteger nextChoiceIndex = (self.choiceIndex + 1) % choiceListSize; + self.choiceIndex = nextChoiceIndex; + BOOL nextChoiceHasNotReturnedToStartingChoice = self.choiceIndex != self.startingChoiceIndex; + + return nextChoiceHasNotReturnedToStartingChoice; +} + +@end diff --git a/Adjust/ADJUserDefaults.h b/Adjust/Internal/ADJUserDefaults.h similarity index 88% rename from Adjust/ADJUserDefaults.h rename to Adjust/Internal/ADJUserDefaults.h index 2122c4670..0e420d144 100644 --- a/Adjust/ADJUserDefaults.h +++ b/Adjust/Internal/ADJUserDefaults.h @@ -31,7 +31,7 @@ + (void)removeGdprForgetMe; + (void)saveDeeplinkUrl:(NSURL *)deeplink - andClickTime:(NSDate *)clickTime; + clickTime:(NSDate *)clickTime; + (NSURL *)getDeeplinkUrl; @@ -39,12 +39,6 @@ + (void)removeDeeplink; -+ (void)setDisableThirdPartySharing; - -+ (BOOL)getDisableThirdPartySharing; - -+ (void)removeDisableThirdPartySharing; - + (void)clearAdjustStuff; + (void)setAdServicesTracked; @@ -71,5 +65,8 @@ + (void)removeAttWaitingRemainingSeconds; ++ (void)saveControlParams:(NSDictionary *)controlParams; + ++ (NSDictionary *)getControlParams; @end diff --git a/Adjust/ADJUserDefaults.m b/Adjust/Internal/ADJUserDefaults.m similarity index 90% rename from Adjust/ADJUserDefaults.m rename to Adjust/Internal/ADJUserDefaults.m index 16c6945e1..87b35becf 100644 --- a/Adjust/ADJUserDefaults.m +++ b/Adjust/Internal/ADJUserDefaults.m @@ -14,12 +14,12 @@ 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"; -static NSString * const PREFS_KEY_DISABLE_THIRD_PARTY_SHARING = @"adj_disable_third_party_sharing"; static NSString * const PREFS_KEY_ADSERVICES_TRACKED = @"adj_adservices_tracked"; static NSString * const PREFS_KEY_SKAD_REGISTER_CALL_TIME = @"adj_skad_register_call_time"; static NSString * const PREFS_KEY_LINK_ME_CHECKED = @"adj_link_me_checked"; static NSString * const PREFS_KEY_DEEPLINK_URL_CACHED = @"adj_deeplink_url_cached"; static NSString * const PREFS_KEY_ATT_WAITING_REMAINING_SECONDS = @"adj_att_waiting_remaining_seconds"; +static NSString * const PREFS_KEY_CONTROL_PARAMS = @"adj_control_params"; @implementation ADJUserDefaults @@ -66,7 +66,8 @@ + (void)removeGdprForgetMe { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_GDPR_FORGET_ME]; } -+ (void)saveDeeplinkUrl:(NSURL *)deeplink andClickTime:(NSDate *)clickTime { ++ (void)saveDeeplinkUrl:(NSURL *)deeplink + clickTime:(NSDate *)clickTime { [[NSUserDefaults standardUserDefaults] setURL:deeplink forKey:PREFS_KEY_DEEPLINK_URL]; [[NSUserDefaults standardUserDefaults] setObject:clickTime forKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; } @@ -84,18 +85,6 @@ + (void)removeDeeplink { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; } -+ (void)setDisableThirdPartySharing { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:PREFS_KEY_DISABLE_THIRD_PARTY_SHARING]; -} - -+ (BOOL)getDisableThirdPartySharing { - return [[NSUserDefaults standardUserDefaults] boolForKey:PREFS_KEY_DISABLE_THIRD_PARTY_SHARING]; -} - -+ (void)removeDisableThirdPartySharing { - [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DISABLE_THIRD_PARTY_SHARING]; -} - + (void)setAdServicesTracked { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:PREFS_KEY_ADSERVICES_TRACKED]; } @@ -146,6 +135,14 @@ + (void)removeAttWaitingRemainingSeconds { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_ATT_WAITING_REMAINING_SECONDS]; } ++ (void)saveControlParams:(NSDictionary *)controlParams { + [[NSUserDefaults standardUserDefaults] setObject:controlParams forKey:PREFS_KEY_CONTROL_PARAMS]; +} + ++ (NSDictionary *)getControlParams { + return [[NSUserDefaults standardUserDefaults] dictionaryForKey:PREFS_KEY_CONTROL_PARAMS]; +} + + (void)clearAdjustStuff { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_DATA]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_STRING]; @@ -153,12 +150,12 @@ + (void)clearAdjustStuff { [[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] removeObjectForKey:PREFS_KEY_DISABLE_THIRD_PARTY_SHARING]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_ADSERVICES_TRACKED]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_SKAD_REGISTER_CALL_TIME]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_LINK_ME_CHECKED]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_URL_CACHED]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_ATT_WAITING_REMAINING_SECONDS]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_CONTROL_PARAMS]; } @end diff --git a/Adjust/ADJUtil.h b/Adjust/Internal/ADJUtil.h similarity index 92% rename from Adjust/ADJUtil.h rename to Adjust/Internal/ADJUtil.h index 391f1c589..3be246ddb 100644 --- a/Adjust/ADJUtil.h +++ b/Adjust/Internal/ADJUtil.h @@ -72,7 +72,7 @@ typedef void (^isInactiveInjected)(BOOL); + (NSString *)queryString:(NSDictionary *)parameters queueSize:(NSUInteger)queueSize; -+ (NSString *)convertDeviceToken:(NSData *)deviceToken; ++ (NSString *)pushTokenDataAsString:(NSData *)pushTokenData; + (BOOL)isNull:(id)value; @@ -90,7 +90,7 @@ typedef void (^isInactiveInjected)(BOOL); source:(NSDictionary *)source parameterName:(NSString *)parameterName; -+ (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme; ++ (NSURL *)convertUniversalLink:(NSURL *)url withScheme:(NSString *)scheme; + (NSTimeInterval)waitingTime:(NSInteger)retries backoffStrategy:(ADJBackoffStrategy *)backoffStrategy; @@ -121,7 +121,7 @@ typedef void (^isInactiveInjected)(BOOL); + (NSString *)fetchAdServicesAttribution:(NSError **)errorPtr; -+ (void)requestTrackingAuthorizationWithCompletionHandler:(void (^)(NSUInteger status))completion; ++ (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^)(NSUInteger status))completion; + (NSString *)bundleIdentifier; @@ -146,4 +146,6 @@ typedef void (^isInactiveInjected)(BOOL); + (BOOL)shouldUseConsentParamsForActivityKind:(ADJActivityKind)activityKind andAttStatus:(NSString *)attStatusString; ++ (void)isEnabledFromActivityStateFile:(void (^)(BOOL))completion; + @end diff --git a/Adjust/ADJUtil.m b/Adjust/Internal/ADJUtil.m similarity index 88% rename from Adjust/ADJUtil.m rename to Adjust/Internal/ADJUtil.m index 87ec9e829..6fa08d107 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/Internal/ADJUtil.m @@ -22,26 +22,23 @@ #import "ADJLogger.h" #import "ADJResponseData.h" #import "ADJAdjustFactory.h" -#import "NSString+ADJAdditions.h" +#import "ADJAdditions.h" -#if !ADJUST_NO_IDFA -#import -#endif - -static NSString *userAgent = nil; static NSRegularExpression *universalLinkRegex = nil; static NSNumberFormatter *secondsNumberFormatter = nil; static NSRegularExpression *optionalRedirectRegex = nil; static NSRegularExpression *shortUniversalLinkRegex = nil; +static NSRegularExpression *goLinkUniversalLinkRegex = nil; static NSRegularExpression *excludedDeeplinkRegex = nil; -static NSString * const kClientSdk = @"ios4.38.4"; +static NSString * const kClientSdk = @"ios5.0.0"; static NSString * const kDeeplinkParam = @"deep_link="; static NSString * const kSchemeDelimiter = @"://"; static NSString * const kDefaultScheme = @"AdjustUniversalScheme"; static NSString * const kUniversalLinkPattern = @"https://[^.]*\\.ulink\\.adjust\\.com/ulink/?(.*)"; static NSString * const kOptionalRedirectPattern = @"adjust_redirect=[^&#]*"; static NSString * const kShortUniversalLinkPattern = @"http[s]?://[a-z0-9]{4}\\.(?:[a-z]{2}\\.)?adj\\.st/?(.*)"; +static NSString * const kGoLinkUniversalLinkPattern = @"https://[^.]*\\.go\\.link/?(.*)"; static NSString * const kExcludedDeeplinksPattern = @"^(fb|vk)[0-9]{5,}[^:]*://authorize.*access_token=.*"; static NSString * const kDateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z"; @@ -57,6 +54,7 @@ + (void)initialize { [self initializeShortUniversalLinkRegex]; [self initializeOptionalRedirectRegex]; [self initializeExcludedDeeplinkRegex]; + [self initializeGoLinkUniversalLinkRegex]; } + (void)teardown { @@ -64,6 +62,7 @@ + (void)teardown { secondsNumberFormatter = nil; optionalRedirectRegex = nil; shortUniversalLinkRegex = nil; + goLinkUniversalLinkRegex = nil; } + (void)initializeUniversalLinkRegex { @@ -90,6 +89,18 @@ + (void)initializeShortUniversalLinkRegex { shortUniversalLinkRegex = regex; } ++ (void)initializeGoLinkUniversalLinkRegex { + NSError *error = NULL; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:kGoLinkUniversalLinkPattern + options:NSRegularExpressionCaseInsensitive + error:&error]; + if ([ADJUtil isNotNull:error]) { + [ADJAdjustFactory.logger error:@"go.link universal link regex rule error (%@)", [error description]]; + return; + } + goLinkUniversalLinkRegex = regex; +} + + (void)initializeOptionalRedirectRegex { NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:kOptionalRedirectPattern @@ -120,7 +131,7 @@ + (void)initializeSecondsNumberFormatter { } + (void)updateUrlSessionConfiguration:(ADJConfig *)config { - userAgent = config.userAgent; + // TODO: do we need this method? } + (NSString *)clientSdk { @@ -132,9 +143,9 @@ + (NSDateFormatter *)getDateFormatter { [dateFormatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]]; [dateFormatter setDateFormat:kDateFormat]; - Class class = NSClassFromString([NSString adjJoin:@"N", @"S", @"locale", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"N", @"S", @"locale", nil]); if (class != nil) { - NSString *keyLwli = [NSString adjJoin:@"locale", @"with", @"locale", @"identifier:", nil]; + NSString *keyLwli = [ADJAdditions adjJoin:@"locale", @"with", @"locale", @"identifier:", nil]; SEL selLwli = NSSelectorFromString(keyLwli); if ([class respondsToSelector:selLwli]) { #pragma clang diagnostic push @@ -206,7 +217,7 @@ + (id)readObject:(NSString *)fileName syncObject:(id)syncObject { #if TARGET_OS_TV return nil; -#endif +#else @synchronized(syncObject) { NSString *documentsFilePath = [ADJUtil getFilePathInDocumentsDir:fileName]; NSString *appSupportFilePath = [ADJUtil getFilePathInAppSupportDir:fileName]; @@ -309,6 +320,7 @@ + (id)readObject:(NSString *)fileName return nil; } +#endif } + (void)writeObject:(id)object @@ -317,7 +329,7 @@ + (void)writeObject:(id)object syncObject:(id)syncObject { #if TARGET_OS_TV return; -#endif +#else @synchronized(syncObject) { @try { BOOL result; @@ -362,16 +374,17 @@ + (void)writeObject:(id)object [[ADJAdjustFactory logger] error:@"Failed to write %@ file (%@)", objectName, exception]; } } +#endif } + (BOOL)migrateFileFromPath:(NSString *)oldPath toPath:(NSString *)newPath { __autoreleasing NSError *error; __autoreleasing NSError **errorPointer = &error; - Class class = NSClassFromString([NSString adjJoin:@"N", @"S", @"file", @"manager", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"N", @"S", @"file", @"manager", nil]); if (class == nil) { return NO; } - NSString *keyDm = [NSString adjJoin:@"default", @"manager", nil]; + NSString *keyDm = [ADJAdditions adjJoin:@"default", @"manager", nil]; SEL selDm = NSSelectorFromString(keyDm); if (![class respondsToSelector:selDm]) { return NO; @@ -381,9 +394,9 @@ + (BOOL)migrateFileFromPath:(NSString *)oldPath toPath:(NSString *)newPath { id man = [class performSelector:selDm]; #pragma clang diagnostic pop NSString *keyCpy = [NSString stringWithFormat:@"%@%@%@", - [NSString adjJoin:@"copy", @"item", @"at", @"path", @":", nil], - [NSString adjJoin:@"to", @"path", @":", nil], - [NSString adjJoin:@"error", @":", nil]]; + [ADJAdditions adjJoin:@"copy", @"item", @"at", @"path", @":", nil], + [ADJAdditions adjJoin:@"to", @"path", @":", nil], + [ADJAdditions adjJoin:@"error", @":", nil]]; SEL selCpy = NSSelectorFromString(keyCpy); if (![man respondsToSelector:selCpy]) { return NO; @@ -434,11 +447,11 @@ + (NSString *)getFilePathInAppSupportDir:(NSString *)fileName { + (BOOL)checkForDirectoryPresenceInPath:(NSString *)path forFolder:(NSString *)folderName { // Check for presence of directory first. // If it doesn't exist, make one. - Class class = NSClassFromString([NSString adjJoin:@"N", @"S", @"file", @"manager", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"N", @"S", @"file", @"manager", nil]); if (class == nil) { return NO; } - NSString *keyDm = [NSString adjJoin:@"default", @"manager", nil]; + NSString *keyDm = [ADJAdditions adjJoin:@"default", @"manager", nil]; SEL selDm = NSSelectorFromString(keyDm); if (![class respondsToSelector:selDm]) { return NO; @@ -447,7 +460,7 @@ + (BOOL)checkForDirectoryPresenceInPath:(NSString *)path forFolder:(NSString *)f #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id man = [class performSelector:selDm]; #pragma clang diagnostic pop - NSString *keyExi = [NSString adjJoin:@"file", @"exists", @"at", @"path", @":", nil]; + NSString *keyExi = [ADJAdditions adjJoin:@"file", @"exists", @"at", @"path", @":", nil]; SEL selExi = NSSelectorFromString(keyExi); if (![man respondsToSelector:selExi]) { return NO; @@ -469,10 +482,10 @@ + (BOOL)checkForDirectoryPresenceInPath:(NSString *)path forFolder:(NSString *)f __autoreleasing NSError *error; __autoreleasing NSError **errorPointer = &error; NSString *keyCrt = [NSString stringWithFormat:@"%@%@%@%@", - [NSString adjJoin:@"create", @"directory", @"at", @"path", @":", nil], - [NSString adjJoin:@"with", @"intermediate", @"directories", @":", nil], - [NSString adjJoin:@"attributes", @":", nil], - [NSString adjJoin:@"error", @":", nil]]; + [ADJAdditions adjJoin:@"create", @"directory", @"at", @"path", @":", nil], + [ADJAdditions adjJoin:@"with", @"intermediate", @"directories", @":", nil], + [ADJAdditions adjJoin:@"attributes", @":", nil], + [ADJAdditions adjJoin:@"error", @":", nil]]; SEL selCrt = NSSelectorFromString(keyCrt); if (![man respondsToSelector:selCrt]) { return NO; @@ -505,22 +518,26 @@ + (NSString *)queryString:(NSDictionary *)parameters NSMutableArray *pairs = [NSMutableArray array]; for (NSString *key in parameters) { NSString *value = [parameters objectForKey:key]; - NSString *escapedValue = [value adjUrlEncode]; - NSString *escapedKey = [key adjUrlEncode]; + // NSString *escapedValue = [value adjUrlEncode]; + NSString *escapedValue = [ADJAdditions adjUrlEncode:value]; + // NSString *escapedKey = [key adjUrlEncode]; + NSString *escapedKey = [ADJAdditions adjUrlEncode:key]; NSString *pair = [NSString stringWithFormat:@"%@=%@", escapedKey, escapedValue]; [pairs addObject:pair]; } double now = [NSDate.date timeIntervalSince1970]; NSString *dateString = [ADJUtil formatSeconds1970:now]; - NSString *escapedDate = [dateString adjUrlEncode]; + // NSString *escapedDate = [dateString adjUrlEncode]; + NSString *escapedDate = [ADJAdditions adjUrlEncode:dateString]; NSString *sentAtPair = [NSString stringWithFormat:@"%@=%@", @"sent_at", escapedDate]; [pairs addObject:sentAtPair]; if (queueSize > 0) { unsigned long queueSizeNative = (unsigned long)queueSize; NSString *queueSizeString = [NSString stringWithFormat:@"%lu", queueSizeNative]; - NSString *escapedQueueSize = [queueSizeString adjUrlEncode]; + // NSString *escapedQueueSize = [queueSizeString adjUrlEncode]; + NSString *escapedQueueSize = [ADJAdditions adjUrlEncode:queueSizeString]; NSString *queueSizePair = [NSString stringWithFormat:@"%@=%@", @"queue_size", escapedQueueSize]; [pairs addObject:queueSizePair]; } @@ -561,7 +578,7 @@ + (NSDictionary *)convertDictionaryValues:(NSDictionary *)dictionary { return convertedDictionary; } -+ (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme { ++ (NSURL *)convertUniversalLink:(NSURL *)url withScheme:(NSString *)scheme { id logger = ADJAdjustFactory.logger; if ([ADJUtil isNull:url]) { @@ -585,13 +602,20 @@ + (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme { [logger error:@"Short Universal link regex not correctly configured"]; return nil; } + if (goLinkUniversalLinkRegex == nil) { + [logger error:@"go.link universal link regex not correctly configured"]; + return nil; + } NSArray *matches = [universalLinkRegex matchesInString:urlString options:0 range:NSMakeRange(0, [urlString length])]; if ([matches count] == 0) { matches = [shortUniversalLinkRegex matchesInString:urlString options:0 range:NSMakeRange(0, [urlString length])]; if ([matches count] == 0) { - [logger error:@"Url doesn't match as universal link or short version"]; - return nil; + matches = [goLinkUniversalLinkRegex matchesInString:urlString options:0 range:NSMakeRange(0, [urlString length])]; + if ([matches count] == 0) { + [logger error:@"URL doesn't match any of the Adjust universal link versions"]; + return nil; + } } } if ([matches count] > 1) { @@ -608,7 +632,7 @@ + (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme { NSString *tailSubString = [urlString substringWithRange:[match rangeAtIndex:1]]; NSString *finalTailSubString = [ADJUtil removeOptionalRedirect:tailSubString]; NSString *extractedUrlString = [NSString stringWithFormat:@"%@://%@", scheme, finalTailSubString]; - [logger info:@"Converted deeplink from universal link %@", extractedUrlString]; + [logger info:@"Converted deeplink from universal link %@", [url absoluteString]]; NSURL *extractedUrl = [NSURL URLWithString:extractedUrlString]; if ([ADJUtil isNull:extractedUrl]) { [logger error:@"Unable to parse converted deeplink from universal link %@", extractedUrlString]; @@ -820,11 +844,11 @@ + (BOOL)deleteFileWithName:(NSString *)fileName { } + (BOOL)deleteFileInPath:(NSString *)filePath { - Class class = NSClassFromString([NSString adjJoin:@"N", @"S", @"file", @"manager", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"N", @"S", @"file", @"manager", nil]); if (class == nil) { return NO; } - NSString *keyDm = [NSString adjJoin:@"default", @"manager", nil]; + NSString *keyDm = [ADJAdditions adjJoin:@"default", @"manager", nil]; SEL selDm = NSSelectorFromString(keyDm); if (![class respondsToSelector:selDm]) { return NO; @@ -833,7 +857,7 @@ + (BOOL)deleteFileInPath:(NSString *)filePath { #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id man = [class performSelector:selDm]; #pragma clang diagnostic pop - NSString *keyExi = [NSString adjJoin:@"file", @"exists", @"at", @"path", @":", nil]; + NSString *keyExi = [ADJAdditions adjJoin:@"file", @"exists", @"at", @"path", @":", nil]; SEL selExi = NSSelectorFromString(keyExi); if (![man respondsToSelector:selExi]) { return NO; @@ -854,8 +878,8 @@ + (BOOL)deleteFileInPath:(NSString *)filePath { __autoreleasing NSError *error; __autoreleasing NSError **errorPointer = &error; NSString *keyRm = [NSString stringWithFormat:@"%@%@", - [NSString adjJoin:@"remove", @"item", @"at", @"path", @":", nil], - [NSString adjJoin:@"error", @":", nil]]; + [ADJAdditions adjJoin:@"remove", @"item", @"at", @"path", @":", nil], + [ADJAdditions adjJoin:@"error", @":", nil]]; SEL selRm = NSSelectorFromString(keyRm); if (![man respondsToSelector:selRm]) { return NO; @@ -924,14 +948,14 @@ + (void)launchDeepLinkMain:(NSURL *)deepLinkUrl { } // adapted from https://stackoverflow.com/a/9084784 -+ (NSString *)convertDeviceToken:(NSData *)deviceToken { - NSUInteger dataLength = [deviceToken length]; ++ (NSString *)pushTokenDataAsString:(NSData *)pushTokenData { + NSUInteger dataLength = [pushTokenData length]; if (dataLength == 0) { return nil; } - const unsigned char *dataBuffer = (const unsigned char *)[deviceToken bytes]; + const unsigned char *dataBuffer = (const unsigned char *)[pushTokenData bytes]; if (!dataBuffer) { return nil; @@ -985,13 +1009,13 @@ + (NSString *)sdkVersion { } + (Class)adSupportManager { - NSString *className = [NSString adjJoin:@"A", @"S", @"identifier", @"manager", nil]; + NSString *className = [ADJAdditions adjJoin:@"A", @"S", @"identifier", @"manager", nil]; Class class = NSClassFromString(className); return class; } + (Class)appTrackingManager { - NSString *className = [NSString adjJoin:@"A", @"T", @"tracking", @"manager", nil]; + NSString *className = [ADJAdditions adjJoin:@"A", @"T", @"tracking", @"manager", nil]; Class class = NSClassFromString(className); return class; } @@ -1006,7 +1030,7 @@ + (BOOL)trackingEnabled { return NO; } - NSString *keyManager = [NSString adjJoin:@"shared", @"manager", nil]; + NSString *keyManager = [ADJAdditions adjJoin:@"shared", @"manager", nil]; SEL selManager = NSSelectorFromString(keyManager); if (![adSupportClass respondsToSelector:selManager]) { return NO; @@ -1014,7 +1038,7 @@ + (BOOL)trackingEnabled { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id manager = [adSupportClass performSelector:selManager]; - NSString *keyEnabled = [NSString adjJoin:@"is", @"advertising", @"tracking", @"enabled", nil]; + NSString *keyEnabled = [ADJAdditions adjJoin:@"is", @"advertising", @"tracking", @"enabled", nil]; SEL selEnabled = NSSelectorFromString(keyEnabled); if (![manager respondsToSelector:selEnabled]) { return NO; @@ -1047,19 +1071,19 @@ + (NSString *)idfa { } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" - NSString *keyManager = [NSString adjJoin:@"shared", @"manager", nil]; + NSString *keyManager = [ADJAdditions adjJoin:@"shared", @"manager", nil]; SEL selManager = NSSelectorFromString(keyManager); if (![adSupportClass respondsToSelector:selManager]) { return @""; } id manager = [adSupportClass performSelector:selManager]; - NSString *keyIdentifier = [NSString adjJoin:@"advertising", @"identifier", nil]; + NSString *keyIdentifier = [ADJAdditions adjJoin:@"advertising", @"identifier", nil]; SEL selIdentifier = NSSelectorFromString(keyIdentifier); if (![manager respondsToSelector:selIdentifier]) { return @""; } id identifier = [manager performSelector:selIdentifier]; - NSString *keyString = [NSString adjJoin:@"UUID", @"string", nil]; + NSString *keyString = [ADJAdditions adjJoin:@"UUID", @"string", nil]; SEL selString = NSSelectorFromString(keyString); if (![identifier respondsToSelector:selString]) { return @""; @@ -1071,11 +1095,11 @@ + (NSString *)idfa { } + (NSString *)idfv { - Class class = NSClassFromString([NSString adjJoin:@"U", @"I", @"device", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"U", @"I", @"device", nil]); if (class == nil) { return nil; } - NSString *keyCd = [NSString adjJoin:@"current", @"device", nil]; + NSString *keyCd = [ADJAdditions adjJoin:@"current", @"device", nil]; SEL selCd = NSSelectorFromString(keyCd); if (![class respondsToSelector:selCd]) { return nil; @@ -1084,7 +1108,7 @@ + (NSString *)idfv { #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id dev = [class performSelector:selCd]; #pragma clang diagnostic pop - NSString *keyIfv = [NSString adjJoin:@"identifier", @"for", @"vendor", nil]; + NSString *keyIfv = [ADJAdditions adjJoin:@"identifier", @"for", @"vendor", nil]; SEL selIfv = NSSelectorFromString(keyIfv); if (![dev respondsToSelector:selIfv]) { return nil; @@ -1134,11 +1158,11 @@ + (NSString *)fbAnonymousId { } + (NSString *)deviceType { - Class class = NSClassFromString([NSString adjJoin:@"U", @"I", @"device", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"U", @"I", @"device", nil]); if (class == nil) { return nil; } - NSString *keyCd = [NSString adjJoin:@"current", @"device", nil]; + NSString *keyCd = [ADJAdditions adjJoin:@"current", @"device", nil]; SEL selCd = NSSelectorFromString(keyCd); if (![class respondsToSelector:selCd]) { return nil; @@ -1147,7 +1171,7 @@ + (NSString *)deviceType { #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id dev = [class performSelector:selCd]; #pragma clang diagnostic pop - NSString *keyM = [NSString adjJoin:@"model", nil]; + NSString *keyM = [ADJAdditions adjJoin:@"model", nil]; SEL selM = NSSelectorFromString(keyM); if (![dev respondsToSelector:selM]) { return nil; @@ -1173,7 +1197,7 @@ + (NSUInteger)startedAt { mib[1] = KERN_BOOTTIME; size = sizeof(starttime); - NSString *m = [[NSString adjJoin:@"s", @"ys", @"ct", @"l", nil] lowercaseString]; + NSString *m = [[ADJAdditions adjJoin:@"s", @"ys", @"ct", @"l", nil] lowercaseString]; int (*fptr)(int *, u_int, void *, size_t *, void *, size_t); *(int**)(&fptr) = dlsym(RTLD_SELF, [m UTF8String]); if (fptr) { @@ -1193,7 +1217,7 @@ + (int)attStatus { Class appTrackingClass = [self appTrackingManager]; if (appTrackingClass != nil) { - NSString *keyAuthorization = [NSString adjJoin:@"tracking", @"authorization", @"status", nil]; + NSString *keyAuthorization = [ADJAdditions adjJoin:@"tracking", @"authorization", @"status", nil]; SEL selAuthorization = NSSelectorFromString(keyAuthorization); if ([appTrackingClass respondsToSelector:selAuthorization]) { NSMethodSignature *msAuthorization = [appTrackingClass methodSignatureForSelector:selAuthorization]; @@ -1259,12 +1283,12 @@ + (NSString *)fetchAdServicesAttribution:(NSError **)errorPtr { return token; } -+ (void)requestTrackingAuthorizationWithCompletionHandler:(void (^)(NSUInteger status))completion { ++ (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^)(NSUInteger status))completion { Class appTrackingClass = [self appTrackingManager]; if (appTrackingClass == nil) { return; } - NSString *requestAuthorization = [NSString adjJoin: + NSString *requestAuthorization = [ADJAdditions adjJoin: @"request", @"tracking", @"authorization", @@ -1297,11 +1321,11 @@ + (NSString *)versionNumber { } + (NSString *)osVersion { - Class class = NSClassFromString([NSString adjJoin:@"U", @"I", @"device", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"U", @"I", @"device", nil]); if (class == nil) { return nil; } - NSString *keyCd = [NSString adjJoin:@"current", @"device", nil]; + NSString *keyCd = [ADJAdditions adjJoin:@"current", @"device", nil]; SEL selCd = NSSelectorFromString(keyCd); if (![class respondsToSelector:selCd]) { return nil; @@ -1310,7 +1334,7 @@ + (NSString *)osVersion { #pragma clang diagnostic ignored "-Warc-performSelector-leaks" id dev = [class performSelector:selCd]; #pragma clang diagnostic pop - NSString *keySv = [NSString adjJoin:@"system", @"version", nil]; + NSString *keySv = [ADJAdditions adjJoin:@"system", @"version", nil]; SEL selSv = NSSelectorFromString(keySv); if (![dev respondsToSelector:selSv]) { return nil; @@ -1339,9 +1363,9 @@ + (NSString *)installedAt { __autoreleasing NSError *error; __autoreleasing NSError **errorPointer = &error; - Class class = NSClassFromString([NSString adjJoin:@"N", @"S", @"file", @"manager", nil]); + Class class = NSClassFromString([ADJAdditions adjJoin:@"N", @"S", @"file", @"manager", nil]); if (class != nil) { - NSString *keyDm = [NSString adjJoin:@"default", @"manager", nil]; + NSString *keyDm = [ADJAdditions adjJoin:@"default", @"manager", nil]; SEL selDm = NSSelectorFromString(keyDm); if ([class respondsToSelector:selDm]) { #pragma clang diagnostic push @@ -1349,8 +1373,8 @@ + (NSString *)installedAt { id man = [class performSelector:selDm]; #pragma clang diagnostic pop NSString *keyChk = [NSString stringWithFormat:@"%@%@", - [NSString adjJoin:@"attributes", @"of", @"item", @"at", @"path", @":", nil], - [NSString adjJoin:@"error", @":", nil]]; + [ADJAdditions adjJoin:@"attributes", @"of", @"item", @"at", @"path", @":", nil], + [ADJAdditions adjJoin:@"error", @":", nil]]; SEL selChk = NSSelectorFromString(keyChk); if ([man respondsToSelector:selChk]) { NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[man methodSignatureForSelector:selChk]]; @@ -1362,7 +1386,7 @@ + (NSString *)installedAt { NSMutableDictionary * __unsafe_unretained tmpResult; [inv getReturnValue:&tmpResult]; NSMutableDictionary *result = tmpResult; - CFStringRef *indexRef = dlsym(RTLD_SELF, [[NSString adjJoin:@"N", @"S", @"file", @"creation", @"date", nil] UTF8String]); + CFStringRef *indexRef = dlsym(RTLD_SELF, [[ADJAdditions adjJoin:@"N", @"S", @"file", @"creation", @"date", nil] UTF8String]); NSString *ref = (__bridge_transfer id) *indexRef; installTime = result[ref]; } @@ -1478,4 +1502,22 @@ + (BOOL)shouldUseConsentParamsForActivityKind:(ADJActivityKind)activityKind } } ++ (void)isEnabledFromActivityStateFile:(void (^)(BOOL))completion { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [ADJUtil launchSynchronisedWithObject:[ADJActivityState class] + block:^{ + [NSKeyedUnarchiver setClass:[ADJActivityState class] forClassName:@"AIActivityState"]; + ADJActivityState *activityState = [ADJUtil readObject:@"AdjustIoActivityState" + objectName:@"Activity state" + class:[ADJActivityState class] + syncObject:[ADJActivityState class]]; + if (activityState == nil) { + completion(YES); + } else { + completion(activityState.enabled); + } + }]; + }); +} + @end diff --git a/Adjust/PrivacyInfo.xcprivacy b/Adjust/PrivacyInfo.xcprivacy index af2d9c588..344679caa 100644 --- a/Adjust/PrivacyInfo.xcprivacy +++ b/Adjust/PrivacyInfo.xcprivacy @@ -7,6 +7,7 @@ NSPrivacyTrackingDomains https://consent.adjust.com + https://consent.adjust.io https://consent.adjust.net.in https://consent.adjust.world https://consent.adjust.cn diff --git a/Adjust/include/ADJAdRevenue.h b/Adjust/include/ADJAdRevenue.h deleted file mode 120000 index 2cb4e0b7c..000000000 --- a/Adjust/include/ADJAdRevenue.h +++ /dev/null @@ -1 +0,0 @@ -../ADJAdRevenue.h \ No newline at end of file diff --git a/Adjust/include/ADJAttribution.h b/Adjust/include/ADJAttribution.h deleted file mode 120000 index 5ee8609a9..000000000 --- a/Adjust/include/ADJAttribution.h +++ /dev/null @@ -1 +0,0 @@ -../ADJAttribution.h \ No newline at end of file diff --git a/Adjust/include/ADJConfig.h b/Adjust/include/ADJConfig.h deleted file mode 120000 index 103b8d48b..000000000 --- a/Adjust/include/ADJConfig.h +++ /dev/null @@ -1 +0,0 @@ -../ADJConfig.h \ No newline at end of file diff --git a/Adjust/include/ADJEvent.h b/Adjust/include/ADJEvent.h deleted file mode 120000 index 9d24258c8..000000000 --- a/Adjust/include/ADJEvent.h +++ /dev/null @@ -1 +0,0 @@ -../ADJEvent.h \ No newline at end of file diff --git a/Adjust/include/ADJEventFailure.h b/Adjust/include/ADJEventFailure.h deleted file mode 120000 index 605c66d6e..000000000 --- a/Adjust/include/ADJEventFailure.h +++ /dev/null @@ -1 +0,0 @@ -../ADJEventFailure.h \ No newline at end of file diff --git a/Adjust/include/ADJEventSuccess.h b/Adjust/include/ADJEventSuccess.h deleted file mode 120000 index 84713bee4..000000000 --- a/Adjust/include/ADJEventSuccess.h +++ /dev/null @@ -1 +0,0 @@ -../ADJEventSuccess.h \ No newline at end of file diff --git a/Adjust/include/ADJLinkResolution.h b/Adjust/include/ADJLinkResolution.h deleted file mode 120000 index 1d9ce513d..000000000 --- a/Adjust/include/ADJLinkResolution.h +++ /dev/null @@ -1 +0,0 @@ -../ADJLinkResolution.h \ No newline at end of file diff --git a/Adjust/include/ADJLogger.h b/Adjust/include/ADJLogger.h deleted file mode 120000 index 4a405dc62..000000000 --- a/Adjust/include/ADJLogger.h +++ /dev/null @@ -1 +0,0 @@ -../ADJLogger.h \ No newline at end of file diff --git a/Adjust/include/ADJPurchase.h b/Adjust/include/ADJPurchase.h deleted file mode 120000 index 42245ce99..000000000 --- a/Adjust/include/ADJPurchase.h +++ /dev/null @@ -1 +0,0 @@ -../ADJPurchase.h \ No newline at end of file diff --git a/Adjust/include/ADJPurchaseVerificationResult.h b/Adjust/include/ADJPurchaseVerificationResult.h deleted file mode 120000 index f9e624dab..000000000 --- a/Adjust/include/ADJPurchaseVerificationResult.h +++ /dev/null @@ -1 +0,0 @@ -../ADJPurchaseVerificationResult.h \ No newline at end of file diff --git a/Adjust/include/ADJSessionFailure.h b/Adjust/include/ADJSessionFailure.h deleted file mode 120000 index ce738f2f6..000000000 --- a/Adjust/include/ADJSessionFailure.h +++ /dev/null @@ -1 +0,0 @@ -../ADJSessionFailure.h \ No newline at end of file diff --git a/Adjust/include/ADJSessionSuccess.h b/Adjust/include/ADJSessionSuccess.h deleted file mode 120000 index 4b1659c23..000000000 --- a/Adjust/include/ADJSessionSuccess.h +++ /dev/null @@ -1 +0,0 @@ -../ADJSessionSuccess.h \ No newline at end of file diff --git a/Adjust/include/ADJSubscription.h b/Adjust/include/ADJSubscription.h deleted file mode 120000 index 0914f4934..000000000 --- a/Adjust/include/ADJSubscription.h +++ /dev/null @@ -1 +0,0 @@ -../ADJSubscription.h \ No newline at end of file diff --git a/Adjust/include/ADJThirdPartySharing.h b/Adjust/include/ADJThirdPartySharing.h deleted file mode 120000 index 57de65ac8..000000000 --- a/Adjust/include/ADJThirdPartySharing.h +++ /dev/null @@ -1 +0,0 @@ -../ADJThirdPartySharing.h \ No newline at end of file diff --git a/Adjust/include/Adjust.h b/Adjust/include/Adjust.h deleted file mode 120000 index e1e72790b..000000000 --- a/Adjust/include/Adjust.h +++ /dev/null @@ -1 +0,0 @@ -../Adjust.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJAdRevenue.h b/Adjust/include/AdjustSdk/ADJAdRevenue.h new file mode 120000 index 000000000..8c11dc979 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJAdRevenue.h @@ -0,0 +1 @@ +../../ADJAdRevenue.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJAppStorePurchase.h b/Adjust/include/AdjustSdk/ADJAppStorePurchase.h new file mode 120000 index 000000000..72a453e7c --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJAppStorePurchase.h @@ -0,0 +1 @@ +../../ADJAppStorePurchase.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJAppStoreSubscription.h b/Adjust/include/AdjustSdk/ADJAppStoreSubscription.h new file mode 120000 index 000000000..cc1bc1200 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJAppStoreSubscription.h @@ -0,0 +1 @@ +../../ADJAppStoreSubscription.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJAttribution.h b/Adjust/include/AdjustSdk/ADJAttribution.h new file mode 120000 index 000000000..e36bbb343 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJAttribution.h @@ -0,0 +1 @@ +../../ADJAttribution.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJConfig.h b/Adjust/include/AdjustSdk/ADJConfig.h new file mode 120000 index 000000000..201167817 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJConfig.h @@ -0,0 +1 @@ +../../ADJConfig.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJDeeplink.h b/Adjust/include/AdjustSdk/ADJDeeplink.h new file mode 120000 index 000000000..148a06c2d --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJDeeplink.h @@ -0,0 +1 @@ +../../ADJDeeplink.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJEvent.h b/Adjust/include/AdjustSdk/ADJEvent.h new file mode 120000 index 000000000..e9dcc420f --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJEvent.h @@ -0,0 +1 @@ +../../ADJEvent.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJEventFailure.h b/Adjust/include/AdjustSdk/ADJEventFailure.h new file mode 120000 index 000000000..968402d09 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJEventFailure.h @@ -0,0 +1 @@ +../../ADJEventFailure.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJEventSuccess.h b/Adjust/include/AdjustSdk/ADJEventSuccess.h new file mode 120000 index 000000000..c59006fe7 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJEventSuccess.h @@ -0,0 +1 @@ +../../ADJEventSuccess.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJLinkResolution.h b/Adjust/include/AdjustSdk/ADJLinkResolution.h new file mode 120000 index 000000000..36a07d530 --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJLinkResolution.h @@ -0,0 +1 @@ +../../ADJLinkResolution.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJLogger.h b/Adjust/include/AdjustSdk/ADJLogger.h new file mode 120000 index 000000000..742e85e4a --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJLogger.h @@ -0,0 +1 @@ +../../ADJLogger.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJPurchaseVerificationResult.h b/Adjust/include/AdjustSdk/ADJPurchaseVerificationResult.h new file mode 120000 index 000000000..736034f5d --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJPurchaseVerificationResult.h @@ -0,0 +1 @@ +../../ADJPurchaseVerificationResult.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJSessionFailure.h b/Adjust/include/AdjustSdk/ADJSessionFailure.h new file mode 120000 index 000000000..6f1f4b8bf --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJSessionFailure.h @@ -0,0 +1 @@ +../../ADJSessionFailure.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJSessionSuccess.h b/Adjust/include/AdjustSdk/ADJSessionSuccess.h new file mode 120000 index 000000000..ef8a8701e --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJSessionSuccess.h @@ -0,0 +1 @@ +../../ADJSessionSuccess.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/ADJThirdPartySharing.h b/Adjust/include/AdjustSdk/ADJThirdPartySharing.h new file mode 120000 index 000000000..5772bb9dd --- /dev/null +++ b/Adjust/include/AdjustSdk/ADJThirdPartySharing.h @@ -0,0 +1 @@ +../../ADJThirdPartySharing.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/Adjust.h b/Adjust/include/AdjustSdk/Adjust.h new file mode 120000 index 000000000..80a7a4d7a --- /dev/null +++ b/Adjust/include/AdjustSdk/Adjust.h @@ -0,0 +1 @@ +../../Adjust.h \ No newline at end of file diff --git a/Adjust/include/AdjustSdk/AdjustSdk.h b/Adjust/include/AdjustSdk/AdjustSdk.h new file mode 120000 index 000000000..79db2661a --- /dev/null +++ b/Adjust/include/AdjustSdk/AdjustSdk.h @@ -0,0 +1 @@ +../../../UmbrellaHeaders/sdk/AdjustSdk.h \ No newline at end of file diff --git a/AdjustBridge/Adjust b/AdjustBridge/Adjust deleted file mode 120000 index 7685f2baf..000000000 --- a/AdjustBridge/Adjust +++ /dev/null @@ -1 +0,0 @@ -../Adjust \ No newline at end of file diff --git a/AdjustBridge/AdjustBridge.h b/AdjustBridge/AdjustBridge.h index 2de7820ff..9e9f6e0f0 100644 --- a/AdjustBridge/AdjustBridge.h +++ b/AdjustBridge/AdjustBridge.h @@ -1,22 +1,19 @@ // // AdjustBridge.h -// Adjust SDK +// Adjust // // Created by Pedro Filipe (@nonelse) on 27th April 2016. -// Copyright © 2016-2018 Adjust GmbH. All rights reserved. +// Copyright © 2016-Present Adjust GmbH. All rights reserved. // -#import -#import #import -#import "AdjustBridgeRegister.h" +#import @interface AdjustBridge : NSObject -@property (nonatomic, strong, readonly) AdjustBridgeRegister *bridgeRegister; - -- (void)loadWKWebViewBridge:(WKWebView *)wkWebView; -- (void)loadWKWebViewBridge:(WKWebView *)wkWebView wkWebViewDelegate:(id)wkWebViewDelegate; +- (void)loadWKWebViewBridge:(WKWebView *_Nonnull)wkWebView; - (void)augmentHybridWebView; +@property (strong, nonatomic) WKWebView * _Nonnull wkWebView; + @end diff --git a/AdjustBridge/AdjustBridge.m b/AdjustBridge/AdjustBridge.m index 29f4ea80c..da8bdd64e 100644 --- a/AdjustBridge/AdjustBridge.m +++ b/AdjustBridge/AdjustBridge.m @@ -1,45 +1,47 @@ // // AdjustBridge.m -// Adjust SDK +// Adjust // // Created by Pedro Filipe (@nonelse) on 27th April 2016. -// Copyright © 2016-2018 Adjust GmbH. All rights reserved. +// Copyright © 2016-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" -// In case of erroneous import statement try with: -// #import -// (depends how you import the Adjust SDK to your app) - #import "AdjustBridge.h" -#import "ADJAdjustFactory.h" -#import "WKWebViewJavascriptBridge.h" +#import "AdjustBridgeConstants.h" +#import "AdjustBridgeRegister.h" +#import "AdjustBridgeUtil.h" -@interface AdjustBridge() +#import -@property BOOL openDeferredDeeplink; -@property (nonatomic, copy) NSString *fbPixelDefaultEventToken; +@interface AdjustBridge() + +@property BOOL isDeferredDeeplinkOpeningEnabled; @property (nonatomic, copy) NSString *attributionCallbackName; @property (nonatomic, copy) NSString *eventSuccessCallbackName; @property (nonatomic, copy) NSString *eventFailureCallbackName; @property (nonatomic, copy) NSString *sessionSuccessCallbackName; @property (nonatomic, copy) NSString *sessionFailureCallbackName; @property (nonatomic, copy) NSString *deferredDeeplinkCallbackName; +@property (nonatomic, copy) NSString *skanUpdatedCallbackName; +@property (nonatomic, copy) NSString *fbPixelDefaultEventToken; +@property (nonatomic, strong) NSMutableArray *urlStrategyDomains; @property (nonatomic, strong) NSMutableDictionary *fbPixelMapping; +@property (nonatomic, strong) ADJLogger *logger; + @end @implementation AdjustBridge -#pragma mark - Object lifecycle +#pragma mark - Init WKWebView - (id)init { self = [super init]; if (self == nil) { return nil; } - - _bridgeRegister = nil; + self.isDeferredDeeplinkOpeningEnabled = YES; + _logger = [[ADJLogger alloc] init]; [self resetAdjustBridge]; return self; } @@ -51,749 +53,637 @@ - (void)resetAdjustBridge { self.sessionSuccessCallbackName = nil; self.sessionFailureCallbackName = nil; self.deferredDeeplinkCallbackName = nil; + self.skanUpdatedCallbackName = nil; } -#pragma mark - AdjustDelegate methods - -- (void)adjustAttributionChanged:(ADJAttribution *)attribution { - if (self.attributionCallbackName == nil) { - return; +#pragma mark - Public Methods + +- (void)loadWKWebViewBridge:(WKWebView *_Nonnull)wkWebView { + if ([wkWebView isKindOfClass:WKWebView.class]) { + self.wkWebView = wkWebView; + WKUserContentController *controller = wkWebView.configuration.userContentController; + NSString *adjust_js = [AdjustBridgeRegister AdjustBridge_js]; + [controller addUserScript:[[WKUserScript.class alloc] + initWithSource:adjust_js + injectionTime:WKUserScriptInjectionTimeAtDocumentStart + forMainFrameOnly:NO]]; + [controller addScriptMessageHandler:self name:@"adjust"]; } - [self.bridgeRegister callHandler:self.attributionCallbackName data:[attribution dictionary]]; } -- (void)adjustEventTrackingSucceeded:(ADJEventSuccess *)eventSuccessResponseData { - if (self.eventSuccessCallbackName == nil) { +- (void)augmentHybridWebView { + NSString *fbAppId = [self getFbAppId]; + if (fbAppId == nil) { + [self.logger error:@"FacebookAppID is not correctly configured in the pList"]; return; } + [AdjustBridgeRegister augmentHybridWebView:fbAppId]; +} - NSMutableDictionary *eventSuccessResponseDataDictionary = [NSMutableDictionary dictionary]; - [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.message forKey:@"message"]; - [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.timeStamp forKey:@"timestamp"]; - [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.adid forKey:@"adid"]; - [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.eventToken forKey:@"eventToken"]; - [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.callbackId forKey:@"callbackId"]; +#pragma mark - WKWebView Delegate - NSString *jsonResponse = [self convertJsonDictionaryToNSString:eventSuccessResponseData.jsonResponse]; - if (jsonResponse == nil) { - jsonResponse = @"{}"; +- (void)userContentController:(nonnull WKUserContentController *)userContentController + didReceiveScriptMessage:(nonnull WKScriptMessage *)message { + if ([message.body isKindOfClass:[NSDictionary class]]) { + [self handleMessageFromWebview:message.body]; } - [eventSuccessResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; - - [self.bridgeRegister callHandler:self.eventSuccessCallbackName data:eventSuccessResponseDataDictionary]; } -- (void)adjustEventTrackingFailed:(ADJEventFailure *)eventFailureResponseData { - if (self.eventFailureCallbackName == nil) { - return; - } +#pragma mark - Handling Message from WKwebview - NSMutableDictionary *eventFailureResponseDataDictionary = [NSMutableDictionary dictionary]; - [eventFailureResponseDataDictionary setValue:eventFailureResponseData.message forKey:@"message"]; - [eventFailureResponseDataDictionary setValue:eventFailureResponseData.timeStamp forKey:@"timestamp"]; - [eventFailureResponseDataDictionary setValue:eventFailureResponseData.adid forKey:@"adid"]; - [eventFailureResponseDataDictionary setValue:eventFailureResponseData.eventToken forKey:@"eventToken"]; - [eventFailureResponseDataDictionary setValue:eventFailureResponseData.callbackId forKey:@"callbackId"]; - [eventFailureResponseDataDictionary setValue:[NSNumber numberWithBool:eventFailureResponseData.willRetry] forKey:@"willRetry"]; - - NSString *jsonResponse = [self convertJsonDictionaryToNSString:eventFailureResponseData.jsonResponse]; - if (jsonResponse == nil) { - jsonResponse = @"{}"; - } - [eventFailureResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; +- (void)handleMessageFromWebview:(NSDictionary *)message { + NSString *methodName = [message objectForKey:ADJWBMethodNameKey]; + NSString *callbackId = [message objectForKey:ADJWBCallbackIdKey]; + id parameters = [message objectForKey:ADJWBParametersKey]; - [self.bridgeRegister callHandler:self.eventFailureCallbackName data:eventFailureResponseDataDictionary]; -} + if ([methodName isEqual:ADJWBInitSdkMethodName]) { + [self initSdk:parameters]; -- (void)adjustSessionTrackingSucceeded:(ADJSessionSuccess *)sessionSuccessResponseData { - if (self.sessionSuccessCallbackName == nil) { - return; - } + } else if ([methodName isEqual:ADJWBTrackEventMethodName]) { + [self trackEvent:parameters]; - NSMutableDictionary *sessionSuccessResponseDataDictionary = [NSMutableDictionary dictionary]; - [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.message forKey:@"message"]; - [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.timeStamp forKey:@"timestamp"]; - [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.adid forKey:@"adid"]; + } else if ([methodName isEqual:ADJWBGetSdkVersionMethodName]) { + __block NSString *_Nullable localSdkPrefix = [parameters objectForKey:@"sdkPrefix"]; + [Adjust sdkVersionWithCompletionHandler:^(NSString * _Nullable sdkVersion) { + NSString *joinedSdkVersion = [NSString stringWithFormat:@"%@@%@", localSdkPrefix, sdkVersion]; + [self execJsCallbackWithId:callbackId callBackData:joinedSdkVersion]; + }]; - NSString *jsonResponse = [self convertJsonDictionaryToNSString:sessionSuccessResponseData.jsonResponse]; - if (jsonResponse == nil) { - jsonResponse = @"{}"; - } - [sessionSuccessResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; + } else if ([methodName isEqual:ADJWBGetIdfaMethodName]) { + [Adjust idfaWithCompletionHandler:^(NSString * _Nullable idfa) { + [self execJsCallbackWithId:callbackId callBackData:idfa]; + }]; - [self.bridgeRegister callHandler:self.sessionSuccessCallbackName data:sessionSuccessResponseDataDictionary]; -} + } else if ([methodName isEqual:ADJWBGetIdfvMethodName]) { + [Adjust idfvWithCompletionHandler:^(NSString * _Nullable idfv) { + [self execJsCallbackWithId:callbackId callBackData:idfv]; + }]; -- (void)adjustSessionTrackingFailed:(ADJSessionFailure *)sessionFailureResponseData { - if (self.sessionFailureCallbackName == nil) { - return; - } + } else if ([methodName isEqual:ADJWBGetAdidMethodName]) { + [Adjust adidWithCompletionHandler:^(NSString * _Nullable adid) { + [self execJsCallbackWithId:callbackId callBackData:adid]; + }]; - NSMutableDictionary *sessionFailureResponseDataDictionary = [NSMutableDictionary dictionary]; - [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.message forKey:@"message"]; - [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.timeStamp forKey:@"timestamp"]; - [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.adid forKey:@"adid"]; - [sessionFailureResponseDataDictionary setValue:[NSNumber numberWithBool:sessionFailureResponseData.willRetry] forKey:@"willRetry"]; + } else if ([methodName isEqual:ADJWBGetAttributionMethodName]) { + [Adjust attributionWithCompletionHandler:^(ADJAttribution * _Nullable attribution) { + [self execJsCallbackWithId:callbackId callBackData:[attribution dictionary]]; + }]; - NSString *jsonResponse = [self convertJsonDictionaryToNSString:sessionFailureResponseData.jsonResponse]; - if (jsonResponse == nil) { - jsonResponse = @"{}"; - } - [sessionFailureResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; + } else if ([methodName isEqual:ADJWBIsEnabledMethodName]) { + [Adjust isEnabledWithCompletionHandler:^(BOOL isEnabled) { + [self execJsCallbackWithId:callbackId callBackData:@(isEnabled).description]; + }]; - [self.bridgeRegister callHandler:self.sessionFailureCallbackName data:sessionFailureResponseDataDictionary]; -} + } else if ([methodName isEqual:ADJWBRequestAppTrackingMethodName]) { + [Adjust requestAppTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { + [self execJsCallbackWithId:callbackId callBackData:@(status).description]; + }]; -- (BOOL)adjustDeeplinkResponse:(NSURL *)deeplink { - if (self.deferredDeeplinkCallbackName) { - [self.bridgeRegister callHandler:self.deferredDeeplinkCallbackName data:[deeplink absoluteString]]; - } - return self.openDeferredDeeplink; -} + } else if ([methodName isEqual:ADJWBAppTrackingAuthorizationStatus]) { + int appTrackingAuthorizationStatus = [Adjust appTrackingAuthorizationStatus]; + [self execJsCallbackWithId:callbackId callBackData:@(appTrackingAuthorizationStatus).description]; -#pragma mark - Public methods + } else if ([methodName isEqual:ADJWBSwitchToOfflineModeMethodName]) { + [Adjust switchToOfflineMode]; -- (void)augmentHybridWebView { - NSString *fbAppId = [self getFbAppId]; + } else if ([methodName isEqual:ADJWBSwitchBackToOnlineMode]) { + [Adjust switchBackToOnlineMode]; - if (fbAppId == nil) { - [[ADJAdjustFactory logger] error:@"FacebookAppID is not correctly configured in the pList"]; - return; - } - [_bridgeRegister augmentHybridWebView:fbAppId]; - [self registerAugmentedView]; -} + } else if ([methodName isEqual:ADJWBEnableMethodName]) { + [Adjust enable]; -- (void)loadWKWebViewBridge:(WKWebView *)wkWebView { - [self loadWKWebViewBridge:wkWebView wkWebViewDelegate:nil]; -} + } else if ([methodName isEqual:ADJWBDisableMethodName]) { + [Adjust disable]; -- (void)loadWKWebViewBridge:(WKWebView *)wkWebView - wkWebViewDelegate:(id)wkWebViewDelegate { - if (self.bridgeRegister != nil) { - // WebViewBridge already loaded. - return; - } + } else if ([methodName isEqual:ADJWBTrackSubsessionStartMethodName]) { + [Adjust trackSubsessionStart]; - _bridgeRegister = [[AdjustBridgeRegister alloc] initWithWKWebView:wkWebView]; - [self.bridgeRegister setWKWebViewDelegate:wkWebViewDelegate]; - - [self.bridgeRegister registerHandler:@"adjust_appDidLaunch" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *appToken = [data objectForKey:@"appToken"]; - NSString *environment = [data objectForKey:@"environment"]; - NSString *allowSuppressLogLevel = [data objectForKey:@"allowSuppressLogLevel"]; - NSString *sdkPrefix = [data objectForKey:@"sdkPrefix"]; - NSString *defaultTracker = [data objectForKey:@"defaultTracker"]; - NSString *externalDeviceId = [data objectForKey:@"externalDeviceId"]; - NSString *logLevel = [data objectForKey:@"logLevel"]; - NSNumber *eventBufferingEnabled = [data objectForKey:@"eventBufferingEnabled"]; - NSNumber *coppaCompliantEnabled = [data objectForKey:@"coppaCompliantEnabled"]; - NSNumber *linkMeEnabled = [data objectForKey:@"linkMeEnabled"]; - NSNumber *sendInBackground = [data objectForKey:@"sendInBackground"]; - NSNumber *delayStart = [data objectForKey:@"delayStart"]; - NSString *userAgent = [data objectForKey:@"userAgent"]; - NSNumber *isDeviceKnown = [data objectForKey:@"isDeviceKnown"]; - NSNumber *needsCost = [data objectForKey:@"needsCost"]; - NSNumber *allowAdServicesInfoReading = [data objectForKey:@"allowAdServicesInfoReading"]; - NSNumber *allowIdfaReading = [data objectForKey:@"allowIdfaReading"]; - NSNumber *allowSkAdNetworkHandling = [data objectForKey:@"allowSkAdNetworkHandling"]; - NSNumber *secretId = [data objectForKey:@"secretId"]; - NSString *info1 = [data objectForKey:@"info1"]; - NSString *info2 = [data objectForKey:@"info2"]; - NSString *info3 = [data objectForKey:@"info3"]; - NSString *info4 = [data objectForKey:@"info4"]; - NSNumber *openDeferredDeeplink = [data objectForKey:@"openDeferredDeeplink"]; - NSString *fbPixelDefaultEventToken = [data objectForKey:@"fbPixelDefaultEventToken"]; - id fbPixelMapping = [data objectForKey:@"fbPixelMapping"]; - NSString *attributionCallback = [data objectForKey:@"attributionCallback"]; - NSString *eventSuccessCallback = [data objectForKey:@"eventSuccessCallback"]; - NSString *eventFailureCallback = [data objectForKey:@"eventFailureCallback"]; - NSString *sessionSuccessCallback = [data objectForKey:@"sessionSuccessCallback"]; - NSString *sessionFailureCallback = [data objectForKey:@"sessionFailureCallback"]; - NSString *deferredDeeplinkCallback = [data objectForKey:@"deferredDeeplinkCallback"]; - NSString *urlStrategy = [data objectForKey:@"urlStrategy"]; - NSNumber *readDeviceInfoOnceEnabled = [data objectForKey:@"readDeviceInfoOnceEnabled"]; - NSNumber *attConsentWaitingSeconds = [data objectForKey:@"attConsentWaitingSeconds"]; - - ADJConfig *adjustConfig; - if ([self isFieldValid:allowSuppressLogLevel]) { - adjustConfig = [ADJConfig configWithAppToken:appToken environment:environment allowSuppressLogLevel:[allowSuppressLogLevel boolValue]]; - } else { - adjustConfig = [ADJConfig configWithAppToken:appToken environment:environment]; - } + } else if ([methodName isEqual:ADJWBTrackSubsessionEndMethodName]) { + [Adjust trackSubsessionEnd]; - // No need to continue if adjust config is not valid. - if (![adjustConfig isValid]) { + } else if ([methodName isEqual:ADJWBTrackMeasurementConsentMethodName]) { + if (![parameters isKindOfClass:[NSNumber class]]) { return; } + [Adjust trackMeasurementConsent:[(NSNumber *)parameters boolValue]]; - if ([self isFieldValid:sdkPrefix]) { - [adjustConfig setSdkPrefix:sdkPrefix]; - } - if ([self isFieldValid:defaultTracker]) { - [adjustConfig setDefaultTracker:defaultTracker]; - } - if ([self isFieldValid:externalDeviceId]) { - [adjustConfig setExternalDeviceId:externalDeviceId]; - } - if ([self isFieldValid:logLevel]) { - [adjustConfig setLogLevel:[ADJLogger logLevelFromString:[logLevel lowercaseString]]]; - } - if ([self isFieldValid:eventBufferingEnabled]) { - [adjustConfig setEventBufferingEnabled:[eventBufferingEnabled boolValue]]; - } - if ([self isFieldValid:coppaCompliantEnabled]) { - [adjustConfig setCoppaCompliantEnabled:[coppaCompliantEnabled boolValue]]; - } - if ([self isFieldValid:linkMeEnabled]) { - [adjustConfig setLinkMeEnabled:[linkMeEnabled boolValue]]; - } - if ([self isFieldValid:sendInBackground]) { - [adjustConfig setSendInBackground:[sendInBackground boolValue]]; - } - if ([self isFieldValid:delayStart]) { - [adjustConfig setDelayStart:[delayStart doubleValue]]; - } - if ([self isFieldValid:userAgent]) { - [adjustConfig setUserAgent:userAgent]; - } - if ([self isFieldValid:isDeviceKnown]) { - [adjustConfig setIsDeviceKnown:[isDeviceKnown boolValue]]; - } - if ([self isFieldValid:needsCost]) { - [adjustConfig setNeedsCost:[needsCost boolValue]]; - } - if ([self isFieldValid:allowAdServicesInfoReading]) { - [adjustConfig setAllowAdServicesInfoReading:[allowAdServicesInfoReading boolValue]]; - } - if ([self isFieldValid:allowIdfaReading]) { - [adjustConfig setAllowIdfaReading:[allowIdfaReading boolValue]]; - } - if ([self isFieldValid:attConsentWaitingSeconds]) { - [adjustConfig setAttConsentWaitingInterval:[attConsentWaitingSeconds doubleValue]]; - } - if ([self isFieldValid:allowSkAdNetworkHandling]) { - if ([allowSkAdNetworkHandling boolValue] == NO) { - [adjustConfig deactivateSKAdNetworkHandling]; - } - } - BOOL isAppSecretDefined = [self isFieldValid:secretId] - && [self isFieldValid:info1] - && [self isFieldValid:info2] - && [self isFieldValid:info3] - && [self isFieldValid:info4]; - if (isAppSecretDefined) { - [adjustConfig setAppSecret:[[self fieldToNSNumber:secretId] unsignedIntegerValue] - info1:[[self fieldToNSNumber:info1] unsignedIntegerValue] - info2:[[self fieldToNSNumber:info2] unsignedIntegerValue] - info3:[[self fieldToNSNumber:info3] unsignedIntegerValue] - info4:[[self fieldToNSNumber:info4] unsignedIntegerValue]]; - } - if ([self isFieldValid:openDeferredDeeplink]) { - self.openDeferredDeeplink = [openDeferredDeeplink boolValue]; - } - if ([self isFieldValid:fbPixelDefaultEventToken]) { - self.fbPixelDefaultEventToken = fbPixelDefaultEventToken; - } - if ([fbPixelMapping count] > 0) { - self.fbPixelMapping = [[NSMutableDictionary alloc] initWithCapacity:[fbPixelMapping count] / 2]; - } - for (int i = 0; i < [fbPixelMapping count]; i += 2) { - NSString *key = [[fbPixelMapping objectAtIndex:i] description]; - NSString *value = [[fbPixelMapping objectAtIndex:(i + 1)] description]; - [self.fbPixelMapping setObject:value forKey:key]; - } - if ([self isFieldValid:attributionCallback]) { - self.attributionCallbackName = attributionCallback; - } - if ([self isFieldValid:eventSuccessCallback]) { - self.eventSuccessCallbackName = eventSuccessCallback; - } - if ([self isFieldValid:eventFailureCallback]) { - self.eventFailureCallbackName = eventFailureCallback; - } - if ([self isFieldValid:sessionSuccessCallback]) { - self.sessionSuccessCallbackName = sessionSuccessCallback; - } - if ([self isFieldValid:sessionFailureCallback]) { - self.sessionFailureCallbackName = sessionFailureCallback; - } - if ([self isFieldValid:deferredDeeplinkCallback]) { - self.deferredDeeplinkCallbackName = deferredDeeplinkCallback; - } + } else if ([methodName isEqual:ADJWBAddGlobalCallbackParameterMethodName]) { + NSString *key = [parameters objectForKey:ADJWBKvKeyKey]; + NSString *value = [parameters objectForKey:ADJWBKvValueKey]; + [Adjust addGlobalCallbackParameter:value forKey:key]; - // Set self as delegate if any callback is configured. - // Change to swizzle the methods in the future. - if (self.attributionCallbackName != nil - || self.eventSuccessCallbackName != nil - || self.eventFailureCallbackName != nil - || self.sessionSuccessCallbackName != nil - || self.sessionFailureCallbackName != nil - || self.deferredDeeplinkCallbackName != nil) { - [adjustConfig setDelegate:self]; - } - if ([self isFieldValid:urlStrategy]) { - [adjustConfig setUrlStrategy:urlStrategy]; - } - if ([self isFieldValid:readDeviceInfoOnceEnabled]) { - [adjustConfig setReadDeviceInfoOnceEnabled:[readDeviceInfoOnceEnabled boolValue]]; + } else if ([methodName isEqual:ADJWBRemoveGlobalCallbackParameterMethodName]) { + if (![parameters isKindOfClass:[NSString class]]) { + return; } + [Adjust removeGlobalCallbackParameterForKey:(NSString *)parameters]; - [Adjust appDidLaunch:adjustConfig]; - [Adjust trackSubsessionStart]; - }]; + } else if ([methodName isEqual:ADJWBRemoveGlobalCallbackParametersMethodName]) { + [Adjust removeGlobalCallbackParameters]; - [self.bridgeRegister registerHandler:@"adjust_trackEvent" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *eventToken = [data objectForKey:@"eventToken"]; - NSString *revenue = [data objectForKey:@"revenue"]; - NSString *currency = [data objectForKey:@"currency"]; - NSString *transactionId = [data objectForKey:@"transactionId"]; - id callbackParameters = [data objectForKey:@"callbackParameters"]; - id partnerParameters = [data objectForKey:@"partnerParameters"]; - NSString *callbackId = [data objectForKey:@"callbackId"]; - - ADJEvent *adjustEvent = [ADJEvent eventWithEventToken:eventToken]; - // No need to continue if adjust event is not valid - if (![adjustEvent isValid]) { - return; - } + } else if ([methodName isEqual:ADJWBAddGlobalPartnerParameterMethodName]) { + NSString *key = [parameters objectForKey:ADJWBKvKeyKey]; + NSString *value = [parameters objectForKey:ADJWBKvValueKey]; + [Adjust addGlobalPartnerParameter:value forKey:key]; - if ([self isFieldValid:revenue] && [self isFieldValid:currency]) { - double revenueValue = [revenue doubleValue]; - [adjustEvent setRevenue:revenueValue currency:currency]; - } - if ([self isFieldValid:transactionId]) { - [adjustEvent setTransactionId:transactionId]; - } - for (int i = 0; i < [callbackParameters count]; i += 2) { - NSString *key = [[callbackParameters objectAtIndex:i] description]; - NSString *value = [[callbackParameters objectAtIndex:(i + 1)] description]; - [adjustEvent addCallbackParameter:key value:value]; - } - for (int i = 0; i < [partnerParameters count]; i += 2) { - NSString *key = [[partnerParameters objectAtIndex:i] description]; - NSString *value = [[partnerParameters objectAtIndex:(i + 1)] description]; - [adjustEvent addPartnerParameter:key value:value]; - } - if ([self isFieldValid:callbackId]) { - [adjustEvent setCallbackId:callbackId]; + } else if ([methodName isEqual:ADJWBRemoveGlobalPartnerParameterMethodName]) { + if (![parameters isKindOfClass:[NSString class]]) { + return; } + [Adjust removeGlobalPartnerParameterForKey:(NSString *)parameters]; - [Adjust trackEvent:adjustEvent]; - }]; + } else if ([methodName isEqual:ADJWBRemoveGlobalPartnerParametersMethodName]) { + [Adjust removeGlobalPartnerParameters]; - [self.bridgeRegister registerHandler:@"adjust_trackSubsessionStart" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust trackSubsessionStart]; - }]; + } else if ([methodName isEqual:ADJWBGdprForgetMeMethodName]) { + [Adjust gdprForgetMe]; - [self.bridgeRegister registerHandler:@"adjust_trackSubsessionEnd" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust trackSubsessionEnd]; - }]; + } else if ([methodName isEqual:ADJWBTrackThirdPartySharingMethodName]) { + [self trackThirdPartySharing:parameters]; - [self.bridgeRegister registerHandler:@"adjust_setEnabled" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSNumber class]]) { - return; - } - [Adjust setEnabled:[(NSNumber *)data boolValue]]; - }]; + } else if ([methodName isEqual:ADJWBSetTestOptionsMethodName]) { + [self setTestOptions:parameters]; - [self.bridgeRegister registerHandler:@"adjust_isEnabled" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; - } - responseCallback([NSNumber numberWithBool:[Adjust isEnabled]]); - }]; + } else if ([methodName isEqual:ADJWBFBPixelEventMethodName]) { + [self trackFbPixelEvent:parameters]; + } +} - [self.bridgeRegister registerHandler:@"adjust_appWillOpenUrl" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust appWillOpenUrl:[NSURL URLWithString:data]]; - }]; +- (void)initSdk:(id)parameters { + NSString *appToken = [parameters objectForKey:ADJWBAppTokenConfigKey]; + NSString *environment = [parameters objectForKey:ADJWBEnvironmentConfigKey]; + NSString *allowSuppressLogLevel = [parameters objectForKey:ADJWBAllowSuppressLogLevelConfigKey]; + NSString *sdkPrefix = [parameters objectForKey:ADJWBSdkPrefixConfigKey]; + NSString *defaultTracker = [parameters objectForKey:ADJWBDefaultTrackerConfigKey]; + NSString *externalDeviceId = [parameters objectForKey:ADJWBExternalDeviceIdConfigKey]; + NSString *logLevel = [parameters objectForKey:ADJWBLogLevelConfigKey]; + NSNumber *sendInBackground = [parameters objectForKey:ADJWBSendInBackgroundConfigKey]; + NSNumber *isCostDataInAttributionEnabled = [parameters objectForKey:ADJWBNeedsCostConfigKey]; + NSNumber *isAdServicesEnabled = [parameters objectForKey:ADJWBAllowAdServicesInfoReadingConfigKey]; + NSNumber *isIdfaReadingAllowed = [parameters objectForKey:ADJWBIsIdfaReadingAllowedConfigKey]; + NSNumber *isSkanAttributionHandlingEnabled = [parameters objectForKey:ADJWBIsSkanAttributionHandlingEnabledConfigKey]; + NSNumber *isDeferredDeeplinkOpeningEnabled = [parameters objectForKey:ADJWBIsDeferredDeeplinkOpeningEnabledConfigKey]; + NSNumber *isCoppaComplianceEnabled = [parameters objectForKey:ADJWBIsCoppaComplianceEnabledConfigKey]; + NSNumber *shouldReadDeviceInfoOnce = [parameters objectForKey:ADJWBReadDeviceInfoOnceEnabledConfigKey]; + NSNumber *attConsentWaitingSeconds = [parameters objectForKey:ADJWBAttConsentWaitingSecondsConfigKey]; + NSNumber *eventDeduplicationIdsMaxSize = [parameters objectForKey:ADJWBEventDeduplicationIdsMaxSizeConfigKey]; + + id urlStrategyDomains = [parameters objectForKey:ADJWBUseStrategyDomainsConfigKey]; + NSNumber *useSubdomains = [parameters objectForKey:ADJWBUseSubdomainsConfigKey]; + NSNumber *isDataResidency = [parameters objectForKey:ADJWBIsDataResidencyConfigKey]; + + //Adjust's callbacks + NSString *attributionCallback = [parameters objectForKey:ADJWBAttributionCallbackConfigKey]; + NSString *eventSuccessCallback = [parameters objectForKey:ADJWBEventSuccessCallbackConfigKey]; + NSString *eventFailureCallback = [parameters objectForKey:ADJWBEventFailureCallbackConfigKey]; + NSString *sessionSuccessCallback = [parameters objectForKey:ADJWBSessionSuccessCallbackConfigKey]; + NSString *sessionFailureCallback = [parameters objectForKey:ADJWBSessionFailureCallbackConfigKey]; + NSString *skanUpdatedCallback = [parameters objectForKey:ADJWBSkanUpdatedCallbackConfigKey]; + NSString *deferredDeeplinkCallback = [parameters objectForKey:ADJWBDeferredDeeplinkCallbackConfigKey]; + + //Fb parameters + NSString *fbPixelDefaultEventToken = [parameters objectForKey:ADJWBFbPixelDefaultEventTokenConfigKey]; + id fbPixelMapping = [parameters objectForKey:ADJWBFbPixelMappingConfigKey]; + + ADJConfig *adjustConfig; + if ([AdjustBridgeUtil isFieldValid:allowSuppressLogLevel]) { + adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken + environment:environment + suppressLogLevel:[allowSuppressLogLevel boolValue]]; + } else { + adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken environment:environment]; + } - [self.bridgeRegister registerHandler:@"adjust_setDeviceToken" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSString class]]) { - return; - } - [Adjust setPushToken:(NSString *)data]; - }]; + if (![adjustConfig isValid]) { + return; + } - [self.bridgeRegister registerHandler:@"adjust_setOfflineMode" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSNumber class]]) { - return; + if ([AdjustBridgeUtil isFieldValid:sdkPrefix]) { + [adjustConfig setSdkPrefix:sdkPrefix]; + } + if ([AdjustBridgeUtil isFieldValid:defaultTracker]) { + [adjustConfig setDefaultTracker:defaultTracker]; + } + if ([AdjustBridgeUtil isFieldValid:externalDeviceId]) { + [adjustConfig setExternalDeviceId:externalDeviceId]; + } + if ([AdjustBridgeUtil isFieldValid:logLevel]) { + [adjustConfig setLogLevel:[ADJLogger logLevelFromString:[logLevel lowercaseString]]]; + } + if ([AdjustBridgeUtil isFieldValid:sendInBackground]) { + if ([sendInBackground boolValue] == YES) { + [adjustConfig enableSendingInBackground]; } - [Adjust setOfflineMode:[(NSNumber *)data boolValue]]; - }]; - - [self.bridgeRegister registerHandler:@"adjust_sdkVersion" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; + } + if ([AdjustBridgeUtil isFieldValid:isCostDataInAttributionEnabled]) { + if ([isCostDataInAttributionEnabled boolValue] == YES) { + [adjustConfig enableCostDataInAttribution]; } - - NSString *sdkPrefix = (NSString *)data; - NSString *sdkVersion = [NSString stringWithFormat:@"%@@%@", sdkPrefix, [Adjust sdkVersion]]; - responseCallback(sdkVersion); - }]; - - [self.bridgeRegister registerHandler:@"adjust_idfa" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; + } + if ([AdjustBridgeUtil isFieldValid:isAdServicesEnabled]) { + if ([isAdServicesEnabled boolValue] == NO) { + [adjustConfig disableAdServices]; } - responseCallback([Adjust idfa]); - }]; - - [self.bridgeRegister registerHandler:@"adjust_idfv" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; + } + if ([AdjustBridgeUtil isFieldValid:isCoppaComplianceEnabled]) { + if ([isCoppaComplianceEnabled boolValue] == YES) { + [adjustConfig enableCoppaCompliance]; } - responseCallback([Adjust idfv]); - }]; + } + if ([AdjustBridgeUtil isFieldValid:isDeferredDeeplinkOpeningEnabled]) { + self.isDeferredDeeplinkOpeningEnabled = [isDeferredDeeplinkOpeningEnabled boolValue]; + } - [self.bridgeRegister registerHandler:@"adjust_requestTrackingAuthorizationWithCompletionHandler" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; - } - - [Adjust requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { - responseCallback([NSNumber numberWithUnsignedInteger:status]); - }]; - }]; - - [self.bridgeRegister registerHandler:@"adjust_appTrackingAuthorizationStatus" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; + if ([AdjustBridgeUtil isFieldValid:isIdfaReadingAllowed]) { + if ([isIdfaReadingAllowed boolValue] == NO) { + [adjustConfig disableIdfaReading]; } - - responseCallback([NSNumber numberWithInt:[Adjust appTrackingAuthorizationStatus]]); - }]; - - [self.bridgeRegister registerHandler:@"adjust_updateConversionValue" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSNumber class]]) { - return; + } + + if ([AdjustBridgeUtil isFieldValid:attConsentWaitingSeconds]) { + [adjustConfig setAttConsentWaitingInterval:[attConsentWaitingSeconds doubleValue]]; + } + + if ([AdjustBridgeUtil isFieldValid:isSkanAttributionHandlingEnabled]) { + if ([isSkanAttributionHandlingEnabled boolValue] == NO) { + [adjustConfig disableSkanAttribution]; } - [Adjust updateConversionValue:[(NSNumber *)data integerValue]]; - }]; + } - [self.bridgeRegister registerHandler:@"adjust_updateConversionValueCompletionHandler" - handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSNumber class]]) { - return; + if ([AdjustBridgeUtil isFieldValid:shouldReadDeviceInfoOnce]) { + if ([shouldReadDeviceInfoOnce boolValue] == YES) { + [adjustConfig enableDeviceIdsReadingOnce]; } - [Adjust updatePostbackConversionValue:[(NSNumber *)data integerValue] - completionHandler:^(NSError * _Nullable error) { - if (error != nil) { - responseCallback([NSString stringWithFormat:@"%@", error]); - } - }]; - }]; + } - [self.bridgeRegister registerHandler:@"adjust_updateConversionValueCoarseValueCompletionHandler" - handler:^(id data, WVJBResponseCallback responseCallback) { - NSNumber *conversionValue = [data objectForKey:@"conversionValue"]; - NSString *coarseValue = [data objectForKey:@"coarseValue"]; - [Adjust updatePostbackConversionValue:[conversionValue integerValue] - coarseValue:coarseValue - completionHandler:^(NSError * _Nullable error) { - if (error != nil) { - responseCallback([NSString stringWithFormat:@"%@", error]); - } - }]; - }]; + if ([AdjustBridgeUtil isFieldValid:eventDeduplicationIdsMaxSize]) { + [adjustConfig setEventDeduplicationIdsMaxSize:[eventDeduplicationIdsMaxSize integerValue]]; + } - [self.bridgeRegister registerHandler:@"adjust_updateConversionValueCoarseValueLockWindowCompletionHandler" - handler:^(id data, WVJBResponseCallback responseCallback) { - NSNumber *conversionValue = [data objectForKey:@"conversionValue"]; - NSString *coarseValue = [data objectForKey:@"coarseValue"]; - NSNumber *lockWindow = [data objectForKey:@"lockWindow"]; - [Adjust updatePostbackConversionValue:[conversionValue integerValue] - coarseValue:coarseValue - lockWindow:[lockWindow boolValue] - completionHandler:^(NSError * _Nullable error) { - if (error != nil) { - responseCallback([NSString stringWithFormat:@"%@", error]); - } - }]; - }]; + //fb parameters handling + if ([AdjustBridgeUtil isFieldValid:fbPixelDefaultEventToken]) { + self.fbPixelDefaultEventToken = fbPixelDefaultEventToken; + } - [self.bridgeRegister registerHandler:@"adjust_adid" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; - } - responseCallback([Adjust adid]); - }]; + if ([fbPixelMapping count] > 0) { + self.fbPixelMapping = [[NSMutableDictionary alloc] initWithCapacity:[fbPixelMapping count] / 2]; + } - [self.bridgeRegister registerHandler:@"adjust_attribution" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; - } + for (int i = 0; i < [fbPixelMapping count]; i += 2) { + NSString *key = [[fbPixelMapping objectAtIndex:i] description]; + NSString *value = [[fbPixelMapping objectAtIndex:(i + 1)] description]; + [self.fbPixelMapping setObject:value forKey:key]; + } + + if ([AdjustBridgeUtil isFieldValid:attributionCallback]) { + self.attributionCallbackName = attributionCallback; + } + if ([AdjustBridgeUtil isFieldValid:eventSuccessCallback]) { + self.eventSuccessCallbackName = eventSuccessCallback; + } + if ([AdjustBridgeUtil isFieldValid:eventFailureCallback]) { + self.eventFailureCallbackName = eventFailureCallback; + } + if ([AdjustBridgeUtil isFieldValid:sessionSuccessCallback]) { + self.sessionSuccessCallbackName = sessionSuccessCallback; + } + if ([AdjustBridgeUtil isFieldValid:sessionFailureCallback]) { + self.sessionFailureCallbackName = sessionFailureCallback; + } + if ([AdjustBridgeUtil isFieldValid:deferredDeeplinkCallback]) { + self.deferredDeeplinkCallbackName = deferredDeeplinkCallback; + } + if ([AdjustBridgeUtil isFieldValid:skanUpdatedCallback]) { + self.skanUpdatedCallbackName = skanUpdatedCallback; + } - ADJAttribution *attribution = [Adjust attribution]; - NSDictionary *attributionDictionary = nil; - if (attribution != nil) { - attributionDictionary = [attribution dictionary]; + // set self as delegate if any callback is configured + // change to swizzle the methods in the future + if (self.attributionCallbackName != nil + || self.eventSuccessCallbackName != nil + || self.eventFailureCallbackName != nil + || self.sessionSuccessCallbackName != nil + || self.sessionFailureCallbackName != nil + || self.deferredDeeplinkCallbackName != nil + || self.skanUpdatedCallbackName != nil) { + [adjustConfig setDelegate:self]; + } + + // URL strategy + if (urlStrategyDomains != nil && [urlStrategyDomains count] > 0) { + self.urlStrategyDomains = [[NSMutableArray alloc] initWithCapacity:[urlStrategyDomains count]]; + for (int i = 0; i < [urlStrategyDomains count]; i += 1) { + NSString *domain = [[urlStrategyDomains objectAtIndex:i] description]; + [self.urlStrategyDomains addObject:domain]; } + } + if ([AdjustBridgeUtil isFieldValid:useSubdomains] && [AdjustBridgeUtil isFieldValid:isDataResidency]) { + [adjustConfig setUrlStrategy:(NSArray *)self.urlStrategyDomains + useSubdomains:[useSubdomains boolValue] + isDataResidency:[isDataResidency boolValue]]; + } - responseCallback(attributionDictionary); - }]; + [Adjust initSdk:adjustConfig]; +} - [self.bridgeRegister registerHandler:@"adjust_sendFirstPackages" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust sendFirstPackages]; - }]; +- (void)trackEvent:(NSDictionary *)parameters { + NSString *eventToken = [parameters objectForKey:ADJWBEventTokenEventKey]; + NSString *revenue = [parameters objectForKey:ADJWBRevenueEventKey]; + NSString *currency = [parameters objectForKey:ADJWBCurrencyEventKey]; + NSString *deduplicationId = [parameters objectForKey:ADJWBDeduplicationIdEventKey]; + NSString *callbackId = [parameters objectForKey:ADJWBCallbackIdEventKey]; + id callbackParameters = [parameters objectForKey:ADJWBCallbackParametersEventKey]; + id partnerParameters = [parameters objectForKey:ADJWBPartnerParametersEventKey]; - [self.bridgeRegister registerHandler:@"adjust_addSessionCallbackParameter" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *key = [data objectForKey:@"key"]; - NSString *value = [data objectForKey:@"value"]; - [Adjust addSessionCallbackParameter:key value:value]; - }]; + ADJEvent *_Nonnull adjEvent = [[ADJEvent alloc] initWithEventToken:eventToken]; - [self.bridgeRegister registerHandler:@"adjust_addSessionPartnerParameter" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *key = [data objectForKey:@"key"]; - NSString *value = [data objectForKey:@"value"]; - [Adjust addSessionPartnerParameter:key value:value]; - }]; + if ([AdjustBridgeUtil isFieldValid:callbackId]) { + [adjEvent setCallbackId:callbackId]; + } - [self.bridgeRegister registerHandler:@"adjust_removeSessionCallbackParameter" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSString class]]) { - return; - } - [Adjust removeSessionCallbackParameter:(NSString *)data]; - }]; + if ([AdjustBridgeUtil isFieldValid:deduplicationId]) { + [adjEvent setDeduplicationId:deduplicationId]; + } - [self.bridgeRegister registerHandler:@"adjust_removeSessionPartnerParameter" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSString class]]) { - return; - } - [Adjust removeSessionPartnerParameter:(NSString *)data]; - }]; + if ([AdjustBridgeUtil isFieldValid:revenue] && [AdjustBridgeUtil isFieldValid:currency]) { + double revenueValue = [revenue doubleValue]; + [adjEvent setRevenue:revenueValue currency:currency]; + } + for (int i = 0; i < [callbackParameters count]; i += 2) { + NSString *key = [[callbackParameters objectAtIndex:i] description]; + NSString *value = [[callbackParameters objectAtIndex:(i + 1)] description]; + [adjEvent addCallbackParameter:key value:value]; + } + for (int i = 0; i < [partnerParameters count]; i += 2) { + NSString *key = [[partnerParameters objectAtIndex:i] description]; + NSString *value = [[partnerParameters objectAtIndex:(i + 1)] description]; + [adjEvent addPartnerParameter:key value:value]; + } - [self.bridgeRegister registerHandler:@"adjust_resetSessionCallbackParameters" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust resetSessionCallbackParameters]; - }]; + [Adjust trackEvent:adjEvent]; +} - [self.bridgeRegister registerHandler:@"adjust_resetSessionPartnerParameters" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust resetSessionPartnerParameters]; - }]; +- (void)trackThirdPartySharing:(NSDictionary *)parameters { + id isEnabledO = [parameters objectForKey:ADJWBIsEnabledTPSKey]; + id granularOptions = [parameters objectForKey:ADJWBGranularOptionsTPSKey]; + id partnerSharingSettings = [parameters objectForKey:ADJWBPartnerSharingSettingTPSKey]; - [self.bridgeRegister registerHandler:@"adjust_gdprForgetMe" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust gdprForgetMe]; - }]; - - [self.bridgeRegister registerHandler:@"adjust_trackAdRevenue" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *source = [data objectForKey:@"source"]; - NSString *payload = [data objectForKey:@"payload"]; - NSData *dataPayload = [payload dataUsingEncoding:NSUTF8StringEncoding]; - [Adjust trackAdRevenue:source payload:dataPayload]; - }]; - - [self.bridgeRegister registerHandler:@"adjust_disableThirdPartySharing" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust disableThirdPartySharing]; - }]; + NSNumber *isEnabled = nil; + if ([isEnabledO isKindOfClass:[NSNumber class]]) { + isEnabled = (NSNumber *)isEnabledO; + } - [self.bridgeRegister registerHandler:@"adjust_trackThirdPartySharing" handler:^(id data, WVJBResponseCallback responseCallback) { - id isEnabledO = [data objectForKey:@"isEnabled"]; - id granularOptions = [data objectForKey:@"granularOptions"]; - id partnerSharingSettings = [data objectForKey:@"partnerSharingSettings"]; + ADJThirdPartySharing *adjustThirdPartySharing = [[ADJThirdPartySharing alloc] initWithIsEnabled:isEnabled]; - NSNumber *isEnabled = nil; - if ([isEnabledO isKindOfClass:[NSNumber class]]) { - isEnabled = (NSNumber *)isEnabledO; - } - ADJThirdPartySharing *adjustThirdPartySharing = - [[ADJThirdPartySharing alloc] initWithIsEnabledNumberBool:isEnabled]; - for (int i = 0; i < [granularOptions count]; i += 3) { - NSString *partnerName = [[granularOptions objectAtIndex:i] description]; - NSString *key = [[granularOptions objectAtIndex:(i + 1)] description]; - NSString *value = [[granularOptions objectAtIndex:(i + 2)] description]; - [adjustThirdPartySharing addGranularOption:partnerName key:key value:value]; - } - for (int i = 0; i < [partnerSharingSettings count]; i += 3) { - NSString *partnerName = [[partnerSharingSettings objectAtIndex:i] description]; - NSString *key = [[partnerSharingSettings objectAtIndex:(i + 1)] description]; - BOOL value = [[partnerSharingSettings objectAtIndex:(i + 2)] boolValue]; - [adjustThirdPartySharing addPartnerSharingSetting:partnerName key:key value:value]; - } + for (int i = 0; i < [granularOptions count]; i += 3) { + NSString *partnerName = [[granularOptions objectAtIndex:i] description]; + NSString *key = [[granularOptions objectAtIndex:(i + 1)] description]; + NSString *value = [[granularOptions objectAtIndex:(i + 2)] description]; + [adjustThirdPartySharing addGranularOption:partnerName key:key value:value]; + } + for (int i = 0; i < [partnerSharingSettings count]; i += 3) { + NSString *partnerName = [[partnerSharingSettings objectAtIndex:i] description]; + NSString *key = [[partnerSharingSettings objectAtIndex:(i + 1)] description]; + BOOL value = [[partnerSharingSettings objectAtIndex:(i + 2)] boolValue]; + [adjustThirdPartySharing addPartnerSharingSetting:partnerName key:key value:value]; + } - [Adjust trackThirdPartySharing:adjustThirdPartySharing]; - }]; + [Adjust trackThirdPartySharing:adjustThirdPartySharing]; +} - [self.bridgeRegister registerHandler:@"adjust_trackMeasurementConsent" handler:^(id data, WVJBResponseCallback responseCallback) { - if (![data isKindOfClass:[NSNumber class]]) { - return; - } - [Adjust trackMeasurementConsent:[(NSNumber *)data boolValue]]; - }]; +- (void)setTestOptions:(NSDictionary *)data { + [Adjust setTestOptions:[AdjustBridgeUtil getTestOptions:data]]; - [self.bridgeRegister registerHandler:@"adjust_checkForNewAttStatus" handler:^(id data, WVJBResponseCallback responseCallback) { - [Adjust checkForNewAttStatus]; - }]; + NSNumber *teardown = [data objectForKey:@"teardown"]; + if ([AdjustBridgeUtil isFieldValid:teardown] && [teardown boolValue] == YES) { + [self resetAdjustBridge]; + } +} - [self.bridgeRegister registerHandler:@"adjust_lastDeeplink" handler:^(id data, WVJBResponseCallback responseCallback) { - if (responseCallback == nil) { - return; - } - NSURL *lastDeeplink = [Adjust lastDeeplink]; - responseCallback(lastDeeplink != nil ? [lastDeeplink absoluteString] : nil); - }]; +#pragma mark - Native to Javascript Callback Handling - [self.bridgeRegister registerHandler:@"adjust_setTestOptions" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *urlOverwrite = [data objectForKey:@"urlOverwrite"]; - NSString *extraPath = [data objectForKey:@"extraPath"]; - NSNumber *timerIntervalInMilliseconds = [data objectForKey:@"timerIntervalInMilliseconds"]; - NSNumber *timerStartInMilliseconds = [data objectForKey:@"timerStartInMilliseconds"]; - NSNumber *sessionIntervalInMilliseconds = [data objectForKey:@"sessionIntervalInMilliseconds"]; - NSNumber *subsessionIntervalInMilliseconds = [data objectForKey:@"subsessionIntervalInMilliseconds"]; - NSNumber *teardown = [data objectForKey:@"teardown"]; - NSNumber *deleteState = [data objectForKey:@"deleteState"]; - NSNumber *noBackoffWait = [data objectForKey:@"noBackoffWait"]; - NSNumber *adServicesFrameworkEnabled = [data objectForKey:@"adServicesFrameworkEnabled"]; - NSNumber *attStatus = [data objectForKey:@"attStatus"]; - NSString *idfa = [data objectForKey:@"idfa"]; - - AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init]; - - if ([self isFieldValid:urlOverwrite]) { - testOptions.urlOverwrite = urlOverwrite; - } - if ([self isFieldValid:extraPath]) { - testOptions.extraPath = extraPath; - } - if ([self isFieldValid:timerIntervalInMilliseconds]) { - testOptions.timerIntervalInMilliseconds = timerIntervalInMilliseconds; - } - if ([self isFieldValid:timerStartInMilliseconds]) { - testOptions.timerStartInMilliseconds = timerStartInMilliseconds; - } - if ([self isFieldValid:sessionIntervalInMilliseconds]) { - testOptions.sessionIntervalInMilliseconds = sessionIntervalInMilliseconds; - } - if ([self isFieldValid:subsessionIntervalInMilliseconds]) { - testOptions.subsessionIntervalInMilliseconds = subsessionIntervalInMilliseconds; - } - if ([self isFieldValid:attStatus]) { - testOptions.attStatusInt = attStatus; - } - if ([self isFieldValid:idfa]) { - testOptions.idfa = idfa; - } - if ([self isFieldValid:teardown]) { - testOptions.teardown = [teardown boolValue]; - if (testOptions.teardown) { - [self resetAdjustBridge]; - } - } - if ([self isFieldValid:deleteState]) { - testOptions.deleteState = [deleteState boolValue]; - } - if ([self isFieldValid:noBackoffWait]) { - testOptions.noBackoffWait = [noBackoffWait boolValue]; - } - if ([self isFieldValid:adServicesFrameworkEnabled]) { - testOptions.adServicesFrameworkEnabled = [adServicesFrameworkEnabled boolValue]; - } +- (void)execJsCallbackWithId:(NSString *)callbackId callBackData:(id)data { + NSString *callbackParamString; + if ([data isKindOfClass:[NSMutableDictionary class]] || [data isKindOfClass:[NSDictionary class]]) { + callbackParamString = [AdjustBridgeUtil serializeData:data pretty:NO]; + } + + if ([data isKindOfClass:[NSString class]]){ + callbackParamString = data; + } + + NSString *jsExecCommand = [NSString stringWithFormat:@"%@('%@')", callbackId, + callbackParamString]; - [Adjust setTestOptions:testOptions]; + [AdjustBridgeUtil launchInMainThread:^{ + [self.wkWebView evaluateJavaScript:jsExecCommand completionHandler:nil]; }]; +} + +#pragma mark - AdjustDelegate methods +- (void)adjustAttributionChanged:(ADJAttribution *)attribution { + if (self.attributionCallbackName == nil) { + return; + } + [self execJsCallbackWithId:self.attributionCallbackName + callBackData:[attribution dictionary]]; } -- (void)registerAugmentedView { - [self.bridgeRegister registerHandler:@"adjust_fbPixelEvent" handler:^(id data, WVJBResponseCallback responseCallback) { - NSString *pixelID = [data objectForKey:@"pixelID"]; - if (pixelID == nil) { - [[ADJAdjustFactory logger] error:@"Can't bridge an event without a referral Pixel ID. Check your webview Pixel configuration"]; - return; - } - NSString *evtName = [data objectForKey:@"evtName"]; - NSString *eventToken = [self getEventTokenFromFbPixelEventName:evtName]; - if (eventToken == nil) { - [[ADJAdjustFactory logger] debug:@"No mapping found for the fb pixel event %@, trying to fall back to the default event token", evtName]; - eventToken = self.fbPixelDefaultEventToken; - } - if (eventToken == nil) { - [[ADJAdjustFactory logger] debug:@"There is not a default event token configured or a mapping found for event named: '%@'. It won't be tracked as an adjust event", evtName]; - return; - } +- (void)adjustEventTrackingSucceeded:(ADJEventSuccess *)eventSuccessResponseData { + if (self.eventSuccessCallbackName == nil) { + return; + } - ADJEvent *fbPixelEvent = [ADJEvent eventWithEventToken:eventToken]; - if (![fbPixelEvent isValid]) { - return; - } + NSMutableDictionary *eventSuccessResponseDataDictionary = [NSMutableDictionary dictionary]; + [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.message + forKey:@"message"]; + [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.timestamp + forKey:@"timestamp"]; + [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.adid + forKey:@"adid"]; + [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.eventToken + forKey:@"eventToken"]; + [eventSuccessResponseDataDictionary setValue:eventSuccessResponseData.callbackId + forKey:@"callbackId"]; + + NSString *jsonResponse = [AdjustBridgeUtil + convertJsonDictionaryToNSString:eventSuccessResponseData.jsonResponse]; + if (jsonResponse == nil) { + jsonResponse = @"{}"; + } + [eventSuccessResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; - id customData = [data objectForKey:@"customData"]; - [fbPixelEvent addPartnerParameter:@"_fb_pixel_referral_id" value:pixelID]; - // [fbPixelEvent addPartnerParameter:@"_eventName" value:evtName]; - if ([customData isKindOfClass:[NSString class]]) { - NSError *jsonParseError = nil; - NSDictionary *params = [NSJSONSerialization JSONObjectWithData:[customData dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&jsonParseError]; - [params enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { - NSString *keyS = [key description]; - NSString *valueS = [obj description]; - [fbPixelEvent addPartnerParameter:keyS value:valueS]; - }]; - } - [Adjust trackEvent:fbPixelEvent]; - }]; + [self execJsCallbackWithId:self.eventSuccessCallbackName + callBackData:eventSuccessResponseDataDictionary]; } -#pragma mark - Private & helper methods +- (void)adjustEventTrackingFailed:(ADJEventFailure *)eventFailureResponseData { + if (self.eventFailureCallbackName == nil) { + return; + } -- (BOOL)isFieldValid:(NSObject *)field { - if (field == nil) { - return NO; + NSMutableDictionary *eventFailureResponseDataDictionary = [NSMutableDictionary dictionary]; + [eventFailureResponseDataDictionary setValue:eventFailureResponseData.message + forKey:@"message"]; + [eventFailureResponseDataDictionary setValue:eventFailureResponseData.timestamp + forKey:@"timestamp"]; + [eventFailureResponseDataDictionary setValue:eventFailureResponseData.adid + forKey:@"adid"]; + [eventFailureResponseDataDictionary setValue:eventFailureResponseData.eventToken + forKey:@"eventToken"]; + [eventFailureResponseDataDictionary setValue:eventFailureResponseData.callbackId + forKey:@"callbackId"]; + [eventFailureResponseDataDictionary setValue:[NSNumber numberWithBool:eventFailureResponseData.willRetry] + forKey:@"willRetry"]; + + NSString *jsonResponse = [AdjustBridgeUtil + convertJsonDictionaryToNSString:eventFailureResponseData.jsonResponse]; + if (jsonResponse == nil) { + jsonResponse = @"{}"; } - if ([field isKindOfClass:[NSNull class]]) { - return NO; + [eventFailureResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; + + [self execJsCallbackWithId:self.eventFailureCallbackName + callBackData:eventFailureResponseDataDictionary]; +} + +- (void)adjustSessionTrackingSucceeded:(ADJSessionSuccess *)sessionSuccessResponseData { + if (self.sessionSuccessCallbackName == nil) { + return; } - if ([[field description] length] == 0) { - return NO; + + NSMutableDictionary *sessionSuccessResponseDataDictionary = [NSMutableDictionary dictionary]; + [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.message + forKey:@"message"]; + [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.timestamp + forKey:@"timestamp"]; + [sessionSuccessResponseDataDictionary setValue:sessionSuccessResponseData.adid + forKey:@"adid"]; + + NSString *jsonResponse = [AdjustBridgeUtil + convertJsonDictionaryToNSString:sessionSuccessResponseData.jsonResponse]; + if (jsonResponse == nil) { + jsonResponse = @"{}"; } - return !!field; + [sessionSuccessResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; + + [self execJsCallbackWithId:self.sessionSuccessCallbackName + callBackData:sessionSuccessResponseDataDictionary]; } -- (NSString *)getFbAppId { - NSString *facebookLoggingOverrideAppID = [self getValueFromBundleByKey:@"FacebookLoggingOverrideAppID"]; - if (facebookLoggingOverrideAppID != nil) { - return facebookLoggingOverrideAppID; +- (void)adjustSessionTrackingFailed:(ADJSessionFailure *)sessionFailureResponseData { + if (self.sessionFailureCallbackName == nil) { + return; } - return [self getValueFromBundleByKey:@"FacebookAppID"]; + NSMutableDictionary *sessionFailureResponseDataDictionary = [NSMutableDictionary dictionary]; + [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.message + forKey:@"message"]; + [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.timestamp + forKey:@"timestamp"]; + [sessionFailureResponseDataDictionary setValue:sessionFailureResponseData.adid + forKey:@"adid"]; + [sessionFailureResponseDataDictionary setValue:[NSNumber numberWithBool:sessionFailureResponseData.willRetry] + forKey:@"willRetry"]; + + NSString *jsonResponse = [AdjustBridgeUtil + convertJsonDictionaryToNSString:sessionFailureResponseData.jsonResponse]; + if (jsonResponse == nil) { + jsonResponse = @"{}"; + } + [sessionFailureResponseDataDictionary setValue:jsonResponse forKey:@"jsonResponse"]; + + [self execJsCallbackWithId:self.sessionFailureCallbackName + callBackData:sessionFailureResponseDataDictionary]; } -- (NSString *)getValueFromBundleByKey:(NSString *)key { - return [[[NSBundle mainBundle] objectForInfoDictionaryKey:key] copy]; +- (BOOL)adjustDeferredDeeplinkReceived:(NSURL *)deeplink { + if (self.deferredDeeplinkCallbackName) { + [self execJsCallbackWithId:self.deferredDeeplinkCallbackName + callBackData:[deeplink absoluteString]]; + } + return self.isDeferredDeeplinkOpeningEnabled; } -- (NSString *)getEventTokenFromFbPixelEventName:(NSString *)fbPixelEventName { - if (self.fbPixelMapping == nil) { - return nil; +- (void)adjustSkanUpdatedWithConversionData:(nonnull NSDictionary *)data { + if (self.skanUpdatedCallbackName == nil) { + return; } - return [self.fbPixelMapping objectForKey:fbPixelEventName]; + NSMutableDictionary *skanUpdatedDictionary = [NSMutableDictionary dictionary]; + [skanUpdatedDictionary setValue:data[@"conversion_value"] forKey:@"conversionValue"]; + [skanUpdatedDictionary setValue:data[@"coarse_value"] forKey:@"coarseValue"]; + [skanUpdatedDictionary setValue:data[@"lock_window"] forKey:@"lockWindow"]; + [skanUpdatedDictionary setValue:data[@"error"] forKey:@"error"]; + + [self execJsCallbackWithId:self.skanUpdatedCallbackName + callBackData:skanUpdatedDictionary]; } -- (NSString *)convertJsonDictionaryToNSString:(NSDictionary *)jsonDictionary { - if (jsonDictionary == nil) { - return nil; +#pragma mark - FB Pixel event handling + +- (void)trackFbPixelEvent:(id)data { + NSString *pixelID = [data objectForKey:@"pixelID"]; + if (pixelID == nil) { + [self.logger error:@"Can't bridge an event without a referral Pixel ID. Check your webview Pixel configuration"]; + return; + } + NSString *evtName = [data objectForKey:@"evtName"]; + NSString *eventToken = [self getEventTokenFromFbPixelEventName:evtName]; + if (eventToken == nil) { + [self.logger debug:@"No mapping found for the fb pixel event %@, trying to fall back to the default event token", evtName]; + eventToken = self.fbPixelDefaultEventToken; + } + if (eventToken == nil) { + [self.logger debug:@"There is not a default event token configured or a mapping found for event named: '%@'. It won't be tracked as an adjust event", evtName]; + return; } - NSError *error; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary - options:NSJSONWritingPrettyPrinted - error:&error]; - if (!jsonData) { - NSLog(@"Unable to conver NSDictionary with JSON response to JSON string: %@", error); - return nil; + ADJEvent *fbPixelEvent = [[ADJEvent alloc] initWithEventToken:eventToken]; + if (![fbPixelEvent isValid]) { + return; + } + + id customData = [data objectForKey:@"customData"]; + [fbPixelEvent addPartnerParameter:@"_fb_pixel_referral_id" value:pixelID]; + // [fbPixelEvent addPartnerParameter:@"_eventName" value:evtName]; + if ([customData isKindOfClass:[NSString class]]) { + NSError *jsonParseError = nil; + NSDictionary *params = [NSJSONSerialization JSONObjectWithData:[customData dataUsingEncoding:NSUTF8StringEncoding] + options:NSJSONReadingMutableContainers + error:&jsonParseError]; + [params enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + NSString *keyS = [key description]; + NSString *valueS = [obj description]; + [fbPixelEvent addPartnerParameter:keyS value:valueS]; + }]; } - NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - return jsonString; + [Adjust trackEvent:fbPixelEvent]; } -- (NSNumber *)fieldToNSNumber:(NSObject *)field { - if (![self isFieldValid:field]) { +- (NSString *)getEventTokenFromFbPixelEventName:(NSString *)fbPixelEventName { + if (self.fbPixelMapping == nil) { return nil; } - NSNumberFormatter *formatString = [[NSNumberFormatter alloc] init]; - return [formatString numberFromString:[field description]]; + return [self.fbPixelMapping objectForKey:fbPixelEventName]; } +- (NSString *)getFbAppId { + NSString *facebookLoggingOverrideAppID = + [self getValueFromBundleByKey:@"FacebookLoggingOverrideAppID"]; + if (facebookLoggingOverrideAppID != nil) { + return facebookLoggingOverrideAppID; + } + return [self getValueFromBundleByKey:@"FacebookAppID"]; +} + +- (NSString *)getValueFromBundleByKey:(NSString *)key { + return [[[NSBundle mainBundle] objectForInfoDictionaryKey:key] copy]; +} + + @end + + diff --git a/AdjustBridge/AdjustBridgeConstants.h b/AdjustBridge/AdjustBridgeConstants.h new file mode 100644 index 000000000..96764ee3b --- /dev/null +++ b/AdjustBridge/AdjustBridgeConstants.h @@ -0,0 +1,96 @@ +// +// AdjustBridgeConstants.h +// Adjust +// +// Created by Aditi Agrawal on 16/05/24. +// Copyright © 2024-Present Adjust GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +FOUNDATION_EXPORT NSString *const ADJWBMethodNameKey; +FOUNDATION_EXPORT NSString *const ADJWBParametersKey; +FOUNDATION_EXPORT NSString *const ADJWBCallbackIdKey; + +FOUNDATION_EXPORT NSString *const ADJWBInitSdkMethodName; +FOUNDATION_EXPORT NSString *const ADJWBTrackEventMethodName; +FOUNDATION_EXPORT NSString *const ADJWBTrackThirdPartySharingMethodName; +FOUNDATION_EXPORT NSString *const ADJWBTrackSubsessionStartMethodName; +FOUNDATION_EXPORT NSString *const ADJWBTrackSubsessionEndMethodName; +FOUNDATION_EXPORT NSString *const ADJWBTrackMeasurementConsentMethodName; +FOUNDATION_EXPORT NSString *const ADJWBRequestAppTrackingMethodName; +FOUNDATION_EXPORT NSString *const ADJWBFBPixelEventMethodName; +FOUNDATION_EXPORT NSString *const ADJWBSetTestOptionsMethodName; + +FOUNDATION_EXPORT NSString *const ADJWBEnableMethodName; +FOUNDATION_EXPORT NSString *const ADJWBDisableMethodName; +FOUNDATION_EXPORT NSString *const ADJWBSwitchToOfflineModeMethodName; +FOUNDATION_EXPORT NSString *const ADJWBSwitchBackToOnlineMode; +FOUNDATION_EXPORT NSString *const ADJWBGdprForgetMeMethodName; + +FOUNDATION_EXPORT NSString *const ADJWBAddGlobalCallbackParameterMethodName; +FOUNDATION_EXPORT NSString *const ADJWBRemoveGlobalCallbackParameterMethodName; +FOUNDATION_EXPORT NSString *const ADJWBRemoveGlobalCallbackParametersMethodName; +FOUNDATION_EXPORT NSString *const ADJWBAddGlobalPartnerParameterMethodName; +FOUNDATION_EXPORT NSString *const ADJWBRemoveGlobalPartnerParameterMethodName; +FOUNDATION_EXPORT NSString *const ADJWBRemoveGlobalPartnerParametersMethodName; + +FOUNDATION_EXPORT NSString *const ADJWBGetSdkVersionMethodName; +FOUNDATION_EXPORT NSString *const ADJWBGetIdfaMethodName; +FOUNDATION_EXPORT NSString *const ADJWBGetIdfvMethodName; +FOUNDATION_EXPORT NSString *const ADJWBIsEnabledMethodName; +FOUNDATION_EXPORT NSString *const ADJWBGetAdidMethodName; +FOUNDATION_EXPORT NSString *const ADJWBGetAttributionMethodName; +FOUNDATION_EXPORT NSString *const ADJWBAppTrackingAuthorizationStatus; + +FOUNDATION_EXPORT NSString *const ADJWBAppTokenConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBEnvironmentConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBAllowSuppressLogLevelConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBSdkPrefixConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBDefaultTrackerConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBExternalDeviceIdConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBLogLevelConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBSendInBackgroundConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBNeedsCostConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBAllowAdServicesInfoReadingConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBIsIdfaReadingAllowedConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBIsSkanAttributionHandlingEnabledConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBIsDeferredDeeplinkOpeningEnabledConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBIsCoppaComplianceEnabledConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBUrlStrategyConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBReadDeviceInfoOnceEnabledConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBAttConsentWaitingSecondsConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBEventDeduplicationIdsMaxSizeConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBUseStrategyDomainsConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBUseSubdomainsConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBIsDataResidencyConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBFbPixelDefaultEventTokenConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBFbPixelMappingConfigKey; + +FOUNDATION_EXPORT NSString *const ADJWBAttributionCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBEventSuccessCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBEventFailureCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBSessionSuccessCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBSessionFailureCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBSkanUpdatedCallbackConfigKey; +FOUNDATION_EXPORT NSString *const ADJWBDeferredDeeplinkCallbackConfigKey; + +FOUNDATION_EXPORT NSString *const ADJWBEventTokenEventKey; +FOUNDATION_EXPORT NSString *const ADJWBRevenueEventKey; +FOUNDATION_EXPORT NSString *const ADJWBCurrencyEventKey; +FOUNDATION_EXPORT NSString *const ADJWBCallbackIdEventKey; +FOUNDATION_EXPORT NSString *const ADJWBDeduplicationIdEventKey; +FOUNDATION_EXPORT NSString *const ADJWBCallbackParametersEventKey; +FOUNDATION_EXPORT NSString *const ADJWBPartnerParametersEventKey; + +FOUNDATION_EXPORT NSString *const ADJWBAdjustThirdPartySharingName; +FOUNDATION_EXPORT NSString *const ADJWBIsEnabledTPSKey; +FOUNDATION_EXPORT NSString *const ADJWBGranularOptionsTPSKey; +FOUNDATION_EXPORT NSString *const ADJWBPartnerSharingSettingTPSKey; + +FOUNDATION_EXPORT NSString *const ADJWBKvKeyKey; +FOUNDATION_EXPORT NSString *const ADJWBKvValueKey; + +NS_ASSUME_NONNULL_END diff --git a/AdjustBridge/AdjustBridgeConstants.m b/AdjustBridge/AdjustBridgeConstants.m new file mode 100644 index 000000000..0ab49dcb5 --- /dev/null +++ b/AdjustBridge/AdjustBridgeConstants.m @@ -0,0 +1,98 @@ +// +// AdjustBridgeConstants.m +// Adjust +// +// Created by Aditi Agrawal on 16/05/24. +// Copyright © 2024-Present Adjust GmbH. All rights reserved. +// + +#import "AdjustBridgeConstants.h" + +NSString *const ADJWBMethodNameKey = @"_methodName"; +NSString *const ADJWBParametersKey = @"_parameters"; +NSString *const ADJWBCallbackIdKey = @"_callbackId"; + +//AdjustWebbridge Public APIs method name +NSString *const ADJWBInitSdkMethodName = @"adjust_initSdk"; +NSString *const ADJWBTrackEventMethodName = @"adjust_trackEvent"; +NSString *const ADJWBTrackThirdPartySharingMethodName = @"adjust_trackThirdPartySharing"; +NSString *const ADJWBTrackSubsessionStartMethodName = @"adjust_trackSubsessionStart"; +NSString *const ADJWBTrackSubsessionEndMethodName = @"adjust_trackSubsessionEnd"; +NSString *const ADJWBTrackMeasurementConsentMethodName = @"adjust_trackMeasurementConsent"; +NSString *const ADJWBRequestAppTrackingMethodName = @"adjust_requestAppTrackingAuthorizationWithCompletionHandler"; +NSString *const ADJWBFBPixelEventMethodName = @"adjust_fbPixelEvent"; +NSString *const ADJWBSetTestOptionsMethodName = @"adjust_setTestOptions"; + +NSString *const ADJWBEnableMethodName = @"adjust_enable"; +NSString *const ADJWBDisableMethodName = @"adjust_disable"; +NSString *const ADJWBSwitchToOfflineModeMethodName = @"adjust_switchToOfflineMode"; +NSString *const ADJWBSwitchBackToOnlineMode = @"adjust_switchBackToOnlineMode"; +NSString *const ADJWBGdprForgetMeMethodName = @"adjust_gdprForgetMe"; + +//AdjustWebbridge Global Callback and Partner method name +NSString *const ADJWBAddGlobalCallbackParameterMethodName = @"adjust_addGlobalCallbackParameter"; +NSString *const ADJWBRemoveGlobalCallbackParameterMethodName = @"adjust_removeGlobalCallbackParameter"; +NSString *const ADJWBRemoveGlobalCallbackParametersMethodName = @"adjust_removeGlobalCallbackParameters"; +NSString *const ADJWBAddGlobalPartnerParameterMethodName = @"adjust_addGlobalPartnerParameter"; +NSString *const ADJWBRemoveGlobalPartnerParameterMethodName = @"adjust_removeGlobalPartnerParameter"; +NSString *const ADJWBRemoveGlobalPartnerParametersMethodName = @"adjust_removeGlobalPartnerParameters"; + +//AdjustWebbridge Getter APIs method name +NSString *const ADJWBIsEnabledMethodName = @"adjust_isEnabled"; +NSString *const ADJWBGetSdkVersionMethodName = @"adjust_getSdkVersion"; +NSString *const ADJWBGetIdfaMethodName = @"adjust_getIdfa"; +NSString *const ADJWBGetIdfvMethodName = @"adjust_getIdfv"; +NSString *const ADJWBGetAdidMethodName = @"adjust_getAdid"; +NSString *const ADJWBGetAttributionMethodName = @"adjust_getAttribution"; +NSString *const ADJWBAppTrackingAuthorizationStatus = @"adjust_appTrackingAuthorizationStatus"; + +//AdjustWebbridge Config keys +NSString *const ADJWBAppTokenConfigKey = @"appToken"; +NSString *const ADJWBEnvironmentConfigKey = @"environment"; +NSString *const ADJWBAllowSuppressLogLevelConfigKey = @"allowSuppressLogLevel"; +NSString *const ADJWBSdkPrefixConfigKey = @"sdkPrefix"; +NSString *const ADJWBDefaultTrackerConfigKey = @"defaultTracker"; +NSString *const ADJWBExternalDeviceIdConfigKey = @"externalDeviceId"; +NSString *const ADJWBLogLevelConfigKey = @"logLevel"; +NSString *const ADJWBSendInBackgroundConfigKey = @"sendInBackground"; +NSString *const ADJWBNeedsCostConfigKey = @"isCostDataInAttributionEnabled"; +NSString *const ADJWBAllowAdServicesInfoReadingConfigKey = @"isAdServicesEnabled"; +NSString *const ADJWBIsIdfaReadingAllowedConfigKey = @"isIdfaReadingAllowed"; +NSString *const ADJWBIsSkanAttributionHandlingEnabledConfigKey = @"isSkanAttributionHandlingEnabled"; +NSString *const ADJWBIsDeferredDeeplinkOpeningEnabledConfigKey = @"isDeferredDeeplinkOpeningEnabled"; +NSString *const ADJWBIsCoppaComplianceEnabledConfigKey = @"isCoppaComplianceEnabled"; +NSString *const ADJWBReadDeviceInfoOnceEnabledConfigKey = @"shouldReadDeviceInfoOnce"; +NSString *const ADJWBAttConsentWaitingSecondsConfigKey = @"attConsentWaitingSeconds"; +NSString *const ADJWBEventDeduplicationIdsMaxSizeConfigKey = @"eventDeduplicationIdsMaxSize"; +NSString *const ADJWBUseStrategyDomainsConfigKey = @"urlStrategyDomains"; +NSString *const ADJWBUseSubdomainsConfigKey = @"useSubdomains"; +NSString *const ADJWBIsDataResidencyConfigKey = @"isDataResidency"; +NSString *const ADJWBFbPixelDefaultEventTokenConfigKey = @"fbPixelDefaultEventToken"; +NSString *const ADJWBFbPixelMappingConfigKey = @"fbPixelMapping"; + +//AdjustWebbridge Callbacks method name +NSString *const ADJWBAttributionCallbackConfigKey = @"attributionCallback"; +NSString *const ADJWBEventSuccessCallbackConfigKey = @"eventSuccessCallback"; +NSString *const ADJWBEventFailureCallbackConfigKey = @"eventFailureCallback"; +NSString *const ADJWBSessionSuccessCallbackConfigKey = @"sessionSuccessCallback"; +NSString *const ADJWBSessionFailureCallbackConfigKey = @"sessionFailureCallback"; +NSString *const ADJWBSkanUpdatedCallbackConfigKey = @"skanUpdatedCallback"; +NSString *const ADJWBDeferredDeeplinkCallbackConfigKey = @"deferredDeeplinkCallback"; + +//AdjustWebbridge Track Event keys +NSString *const ADJWBEventTokenEventKey = @"eventToken"; +NSString *const ADJWBRevenueEventKey = @"revenue"; +NSString *const ADJWBCurrencyEventKey = @"currency"; +NSString *const ADJWBCallbackIdEventKey = @"callbackId"; +NSString *const ADJWBDeduplicationIdEventKey = @"deduplicationId"; +NSString *const ADJWBCallbackParametersEventKey = @"callbackParameters"; +NSString *const ADJWBPartnerParametersEventKey = @"partnerParameters"; + +//AdjustWebbridge TPS keys +NSString *const ADJWBIsEnabledTPSKey = @"isEnabled"; +NSString *const ADJWBGranularOptionsTPSKey = @"granularOptions"; +NSString *const ADJWBPartnerSharingSettingTPSKey = @"partnerSharingSettings"; + +NSString *const ADJWBKvKeyKey = @"_key"; +NSString *const ADJWBKvValueKey = @"_value"; + diff --git a/AdjustBridge/AdjustBridgeRegister.h b/AdjustBridge/AdjustBridgeRegister.h index e9a06c61d..92dcce67b 100644 --- a/AdjustBridge/AdjustBridgeRegister.h +++ b/AdjustBridge/AdjustBridgeRegister.h @@ -1,22 +1,20 @@ // -// AdjustWebViewJSBridge.h -// Adjust SDK +// AdjustBridgeRegister.h +// Adjust // -// Created by Pedro Filipe (@nonelse) on 10th June 2016. -// Copyright © 2016-2018 Adjust GmbH. All rights reserved. +// Created by Pedro Filipe (@nonelse) on 27th April 2016. +// Copyright © 2016-Present Adjust GmbH. All rights reserved. // #import -#import "WKWebViewJavascriptBridge.h" + +NS_ASSUME_NONNULL_BEGIN @interface AdjustBridgeRegister : NSObject + (NSString *)AdjustBridge_js; - -- (id)initWithWKWebView:(WKWebView*)webView; -- (void)setWKWebViewDelegate:(id)webViewDelegate; -- (void)callHandler:(NSString *)handlerName data:(id)data; -- (void)registerHandler:(NSString *)handlerName handler:(WVJBHandler)handler; -- (void)augmentHybridWebView:(NSString *)fbAppId; ++ (void)augmentHybridWebView:(NSString *)fbAppId; @end + +NS_ASSUME_NONNULL_END diff --git a/AdjustBridge/AdjustBridgeRegister.m b/AdjustBridge/AdjustBridgeRegister.m index 76bbbd564..751b18ec8 100644 --- a/AdjustBridge/AdjustBridgeRegister.m +++ b/AdjustBridge/AdjustBridgeRegister.m @@ -1,50 +1,17 @@ // // AdjustBridgeRegister.m -// Adjust SDK +// Adjust // -// Created by Pedro Filipe (@nonelse) on 10th June 2016. -// Copyright © 2016-2018 Adjust GmbH. All rights reserved. +// Created by Pedro Filipe (@nonelse) on 27th April 2016. +// Copyright © 2016-Present Adjust GmbH. All rights reserved. // #import "AdjustBridgeRegister.h" -static NSString * const kHandlerPrefix = @"adjust_"; static NSString * fbAppIdStatic = nil; -@interface AdjustBridgeRegister() - -@property (nonatomic, strong) WKWebViewJavascriptBridge *wkwvjb; - -@end - @implementation AdjustBridgeRegister -- (id)initWithWKWebView:(WKWebView*)webView { - self = [super init]; - if (self == nil) { - return nil; - } - - self.wkwvjb = [WKWebViewJavascriptBridge bridgeForWebView:webView]; - return self; -} - -- (void)setWKWebViewDelegate:(id)webViewDelegate { - [self.wkwvjb setWebViewDelegate:webViewDelegate]; -} - -- (void)callHandler:(NSString *)handlerName data:(id)data { - [self.wkwvjb callHandler:handlerName data:data]; -} - -- (void)registerHandler:(NSString *)handlerName handler:(WVJBHandler)handler { - [self.wkwvjb registerHandler:handlerName handler:handler]; -} - -- (void)augmentHybridWebView:(NSString *)fbAppId { - fbAppIdStatic = fbAppId; -} - + (NSString *)AdjustBridge_js { if (fbAppIdStatic != nil) { return [NSString stringWithFormat:@"%@%@", @@ -55,22 +22,27 @@ + (NSString *)AdjustBridge_js { } } ++ (void)augmentHybridWebView:(NSString *)fbAppId { + fbAppIdStatic = fbAppId; +} + #define __adj_js_func__(x) #x -// BEGIN preprocessorJSCode +// BEGIN preprocessorJSCode + (NSString *)augmented_js { return [NSString stringWithFormat: - @__adj_js_func__(;(function() { - window['fbmq_%@'] = { - 'getProtocol' : function() { - return 'fbmq-0.1'; - }, - 'sendEvent': function(pixelID, evtName, customData) { - Adjust.fbPixelEvent(pixelID, evtName, customData); - } - }; - })();) // END preprocessorJSCode - , fbAppIdStatic]; + @__adj_js_func__(;(function() { + window['fbmq_%@'] = { + 'getProtocol' : function() { + return 'fbmq-0.1'; + }, + 'sendEvent': function(pixelID, evtName, customData) { + Adjust.fbPixelEvent(pixelID, evtName, customData); + } + }; + })();) // END preprocessorJSCode + , fbAppIdStatic]; + } + (NSString *)adjust_js { @@ -79,316 +51,311 @@ + (NSString *)adjust_js { return; } - // Copied from adjust.js + // Adjust window.Adjust = { - appDidLaunch: function(adjustConfig) { - if (WebViewJavascriptBridge) { - if (adjustConfig) { - if (!adjustConfig.getSdkPrefix()) { - adjustConfig.setSdkPrefix(this.getSdkPrefix()); + _postMessage(methodName, parameters = {}, callbackId = "") { + if (!this._adjustMessageHandler) { + function canSend(okCheck, errReason) { + if (!okCheck) { + if (errSubscriber) { + errSubscriber("Cannot send message to native sdk ".concat(errReason)); + } } - this.sdkPrefix = adjustConfig.getSdkPrefix(); - adjustConfig.registerCallbackHandlers(); - WebViewJavascriptBridge.callHandler('adjust_appDidLaunch', adjustConfig, null); + return okCheck; } + const canSendSendToNative = + canSend(window, "without valid: 'window'") && + canSend(window.webkit, "without valid: 'window.webkit'") && + canSend(window.webkit.messageHandlers, + "without valid: 'window.webkit.messageHandlers'") && + canSend(window.webkit.messageHandlers.adjust, + "without valid: 'window.webkit.messageHandlers.adjust'") && + canSend(window.webkit.messageHandlers.adjust.postMessage, + "without valid: 'window.webkit.messageHandlers.adjust.postMessage'") && + canSend(typeof window.webkit.messageHandlers.adjust.postMessage === "function", + "when 'window.webkit.messageHandlers.adjust.postMessage' is not a function"); + + if (!canSendSendToNative) { return; } + + this._adjustMessageHandler = window.webkit.messageHandlers.adjust; } + + this._adjustMessageHandler.postMessage({ + _methodName: methodName, + _parameters: parameters, + _callbackId: callbackId + }); }, - trackEvent: function(adjustEvent) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_trackEvent', adjustEvent, null); - } - }, - trackAdRevenue: function(source, payload) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_trackAdRevenue', {source: source, payload: payload}, null); - } - }, - trackSubsessionStart: function() { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_trackSubsessionStart', null, null); - } - }, - trackSubsessionEnd: function() { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_trackSubsessionEnd', null, null); - } - }, - setEnabled: function(enabled) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_setEnabled', enabled, null); - } - }, - isEnabled: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_isEnabled', null, - function(response) { - callback(new Boolean(response)); - }); - } - }, - appWillOpenUrl: function(url) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_appWillOpenUrl', url, null); - } - }, - setDeviceToken: function(deviceToken) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_setDeviceToken', deviceToken, null); - } - }, - setOfflineMode: function(isOffline) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_setOfflineMode', isOffline, null); - } - }, - getIdfa: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_idfa', null, callback); - } - }, - getIdfv: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_idfv', null, callback); - } - }, - requestTrackingAuthorizationWithCompletionHandler: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_requestTrackingAuthorizationWithCompletionHandler', null, callback); - } - }, - getAppTrackingAuthorizationStatus: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_appTrackingAuthorizationStatus', null, callback); - } - }, - updateConversionValue: function(conversionValue) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_updateConversionValue', conversionValue, null); - } - }, - updateConversionValueWithCallback: function(conversionValue, callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_updateConversionValueCompletionHandler', conversionValue, callback); - } - }, - updateConversionValueWithCoarseValueAndCallback: function(conversionValue, coarseValue, callback) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_updateConversionValueCoarseValueCompletionHandler', - {conversionValue: conversionValue, coarseValue: coarseValue}, - callback); - } - }, - updateConversionValueWithCoarseValueLockWindowAndCallback: function(conversionValue, coarseValue, lockWindow, callback) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_updateConversionValueCoarseValueLockWindowCompletionHandler', - {conversionValue: conversionValue, coarseValue: coarseValue}, - callback); - } - }, - getAdid: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_adid', null, callback); - } - }, - getAttribution: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_attribution', null, callback); - } - }, - sendFirstPackages: function() { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_sendFirstPackages', null, null); - } - }, - addSessionCallbackParameter: function(key, value) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_addSessionCallbackParameter', {key: key, value: value}, null); - } - }, - addSessionPartnerParameter: function(key, value) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_addSessionPartnerParameter', {key: key, value: value}, null); - } - }, - removeSessionCallbackParameter: function(key) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_removeSessionCallbackParameter', key, null); - } - }, - removeSessionPartnerParameter: function(key) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_removeSessionPartnerParameter', key, null); - } - }, - resetSessionCallbackParameters: function() { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_resetSessionCallbackParameters', null, null); - } - }, - resetSessionPartnerParameters: function() { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_resetSessionPartnerParameters', null, null); - } - }, - gdprForgetMe: function() { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_gdprForgetMe', null, null); - } - }, - disableThirdPartySharing: function() { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_disableThirdPartySharing', null, null); - } - }, - trackThirdPartySharing: function(adjustThirdPartySharing) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_trackThirdPartySharing', adjustThirdPartySharing, null); - } - }, - trackMeasurementConsent: function(consentMeasurement) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_trackMeasurementConsent', consentMeasurement, null); - } - }, - checkForNewAttStatus: function() { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_checkForNewAttStatus', null, null); - } - }, - getLastDeeplink: function(callback) { - if (WebViewJavascriptBridge) { - WebViewJavascriptBridge.callHandler('adjust_lastDeeplink', null, callback); - } - }, - fbPixelEvent: function(pixelID, evtName, customData) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_fbPixelEvent', - { - pixelID: pixelID, - evtName:evtName, - customData: customData - }, - null); - } - }, - getSdkVersion: function(callback) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_sdkVersion', this.getSdkPrefix(), callback); - } - }, - getSdkPrefix: function() { - if (this.sdkPrefix) { - return this.sdkPrefix; + + _handleGetterFromObjC: function(callback, callbackId) { + window[callbackId] = function(value) { + if(callbackId.includes("adjust_getAttribution")) { + const parsedValue = JSON.parse(value); + callback(parsedValue); } else { - return 'web-bridge4.38.4'; + callback(value); } - }, - setTestOptions: function(testOptions) { - if (WebViewJavascriptBridge != null) { - WebViewJavascriptBridge.callHandler('adjust_setTestOptions', testOptions, null); + delete window[callbackId]; + }; + }, + + _handleCallbackFromObjC: function(callback, callbackId) { + window[callbackId] = function(value) { + const parsedValue = JSON.parse(value); + callback(parsedValue); + }; + }, + + initSdk: function(adjustConfig) { + if (adjustConfig) { + if (!adjustConfig.getSdkPrefix()) { + adjustConfig.setSdkPrefix(this.getSdkPrefix()); } + adjustConfig.setSdkPrefix(this.getSdkPrefix()); + this._postMessage("adjust_initSdk", adjustConfig); } + }, + + setTestOptions: function(testOptions) { + this._postMessage("adjust_setTestOptions", testOptions); + }, + + requestAppTrackingAuthorizationWithCompletionHandler: function(attStatusCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_attStatusCallback"); + this._handleGetterFromObjC(attStatusCallback, callbackId); + this._postMessage("adjust_requestAppTrackingAuthorizationWithCompletionHandler", null, callbackId); + }, + + getAppTrackingAuthorizationStatus: function(getAppTrackingAuthorizationStatusCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_appTrackingAuthorizationStatus") ; + this._handleGetterFromObjC(getAppTrackingAuthorizationStatusCallback, callbackId); + this._postMessage("adjust_appTrackingAuthorizationStatus", null, callbackId); + }, + + getSdkVersion: function(getSdkVersionCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_getSdkVersion") ; + this._handleGetterFromObjC(getSdkVersionCallback, callbackId); + this._postMessage("adjust_getSdkVersion", {sdkPrefix: this.getSdkPrefix()}, callbackId); + }, + + getIdfa: function(getIdfaCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_getIdfa") ; + this._handleGetterFromObjC(getIdfaCallback, callbackId); + this._postMessage("adjust_getIdfa", null, callbackId); + }, + + getIdfv: function(getIdfvCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_getIdfv") ; + this._handleGetterFromObjC(getIdfvCallback, callbackId); + this._postMessage("adjust_getIdfv", null, callbackId); + }, + + getAdid: function(getAdidCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_getAdid") ; + this._handleGetterFromObjC(getAdidCallback, callbackId); + this._postMessage("adjust_getAdid", null, callbackId); + }, + + isEnabled: function(isEnabledCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_isEnabled") ; + this._handleGetterFromObjC(isEnabledCallback, callbackId); + this._postMessage("adjust_isEnabled", null, callbackId); + }, + + getAttribution: function(getAttributionCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_getAttribution") ; + this._handleGetterFromObjC(getAttributionCallback, callbackId); + this._postMessage("adjust_getAttribution", null, callbackId); + }, + + getSdkPrefix: function() { + if (this.sdkPrefix) { + return this.sdkPrefix; + } else { + return 'web-bridge5.0.0'; + } + }, + + trackEvent: function(adjustEvent) { + this._postMessage("adjust_trackEvent", adjustEvent); + }, + + trackThirdPartySharing: function(adjustThirdPartySharing) { + this._postMessage("adjust_trackThirdPartySharing", adjustThirdPartySharing); + }, + + gdprForgetMe: function() { + this._postMessage("adjust_gdprForgetMe"); + }, + + enable: function() { + this._postMessage("adjust_enable"); + }, + + disable: function() { + this._postMessage("adjust_disable"); + }, + + switchToOfflineMode: function() { + this._postMessage("adjust_switchToOfflineMode"); + }, + + switchBackToOnlineMode: function() { + this._postMessage("adjust_switchBackToOnlineMode"); + }, + + trackSubsessionStart: function() { + this._postMessage("adjust_trackSubsessionStart"); + }, + + trackSubsessionEnd: function() { + this._postMessage("adjust_trackSubsessionEnd"); + }, + + trackMeasurementConsent: function(consentMeasurement) { + this._postMessage("adjust_trackMeasurementConsent", consentMeasurement); + }, + + fbPixelEvent: function(pixelID, evtName, customData) { + this._postMessage("adjust_fbPixelEvent", { + pixelID: pixelID, + evtName: evtName, + customData: customData + }); + }, + + addGlobalCallbackParameter: function(key, value) { + this._postMessage("adjust_addGlobalCallbackParameter", { + _key: key, _keyType: typeof key, + _value: value, _valueType: typeof value + }); + }, + + removeGlobalCallbackParameter: function(key) { + this._postMessage("adjust_removeGlobalCallbackParameter", { _key: key, _keyType: typeof key }); + }, + + removeGlobalCallbackParameters: function() { + this._postMessage("adjust_removeGlobalCallbackParameters"); + }, + + addGlobalPartnerParameter: function(key, value) { + this._postMessage("adjust_addGlobalPartnerParameter", { + _key: key, _keyType: typeof key, + _value: value, _valueType: typeof value + }); + }, + + removeGlobalPartnerParameter: function(key) { + this._postMessage("adjust_removeGlobalPartnerParameter", { _key: key, _keyType: typeof key }); + }, + + removeGlobalPartnerParameters: function() { + this._postMessage("adjust_removeGlobalPartnerParameters"); + }, + }; - // Copied from adjust_event.js + // AdjustEvent window.AdjustEvent = function(eventToken) { this.eventToken = eventToken; this.revenue = null; this.currency = null; - this.transactionId = null; + this.deduplicationId = null; this.callbackId = null; this.callbackParameters = []; this.partnerParameters = []; }; + AdjustEvent.prototype.setRevenue = function(revenue, currency) { + if (revenue != null) { + this.revenue = revenue.toString(); + this.currency = currency; + } + }; + AdjustEvent.prototype.addCallbackParameter = function(key, value) { + if (typeof key !== 'string' || typeof value !== 'string') { + console.log('Passed key or value is not of string type'); + return; + } this.callbackParameters.push(key); this.callbackParameters.push(value); }; + AdjustEvent.prototype.addPartnerParameter = function(key, value) { + if (typeof key !== 'string' || typeof value !== 'string') { + console.log('Passed key or value is not of string type'); + return; + } this.partnerParameters.push(key); this.partnerParameters.push(value); }; - AdjustEvent.prototype.setRevenue = function(revenue, currency) { - this.revenue = revenue; - this.currency = currency; - }; - AdjustEvent.prototype.setTransactionId = function(transactionId) { - this.transactionId = transactionId; + + AdjustEvent.prototype.setDeduplicationId = function(deduplicationId) { + this.deduplicationId = deduplicationId; }; + AdjustEvent.prototype.setCallbackId = function(callbackId) { this.callbackId = callbackId; }; - // Adjust Third Party Sharing + // AdjustThirdPartySharing window.AdjustThirdPartySharing = function(isEnabled) { this.isEnabled = isEnabled; this.granularOptions = []; this.partnerSharingSettings = []; }; + AdjustThirdPartySharing.prototype.addGranularOption = function(partnerName, key, value) { this.granularOptions.push(partnerName); this.granularOptions.push(key); this.granularOptions.push(value); }; + AdjustThirdPartySharing.prototype.addPartnerSharingSetting = function(partnerName, key, value) { this.partnerSharingSettings.push(partnerName); this.partnerSharingSettings.push(key); this.partnerSharingSettings.push(value); }; - // Copied from adjust_config.js - window.AdjustConfig = function(appToken, environment, legacy) { - if (arguments.length === 2) { - // New format does not require bridge as first parameter. - this.appToken = appToken; - this.environment = environment; - } else if (arguments.length === 3) { - // New format with allowSuppressLogLevel. - if (typeof(legacy) == typeof(true)) { - this.appToken = appToken; - this.environment = environment; - this.allowSuppressLogLevel = legacy; - } else { - // Old format with first argument being the bridge instance. - this.bridge = appToken; - this.appToken = environment; - this.environment = legacy; - } - } - + // AdjustConfig + window.AdjustConfig = function(appToken, environment) { + //config parameters + this.appToken = appToken; + this.environment = environment; + this.logLevel = null; this.sdkPrefix = null; this.defaultTracker = null; this.externalDeviceId = null; - this.logLevel = null; - this.eventBufferingEnabled = null; - this.coppaCompliantEnabled = null; - this.linkMeEnabled = null; this.sendInBackground = null; - this.delayStart = null; - this.userAgent = null; - this.isDeviceKnown = null; - this.needsCost = null; - this.allowAdServicesInfoReading = null; - this.allowIdfaReading = null; - this.allowSkAdNetworkHandling = null; - this.secretId = null; - this.info1 = null; - this.info2 = null; - this.info3 = null; - this.info4 = null; - this.openDeferredDeeplink = null; - this.fbPixelDefaultEventToken = null; - this.fbPixelMapping = []; + this.isAdServicesEnabled = null; + this.isIdfaReadingAllowed = null; + this.isCostDataInAttributionEnabled = null; + this.isDeferredDeeplinkOpeningEnabled = null; + this.isSkanAttributionHandlingEnabled = null; + this.isCoppaComplianceEnabled = null; + this.shouldReadDeviceInfoOnce = null; + this.attConsentWaitingSeconds = null; + this.eventDeduplicationIdsMaxSize = null; + + //config URL strategy parameters + this.urlStrategyDomains = []; + this.useSubdomains = null; + this.isDataResidency = null; + + //config callbacks this.attributionCallback = null; this.eventSuccessCallback = null; this.eventFailureCallback = null; this.sessionSuccessCallback = null; this.sessionFailureCallback = null; + this.skanUpdatedCallback = null; this.deferredDeeplinkCallback = null; - this.urlStrategy = null; - this.readDeviceInfoOnceEnabled = null; - this.attConsentWaitingSeconds = null; + + //fb parameters + this.fbPixelDefaultEventToken = null; + this.fbPixelMapping = []; }; AdjustConfig.EnvironmentSandbox = 'sandbox'; @@ -402,31 +369,6 @@ + (NSString *)adjust_js { AdjustConfig.LogLevelAssert = 'ASSERT'; AdjustConfig.LogLevelSuppress = 'SUPPRESS'; - AdjustConfig.UrlStrategyIndia = 'UrlStrategyIndia'; - AdjustConfig.UrlStrategyChina = 'UrlStrategyChina'; - AdjustConfig.UrlStrategyCn = 'UrlStrategyCn'; - AdjustConfig.UrlStrategyCnOnly = 'UrlStrategyCnOnly'; - AdjustConfig.DataResidencyEU = 'DataResidencyEU'; - AdjustConfig.DataResidencyTR = 'DataResidencyTR'; - AdjustConfig.DataResidencyUS = 'DataResidencyUS'; - - AdjustConfig.prototype.registerCallbackHandlers = function() { - var registerCallbackHandler = function(callbackName) { - var callback = this[callbackName]; - if (!callback) { - return; - } - var regiteredCallbackName = 'adjustJS_' + callbackName; - WebViewJavascriptBridge.registerHandler(regiteredCallbackName, callback); - this[callbackName] = regiteredCallbackName; - }; - registerCallbackHandler.call(this, 'attributionCallback'); - registerCallbackHandler.call(this, 'eventSuccessCallback'); - registerCallbackHandler.call(this, 'eventFailureCallback'); - registerCallbackHandler.call(this, 'sessionSuccessCallback'); - registerCallbackHandler.call(this, 'sessionFailureCallback'); - registerCallbackHandler.call(this, 'deferredDeeplinkCallback'); - }; AdjustConfig.prototype.getSdkPrefix = function() { return this.sdkPrefix; }; @@ -442,70 +384,45 @@ + (NSString *)adjust_js { AdjustConfig.prototype.setLogLevel = function(logLevel) { this.logLevel = logLevel; }; - AdjustConfig.prototype.setEventBufferingEnabled = function(isEnabled) { - this.eventBufferingEnabled = isEnabled; - }; - AdjustConfig.prototype.setCoppaCompliantEnabled = function(isEnabled) { - this.coppaCompliantEnabled = isEnabled; - }; - AdjustConfig.prototype.setLinkMeEnabled = function(isEnabled) { - this.linkMeEnabled = isEnabled; - }; AdjustConfig.prototype.setSendInBackground = function(isEnabled) { this.sendInBackground = isEnabled; }; - AdjustConfig.prototype.setDelayStart = function(delayStartInSeconds) { - this.delayStart = delayStartInSeconds; - }; - AdjustConfig.prototype.setUserAgent = function(userAgent) { - this.userAgent = userAgent; - }; - AdjustConfig.prototype.setIsDeviceKnown = function(isDeviceKnown) { - this.isDeviceKnown = isDeviceKnown; - }; - AdjustConfig.prototype.setNeedsCost = function(needsCost) { - this.needsCost = needsCost; - }; - AdjustConfig.prototype.setAllowiAdInfoReading = function(allowiAdInfoReading) { - // Apple has official sunset support for Apple Search Ads attribution via iAd.framework as of February 7th 2023 - }; - AdjustConfig.prototype.setAllowAdServicesInfoReading = function(allowAdServicesInfoReading) { - this.allowAdServicesInfoReading = allowAdServicesInfoReading; + AdjustConfig.prototype.enableCostDataInAttribution = function() { + this.isCostDataInAttributionEnabled = true; }; - AdjustConfig.prototype.setAllowIdfaReading = function(allowIdfaReading) { - this.allowIdfaReading = allowIdfaReading; + AdjustConfig.prototype.disableAdServices = function() { + this.isAdServicesEnabled = false; }; - AdjustConfig.prototype.deactivateSkAdNetworkHandling = function() { - this.allowSkAdNetworkHandling = false; + AdjustConfig.prototype.disableIdfaReading = function() { + this.isIdfaReadingAllowed = false; }; - AdjustConfig.prototype.setAppSecret = function(secretId, info1, info2, info3, info4) { - this.secretId = secretId; - this.info1 = info1; - this.info2 = info2; - this.info3 = info3; - this.info4 = info4; + AdjustConfig.prototype.disableSkanAttributionHandling = function() { + this.isSkanAttributionHandlingEnabled = false; }; - AdjustConfig.prototype.setOpenDeferredDeeplink = function(shouldOpen) { - this.openDeferredDeeplink = shouldOpen; + AdjustConfig.prototype.disableDeferredDeeplinkOpening = function() { + this.isDeferredDeeplinkOpeningEnabled = false; }; - AdjustConfig.prototype.setAttributionCallback = function(callback) { - this.attributionCallback = callback; + AdjustConfig.prototype.enableCoppaCompliance = function() { + this.isCoppaComplianceEnabled = true; }; - AdjustConfig.prototype.setEventSuccessCallback = function(callback) { - this.eventSuccessCallback = callback; + AdjustConfig.prototype.readDeviceInfoOnce = function() { + this.shouldReadDeviceInfoOnce = true; }; - AdjustConfig.prototype.setEventFailureCallback = function(callback) { - this.eventFailureCallback = callback; - }; - AdjustConfig.prototype.setSessionSuccessCallback = function(callback) { - this.sessionSuccessCallback = callback; + AdjustConfig.prototype.setAttConsentWaitingInterval = function(attConsentWaitingSeconds) { + this.attConsentWaitingSeconds = attConsentWaitingSeconds; }; - AdjustConfig.prototype.setSessionFailureCallback = function(callback) { - this.sessionFailureCallback = callback; + AdjustConfig.prototype.setEventDeduplicationIdsMaxSize = function(eventDeduplicationIdsMaxSize) { + this.eventDeduplicationIdsMaxSize = eventDeduplicationIdsMaxSize; }; - AdjustConfig.prototype.setDeferredDeeplinkCallback = function(callback) { - this.deferredDeeplinkCallback = callback; + + //URL strategy + AdjustConfig.prototype.setUrlStrategy = function(urlStrategyDomains, useSubdomains, isDataResidency) { + this.urlStrategyDomains = urlStrategyDomains; + this.useSubdomains = useSubdomains; + this.isDataResidency = isDataResidency; }; + + //FB Pixel event config AdjustConfig.prototype.setFbPixelDefaultEventToken = function(fbPixelDefaultEventToken) { this.fbPixelDefaultEventToken = fbPixelDefaultEventToken; }; @@ -513,15 +430,56 @@ + (NSString *)adjust_js { this.fbPixelMapping.push(fbEventNameKey); this.fbPixelMapping.push(adjEventTokenValue); }; - AdjustConfig.prototype.setUrlStrategy = function(urlStrategy) { - this.urlStrategy = urlStrategy; + + //AdjustConfig's callback + AdjustConfig.prototype.setAttributionCallback = function(attributionCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_attributionCallback"); + Adjust._handleCallbackFromObjC(attributionCallback, callbackId); + this.attributionCallback = callbackId; + }; + + AdjustConfig.prototype.setEventSuccessCallback = function(eventSuccessCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_eventSuccessCallback"); + Adjust._handleCallbackFromObjC(eventSuccessCallback, callbackId); + this.eventSuccessCallback = callbackId; }; - AdjustConfig.prototype.setReadDeviceInfoOnceEnabled = function(readDeviceInfoOnceEnabled) { - this.readDeviceInfoOnceEnabled = readDeviceInfoOnceEnabled; + + AdjustConfig.prototype.setEventFailureCallback = function(eventFailureCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_eventFailureCallback"); + Adjust._handleCallbackFromObjC(eventFailureCallback, callbackId); + this.eventFailureCallback = callbackId; }; - AdjustConfig.prototype.setAttConsentWaitingInterval = function(attConsentWaitingSeconds) { - this.attConsentWaitingSeconds = attConsentWaitingSeconds; + + AdjustConfig.prototype.setSessionSuccessCallback = function(sessionSuccessCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_sessionSuccessCallback"); + Adjust._handleCallbackFromObjC(sessionSuccessCallback, callbackId); + this.sessionSuccessCallback = callbackId; }; + + AdjustConfig.prototype.setSessionFailureCallback = function(sessionFailureCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_sessionFailureCallback"); + Adjust._handleCallbackFromObjC(sessionFailureCallback, callbackId); + this.sessionFailureCallback = callbackId; + }; + + AdjustConfig.prototype.setDeferredDeeplinkCallback = function(deferredDeeplinkCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_deferredDeeplinkCallback"); + Adjust._handleCallbackFromObjC(deferredDeeplinkCallback, callbackId); + this.deferredDeeplinkCallback = callbackId; + }; + + AdjustConfig.prototype.setSkanUpdatedCallback = function(skanUpdatedCallback) { + const callbackId = window.randomCallbackIdWithPrefix("adjust_skanUpdatedCallback"); + Adjust._handleCallbackFromObjC(skanUpdatedCallback, callbackId); + this.skanUpdatedCallback = callbackId; + }; + + // Generate random callback id + window.randomCallbackIdWithPrefix = function(prefix) { + const randomString = (Math.random() + 1).toString(36).substring(7); + return prefix + "_" + randomString; + }; + })();); // END preprocessorJSCode //, augmentedSection]; #undef __adj_js_func__ @@ -529,3 +487,6 @@ + (NSString *)adjust_js { } @end + + + diff --git a/AdjustBridge/AdjustBridgeUtil.h b/AdjustBridge/AdjustBridgeUtil.h new file mode 100644 index 000000000..431fec818 --- /dev/null +++ b/AdjustBridge/AdjustBridgeUtil.h @@ -0,0 +1,25 @@ +// +// AdjustBridgeUtil.h +// Adjust +// +// Created by Aditi Agrawal on 29/07/24. +// Copyright © 2024-Present Adjust GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface AdjustBridgeUtil : NSObject + +#pragma mark - Private & helper methods + ++ (BOOL)isFieldValid:(NSObject *)field; ++ (void)launchInMainThread:(dispatch_block_t)block; ++ (NSDictionary *)getTestOptions:(id)data; ++ (NSString *)convertJsonDictionaryToNSString:(NSDictionary *)jsonDictionary; ++ (NSString *)serializeData:(id)data pretty:(BOOL)pretty; + +@end + +NS_ASSUME_NONNULL_END diff --git a/AdjustBridge/AdjustBridgeUtil.m b/AdjustBridge/AdjustBridgeUtil.m new file mode 100644 index 000000000..0d076c5e3 --- /dev/null +++ b/AdjustBridge/AdjustBridgeUtil.m @@ -0,0 +1,124 @@ +// +// AdjustBridgeUtil.m +// Adjust +// +// Created by Aditi Agrawal on 29/07/24. +// Copyright © 2024-Present Adjust GmbH. All rights reserved. +// + +#import "AdjustBridgeUtil.h" + +@implementation AdjustBridgeUtil + +#pragma mark - Private & helper methods + ++ (BOOL)isFieldValid:(NSObject *)field { + if (field == nil) { + return NO; + } + if ([field isKindOfClass:[NSNull class]]) { + return NO; + } + if ([[field description] length] == 0) { + return NO; + } + return !!field; +} + ++ (void)launchInMainThread:(dispatch_block_t)block { + dispatch_async(dispatch_get_main_queue(), block); +} + ++ (NSString *)convertJsonDictionaryToNSString:(NSDictionary *)jsonDictionary { + if (jsonDictionary == nil) { + return nil; + } + + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary + options:NSJSONWritingPrettyPrinted + error:&error]; + if (!jsonData) { + NSLog(@"Unable to conver NSDictionary with JSON response to JSON string: %@", error); + return nil; + } + + NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + return jsonString; +} + ++ (NSString *)serializeData:(id)data pretty:(BOOL)pretty { + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data + options:0 error:&error]; + NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\r" withString:@"\\r"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\f" withString:@"\\f"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\u2028" withString:@"\\u2028"]; + jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\u2029" withString:@"\\u2029"]; + return jsonString; +} + ++ (NSDictionary *)getTestOptions:(id)data { + NSString *urlOverwrite = [data objectForKey:@"urlOverwrite"]; + NSString *extraPath = [data objectForKey:@"extraPath"]; + NSNumber *timerIntervalInMilliseconds = [data objectForKey:@"timerIntervalInMilliseconds"]; + NSNumber *timerStartInMilliseconds = [data objectForKey:@"timerStartInMilliseconds"]; + NSNumber *sessionIntervalInMilliseconds = [data objectForKey:@"sessionIntervalInMilliseconds"]; + NSNumber *subsessionIntervalInMilliseconds = [data objectForKey:@"subsessionIntervalInMilliseconds"]; + NSNumber *teardown = [data objectForKey:@"teardown"]; + NSNumber *deleteState = [data objectForKey:@"deleteState"]; + NSNumber *noBackoffWait = [data objectForKey:@"noBackoffWait"]; + NSNumber *adServicesFrameworkEnabled = [data objectForKey:@"adServicesFrameworkEnabled"]; + NSNumber *attStatus = [data objectForKey:@"attStatus"]; + NSString *idfa = [data objectForKey:@"idfa"]; + + NSMutableDictionary *testOptions = [NSMutableDictionary dictionary]; + + if ([self isFieldValid:urlOverwrite]) { + [testOptions setObject:urlOverwrite forKey:@"testUrlOverwrite"]; + } + if ([self isFieldValid:extraPath]) { + [testOptions setObject:extraPath forKey:@"extraPath"]; + } + if ([self isFieldValid:timerIntervalInMilliseconds]) { + [testOptions setObject:timerIntervalInMilliseconds forKey:@"timerIntervalInMilliseconds"]; + } + if ([self isFieldValid:timerStartInMilliseconds]) { + [testOptions setObject:timerStartInMilliseconds forKey:@"timerStartInMilliseconds"]; + } + if ([self isFieldValid:sessionIntervalInMilliseconds]) { + [testOptions setObject:sessionIntervalInMilliseconds forKey:@"sessionIntervalInMilliseconds"]; + } + if ([self isFieldValid:subsessionIntervalInMilliseconds]) { + [testOptions setObject:subsessionIntervalInMilliseconds forKey:@"subsessionIntervalInMilliseconds"]; + } + if ([self isFieldValid:attStatus]) { + [testOptions setObject:attStatus forKey:@"attStatusInt"]; + } + if ([self isFieldValid:idfa]) { + [testOptions setObject:idfa forKey:@"idfa"]; + } + if ([self isFieldValid:teardown]) { + [testOptions setObject:teardown forKey:@"teardown"]; + } + if ([self isFieldValid:deleteState]) { + [testOptions setObject:deleteState forKey:@"deleteState"]; + } + if ([self isFieldValid:noBackoffWait]) { + [testOptions setObject:noBackoffWait forKey:@"noBackoffWait"]; + } + if ([self isFieldValid:adServicesFrameworkEnabled]) { + [testOptions setObject:adServicesFrameworkEnabled forKey:@"adServicesFrameworkEnabled"]; + } + + return testOptions; +} + + +@end + diff --git a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h b/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h deleted file mode 100644 index 78c21d13d..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// WKWebViewJavascriptBridge.h -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - -#import -#import "WebViewJavascriptBridgeBase.h" -#import - -@interface WKWebViewJavascriptBridge : NSObject - -+ (instancetype)bridgeForWebView:(WKWebView*)webView; -+ (void)enableLogging; - -- (void)registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler; -- (void)removeHandler:(NSString*)handlerName; -- (void)callHandler:(NSString*)handlerName; -- (void)callHandler:(NSString*)handlerName data:(id)data; -- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback; -- (void)reset; -- (void)setWebViewDelegate:(id)webViewDelegate; -- (void)disableJavscriptAlertBoxSafetyTimeout; - -@end diff --git a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m b/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m deleted file mode 100644 index 43511a559..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WKWebViewJavascriptBridge.m +++ /dev/null @@ -1,260 +0,0 @@ -// -// WKWebViewJavascriptBridge.m -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - - -#import "WKWebViewJavascriptBridge.h" - -@implementation WKWebViewJavascriptBridge { - __weak WKWebView* _webView; - __weak id _webViewDelegate; - long _uniqueId; - WebViewJavascriptBridgeBase *_base; -} - -/* API - *****/ - -+ (void)enableLogging { [WebViewJavascriptBridgeBase enableLogging]; } - -+ (instancetype)bridgeForWebView:(WKWebView*)webView { - WKWebViewJavascriptBridge* bridge = [[self alloc] init]; - [bridge _setupInstance:webView]; - [bridge reset]; - return bridge; -} - -- (void)send:(id)data { - [self send:data responseCallback:nil]; -} - -- (void)send:(id)data responseCallback:(WVJBResponseCallback)responseCallback { - [_base sendData:data responseCallback:responseCallback handlerName:nil]; -} - -- (void)callHandler:(NSString *)handlerName { - [self callHandler:handlerName data:nil responseCallback:nil]; -} - -- (void)callHandler:(NSString *)handlerName data:(id)data { - [self callHandler:handlerName data:data responseCallback:nil]; -} - -- (void)callHandler:(NSString *)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback { - [_base sendData:data responseCallback:responseCallback handlerName:handlerName]; -} - -- (void)registerHandler:(NSString *)handlerName handler:(WVJBHandler)handler { - _base.messageHandlers[handlerName] = [handler copy]; -} - -- (void)removeHandler:(NSString *)handlerName { - [_base.messageHandlers removeObjectForKey:handlerName]; -} - -- (void)reset { - [_base reset]; -} - -- (void)setWebViewDelegate:(id)webViewDelegate { - _webViewDelegate = webViewDelegate; -} - -- (void)disableJavscriptAlertBoxSafetyTimeout { - [_base disableJavscriptAlertBoxSafetyTimeout]; -} - -/* Internals - ***********/ - -- (void)dealloc { - _base = nil; - _webView = nil; - _webViewDelegate = nil; - _webView.navigationDelegate = nil; -} - - -/* WKWebView Specific Internals - ******************************/ - -- (void) _setupInstance:(WKWebView*)webView { - _webView = webView; - _webView.navigationDelegate = self; - _base = [[WebViewJavascriptBridgeBase alloc] init]; - _base.delegate = self; -} - - -- (void)WKFlushMessageQueue { - [_webView evaluateJavaScript:[_base webViewJavascriptFetchQueyCommand] completionHandler:^(NSString* result, NSError* error) { - if (error != nil) { - NSLog(@"WebViewJavascriptBridge: WARNING: Error when trying to fetch data from WKWebView: %@", error); - } - [self->_base flushMessageQueue:result]; - }]; -} - -- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didFinishNavigation:)]) { - [strongDelegate webView:webView didFinishNavigation:navigation]; - } -} - -- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didCommitNavigation:)]) { - [strongDelegate webView:webView didCommitNavigation:navigation]; - } -} - -- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationResponse:decisionHandler:)]) { - [strongDelegate webView:webView decidePolicyForNavigationResponse:navigationResponse decisionHandler:decisionHandler]; - } - else { - decisionHandler(WKNavigationResponsePolicyAllow); - } -} - -- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didReceiveAuthenticationChallenge:completionHandler:)]) { - [strongDelegate webView:webView didReceiveAuthenticationChallenge:challenge completionHandler:completionHandler]; - } else { - completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil); - } -} - -- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { - if (webView != _webView) { return; } - NSURL *url = navigationAction.request.URL; - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - - if ([_base isWebViewJavascriptBridgeURL:url]) { - if ([_base isBridgeLoadedURL:url]) { - [_base injectJavascriptFile]; - } else if ([_base isQueueMessageURL:url]) { - [self WKFlushMessageQueue]; - } else { - [_base logUnkownMessage:url]; - } - decisionHandler(WKNavigationActionPolicyCancel); - return; - } - - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) { - [_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler]; - } else { - decisionHandler(WKNavigationActionPolicyAllow); - } -} - -- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences * _Nonnull))decisionHandler API_AVAILABLE(ios(13.0)){ - if (webView != _webView) { return; } - NSURL *url = navigationAction.request.URL; - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - - if ([_base isWebViewJavascriptBridgeURL:url]) { - if ([_base isBridgeLoadedURL:url]) { - [_base injectJavascriptFile]; - } else if ([_base isQueueMessageURL:url]) { - [self WKFlushMessageQueue]; - } else { - [_base logUnkownMessage:url]; - } - decisionHandler(WKNavigationActionPolicyCancel, preferences); - return; - } - - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:preferences:decisionHandler:)]) { - [_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction preferences:preferences decisionHandler:decisionHandler]; - } else { - decisionHandler(WKNavigationActionPolicyAllow, preferences); - } -} - -- (void)webView:(WKWebView *)webView navigationAction:(WKNavigationAction *)navigationAction didBecomeDownload:(WKDownload *)download API_AVAILABLE(ios(14.5)){ - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:navigationAction:didBecomeDownload:)]) { - [strongDelegate webView:webView navigationAction:navigationAction didBecomeDownload:download]; - } -} - -- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didStartProvisionalNavigation:)]) { - [strongDelegate webView:webView didStartProvisionalNavigation:navigation]; - } -} - -- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didReceiveServerRedirectForProvisionalNavigation:)]) { - [strongDelegate webView:webView didReceiveServerRedirectForProvisionalNavigation:navigation]; - } -} - -- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didFailNavigation:withError:)]) { - [strongDelegate webView:webView didFailNavigation:navigation withError:error]; - } -} - -- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didFailProvisionalNavigation:withError:)]) { - [strongDelegate webView:webView didFailProvisionalNavigation:navigation withError:error]; - } -} - -- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webViewWebContentProcessDidTerminate:)]) { - [strongDelegate webViewWebContentProcessDidTerminate:webView]; - } -} - -- (void)webView:(WKWebView *)webView navigationResponse:(WKNavigationResponse *)navigationResponse didBecomeDownload:(WKDownload *)download API_AVAILABLE(ios(14.5)){ - if (webView != _webView) { return; } - - __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate; - if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:navigationResponse:didBecomeDownload:)]) { - [strongDelegate webView:webView navigationResponse:navigationResponse didBecomeDownload:download]; - } -} - -- (NSString*) _evaluateJavascript:(NSString*)javascriptCommand { - [_webView evaluateJavaScript:javascriptCommand completionHandler:nil]; - return NULL; -} - - - -@end diff --git a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.h b/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.h deleted file mode 100755 index 54d80acc6..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// WebViewJavascriptBridgeBase.h -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - -#import - -#define kOldProtocolScheme @"wvjbscheme" -#define kNewProtocolScheme @"https" -#define kQueueHasMessage @"__wvjb_queue_message__" -#define kBridgeLoaded @"__bridge_loaded__" - -typedef void (^WVJBResponseCallback)(id responseData); -typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback); -typedef NSDictionary WVJBMessage; - -@protocol WebViewJavascriptBridgeBaseDelegate -- (NSString*) _evaluateJavascript:(NSString*)javascriptCommand; -@end - -@interface WebViewJavascriptBridgeBase : NSObject - - -@property (weak, nonatomic) id delegate; -@property (strong, nonatomic) NSMutableArray* startupMessageQueue; -@property (strong, nonatomic) NSMutableDictionary* responseCallbacks; -@property (strong, nonatomic) NSMutableDictionary* messageHandlers; -@property (strong, nonatomic) WVJBHandler messageHandler; - -+ (void)enableLogging; -+ (void)setLogMaxLength:(int)length; -- (void)reset; -- (void)sendData:(id)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName; -- (void)flushMessageQueue:(NSString *)messageQueueString; -- (void)injectJavascriptFile; -- (BOOL)isWebViewJavascriptBridgeURL:(NSURL*)url; -- (BOOL)isQueueMessageURL:(NSURL*)urll; -- (BOOL)isBridgeLoadedURL:(NSURL*)urll; -- (void)logUnkownMessage:(NSURL*)url; -- (NSString *)webViewJavascriptCheckCommand; -- (NSString *)webViewJavascriptFetchQueyCommand; -- (void)disableJavscriptAlertBoxSafetyTimeout; - -@end diff --git a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m b/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m deleted file mode 100755 index d68140586..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m +++ /dev/null @@ -1,227 +0,0 @@ -// -// WebViewJavascriptBridgeBase.m -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - -#import -#import "WebViewJavascriptBridgeBase.h" -#import "WebViewJavascriptBridge_JS.h" -//#import "AdjustBridge_JS.h" -#import "AdjustBridgeRegister.h" - -@implementation WebViewJavascriptBridgeBase { - __weak id _webViewDelegate; - long _uniqueId; -} - -static bool logging = false; -static int logMaxLength = 500; - -+ (void)enableLogging { logging = true; } -+ (void)setLogMaxLength:(int)length { logMaxLength = length;} - -- (id)init { - if (self = [super init]) { - self.messageHandlers = [NSMutableDictionary dictionary]; - self.startupMessageQueue = [NSMutableArray array]; - self.responseCallbacks = [NSMutableDictionary dictionary]; - _uniqueId = 0; - } - return self; -} - -- (void)dealloc { - self.startupMessageQueue = nil; - self.responseCallbacks = nil; - self.messageHandlers = nil; -} - -- (void)reset { - self.startupMessageQueue = [NSMutableArray array]; - self.responseCallbacks = [NSMutableDictionary dictionary]; - _uniqueId = 0; -} - -- (void)sendData:(id)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName { - NSMutableDictionary* message = [NSMutableDictionary dictionary]; - - if (data) { - message[@"data"] = data; - } - - if (responseCallback) { - NSString* callbackId = [NSString stringWithFormat:@"objc_cb_%ld", ++_uniqueId]; - self.responseCallbacks[callbackId] = [responseCallback copy]; - message[@"callbackId"] = callbackId; - } - - if (handlerName) { - message[@"handlerName"] = handlerName; - } - [self _queueMessage:message]; -} - -- (void)flushMessageQueue:(NSString *)messageQueueString{ - if (messageQueueString == nil || messageQueueString.length == 0) { - NSLog(@"WebViewJavascriptBridge: WARNING: ObjC got nil while fetching the message queue JSON from webview. This can happen if the WebViewJavascriptBridge JS is not currently present in the webview, e.g if the webview just loaded a new page."); - return; - } - - id messages = [self _deserializeMessageJSON:messageQueueString]; - for (WVJBMessage* message in messages) { - if (![message isKindOfClass:[WVJBMessage class]]) { - NSLog(@"WebViewJavascriptBridge: WARNING: Invalid %@ received: %@", [message class], message); - continue; - } - [self _log:@"RCVD" json:message]; - - NSString* responseId = message[@"responseId"]; - if (responseId) { - WVJBResponseCallback responseCallback = _responseCallbacks[responseId]; - responseCallback(message[@"responseData"]); - [self.responseCallbacks removeObjectForKey:responseId]; - } else { - WVJBResponseCallback responseCallback = NULL; - NSString* callbackId = message[@"callbackId"]; - if (callbackId) { - responseCallback = ^(id responseData) { - if (responseData == nil) { - responseData = [NSNull null]; - } - - WVJBMessage* msg = @{ @"responseId":callbackId, @"responseData":responseData }; - [self _queueMessage:msg]; - }; - } else { - responseCallback = ^(id ignoreResponseData) { - // Do nothing - }; - } - - WVJBHandler handler = self.messageHandlers[message[@"handlerName"]]; - - if (!handler) { - NSLog(@"WVJBNoHandlerException, No handler for message from JS: %@", message); - continue; - } - - handler(message[@"data"], responseCallback); - } - } -} - -- (void)injectJavascriptFile { - NSString *js = WebViewJavascriptBridge_js(); - [self _evaluateJavascript:js]; - // Added to inject adjust js code - //NSString *adjust_js = AdjustBridge_js(); - NSString *adjust_js = [AdjustBridgeRegister AdjustBridge_js]; - [self _evaluateJavascript:adjust_js]; - if (self.startupMessageQueue) { - NSArray* queue = self.startupMessageQueue; - self.startupMessageQueue = nil; - for (id queuedMessage in queue) { - [self _dispatchMessage:queuedMessage]; - } - } -} - -- (BOOL)isWebViewJavascriptBridgeURL:(NSURL*)url { - if (![self isSchemeMatch:url]) { - return NO; - } - return [self isBridgeLoadedURL:url] || [self isQueueMessageURL:url]; -} - -- (BOOL)isSchemeMatch:(NSURL*)url { - NSString* scheme = url.scheme.lowercaseString; - return [scheme isEqualToString:kNewProtocolScheme] || [scheme isEqualToString:kOldProtocolScheme]; -} - -- (BOOL)isQueueMessageURL:(NSURL*)url { - NSString* host = url.host.lowercaseString; - return [self isSchemeMatch:url] && [host isEqualToString:kQueueHasMessage]; -} - -- (BOOL)isBridgeLoadedURL:(NSURL*)url { - NSString* host = url.host.lowercaseString; - return [self isSchemeMatch:url] && [host isEqualToString:kBridgeLoaded]; -} - -- (void)logUnkownMessage:(NSURL*)url { - NSLog(@"WebViewJavascriptBridge: WARNING: Received unknown WebViewJavascriptBridge command %@", [url absoluteString]); -} - -- (NSString *)webViewJavascriptCheckCommand { - return @"typeof WebViewJavascriptBridge == \'object\';"; -} - -- (NSString *)webViewJavascriptFetchQueyCommand { - return @"WebViewJavascriptBridge._fetchQueue();"; -} - -- (void)disableJavscriptAlertBoxSafetyTimeout { - [self sendData:nil responseCallback:nil handlerName:@"_disableJavascriptAlertBoxSafetyTimeout"]; -} - -// Private -// ------------------------------------------- - -- (void) _evaluateJavascript:(NSString *)javascriptCommand { - [self.delegate _evaluateJavascript:javascriptCommand]; -} - -- (void)_queueMessage:(WVJBMessage*)message { - if (self.startupMessageQueue) { - [self.startupMessageQueue addObject:message]; - } else { - [self _dispatchMessage:message]; - } -} - -- (void)_dispatchMessage:(WVJBMessage*)message { - NSString *messageJSON = [self _serializeMessage:message pretty:NO]; - [self _log:@"SEND" json:messageJSON]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\r" withString:@"\\r"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\f" withString:@"\\f"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\u2028" withString:@"\\u2028"]; - messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\u2029" withString:@"\\u2029"]; - - NSString* javascriptCommand = [NSString stringWithFormat:@"WebViewJavascriptBridge._handleMessageFromObjC('%@');", messageJSON]; - if ([[NSThread currentThread] isMainThread]) { - [self _evaluateJavascript:javascriptCommand]; - - } else { - dispatch_sync(dispatch_get_main_queue(), ^{ - [self _evaluateJavascript:javascriptCommand]; - }); - } -} - -- (NSString *)_serializeMessage:(id)message pretty:(BOOL)pretty{ - return [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:message options:(NSJSONWritingOptions)(pretty ? NSJSONWritingPrettyPrinted : 0) error:nil] encoding:NSUTF8StringEncoding]; -} - -- (NSArray*)_deserializeMessageJSON:(NSString *)messageJSON { - return [NSJSONSerialization JSONObjectWithData:[messageJSON dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil]; -} - -- (void)_log:(NSString *)action json:(id)json { - if (!logging) { return; } - if (![json isKindOfClass:[NSString class]]) { - json = [self _serializeMessage:json pretty:YES]; - } - if ([json length] > logMaxLength) { - NSLog(@"WVJB %@: %@ [...]", action, [json substringToIndex:logMaxLength]); - } else { - NSLog(@"WVJB %@: %@", action, json); - } -} - -@end diff --git a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.h b/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.h deleted file mode 100644 index 9c857f16e..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.h +++ /dev/null @@ -1,3 +0,0 @@ -#import - -NSString * WebViewJavascriptBridge_js(void); diff --git a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m b/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m deleted file mode 100644 index 670a552f1..000000000 --- a/AdjustBridge/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m +++ /dev/null @@ -1,139 +0,0 @@ -// This file contains the source for the Javascript side of the -// WebViewJavascriptBridge. It is plaintext, but converted to an NSString -// via some preprocessor tricks. -// -// Previous implementations of WebViewJavascriptBridge loaded the javascript source -// from a resource. This worked fine for app developers, but library developers who -// included the bridge into their library, awkwardly had to ask consumers of their -// library to include the resource, violating their encapsulation. By including the -// Javascript as a string resource, the encapsulation of the library is maintained. - -#import "WebViewJavascriptBridge_JS.h" - -NSString * WebViewJavascriptBridge_js() { - #define __wvjb_js_func__(x) #x - - // BEGIN preprocessorJSCode - static NSString * preprocessorJSCode = @__wvjb_js_func__( -;(function() { - if (window.WebViewJavascriptBridge) { - return; - } - - if (!window.onerror) { - window.onerror = function(msg, url, line) { - console.log("WebViewJavascriptBridge: ERROR:" + msg + "@" + url + ":" + line); - } - } - window.WebViewJavascriptBridge = { - registerHandler: registerHandler, - callHandler: callHandler, - disableJavscriptAlertBoxSafetyTimeout: disableJavscriptAlertBoxSafetyTimeout, - _fetchQueue: _fetchQueue, - _handleMessageFromObjC: _handleMessageFromObjC - }; - - var messagingIframe; - var sendMessageQueue = []; - var messageHandlers = {}; - - var CUSTOM_PROTOCOL_SCHEME = 'https'; - var QUEUE_HAS_MESSAGE = '__wvjb_queue_message__'; - - var responseCallbacks = {}; - var uniqueId = 1; - var dispatchMessagesWithTimeoutSafety = true; - - function registerHandler(handlerName, handler) { - messageHandlers[handlerName] = handler; - } - - function callHandler(handlerName, data, responseCallback) { - if (arguments.length == 2 && typeof data == 'function') { - responseCallback = data; - data = null; - } - _doSend({ handlerName:handlerName, data:data }, responseCallback); - } - function disableJavscriptAlertBoxSafetyTimeout() { - dispatchMessagesWithTimeoutSafety = false; - } - - function _doSend(message, responseCallback) { - if (responseCallback) { - var callbackId = 'cb_'+(uniqueId++)+'_'+new Date().getTime(); - responseCallbacks[callbackId] = responseCallback; - message['callbackId'] = callbackId; - } - sendMessageQueue.push(message); - messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE; - } - - function _fetchQueue() { - var messageQueueString = JSON.stringify(sendMessageQueue); - sendMessageQueue = []; - return messageQueueString; - } - - function _dispatchMessageFromObjC(messageJSON) { - if (dispatchMessagesWithTimeoutSafety) { - setTimeout(_doDispatchMessageFromObjC); - } else { - _doDispatchMessageFromObjC(); - } - - function _doDispatchMessageFromObjC() { - var message = JSON.parse(messageJSON); - var messageHandler; - var responseCallback; - - if (message.responseId) { - responseCallback = responseCallbacks[message.responseId]; - if (!responseCallback) { - return; - } - responseCallback(message.responseData); - delete responseCallbacks[message.responseId]; - } else { - if (message.callbackId) { - var callbackResponseId = message.callbackId; - responseCallback = function(responseData) { - _doSend({ handlerName:message.handlerName, responseId:callbackResponseId, responseData:responseData }); - }; - } - - var handler = messageHandlers[message.handlerName]; - if (!handler) { - console.log("WebViewJavascriptBridge: WARNING: no handler for message from ObjC:", message); - } else { - handler(message.data, responseCallback); - } - } - } - } - - function _handleMessageFromObjC(messageJSON) { - _dispatchMessageFromObjC(messageJSON); - } - - messagingIframe = document.createElement('iframe'); - messagingIframe.style.display = 'none'; - messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE; - document.documentElement.appendChild(messagingIframe); - - registerHandler("_disableJavascriptAlertBoxSafetyTimeout", disableJavscriptAlertBoxSafetyTimeout); - - setTimeout(_callWVJBCallbacks, 0); - function _callWVJBCallbacks() { - var callbacks = window.WVJBCallbacks; - delete window.WVJBCallbacks; - for (var i=0; i - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/AdjustSdkIm/AdjustSdkIm.h b/AdjustSdkIm/AdjustSdkIm.h deleted file mode 100644 index b5cb053d3..000000000 --- a/AdjustSdkIm/AdjustSdkIm.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// AdjustSdkIm.h -// AdjustSdkIm -// -// Created by Uglješa Erceg (@uerceg) on 19th Julu 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. -// - -#import - -//! Project version number for AdjustSdkIm. -FOUNDATION_EXPORT double AdjustSdkImVersionNumber; - -//! Project version string for AdjustSdkIm. -FOUNDATION_EXPORT const unsigned char AdjustSdkImVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/AdjustSdkImStatic/AdjustSdkIm.h b/AdjustSdkImStatic/AdjustSdkIm.h deleted file mode 100644 index 95e44b334..000000000 --- a/AdjustSdkImStatic/AdjustSdkIm.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// AdjustSdkImStatic.h -// AdjustSdkImStatic -// -// Created by Genady Buchatsky on 14.03.22. -// Copyright © 2022 Adjust GmbH. All rights reserved. -// - -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/AdjustSdkImStatic/module.modulemap b/AdjustSdkImStatic/module.modulemap deleted file mode 100644 index 2d8818ed7..000000000 --- a/AdjustSdkImStatic/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AdjustSdkIm { - umbrella header "AdjustSdkIm.h" - - export * - module * { export * } -} diff --git a/AdjustSdkStatic/module.modulemap b/AdjustSdkStatic/module.modulemap deleted file mode 100644 index a2b631561..000000000 --- a/AdjustSdkStatic/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AdjustSdk { - umbrella header "AdjustSdk.h" - - export * - module * { export * } -} diff --git a/AdjustSdkTv/AdjustSdkTv.h b/AdjustSdkTv/AdjustSdkTv.h deleted file mode 100644 index a89cfdfde..000000000 --- a/AdjustSdkTv/AdjustSdkTv.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// AdjustSdkTv.h -// AdjustSdkTv -// -// Created by Uglješa Erceg on 29/08/16. -// Copyright © 2016 adjust GmbH. All rights reserved. -// - -#import - -//! Project version number for AdjustSdkTv. -FOUNDATION_EXPORT double AdjustSdkTvVersionNumber; - -//! Project version string for AdjustSdkTv. -FOUNDATION_EXPORT const unsigned char AdjustSdkTvVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/AdjustSdkTv/Info.plist b/AdjustSdkTv/Info.plist deleted file mode 100644 index d3de8eefb..000000000 --- a/AdjustSdkTv/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/AdjustSdkTvStatic/AdjustSdkTv.h b/AdjustSdkTvStatic/AdjustSdkTv.h deleted file mode 100644 index 7a674f5e0..000000000 --- a/AdjustSdkTvStatic/AdjustSdkTv.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// AdjustSdkTvStatic.h -// AdjustSdkTvStatic -// -// Created by Genady Buchatsky on 14.03.22. -// Copyright © 2022 Adjust GmbH. All rights reserved. -// - -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/AdjustSdkTvStatic/module.modulemap b/AdjustSdkTvStatic/module.modulemap deleted file mode 100644 index a85ddab7c..000000000 --- a/AdjustSdkTvStatic/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AdjustSdkTv { - umbrella header "AdjustSdkTv.h" - - export * - module * { export * } -} diff --git a/AdjustSdkWebBridge/AdjustSdkWebBridge.h b/AdjustSdkWebBridge/AdjustSdkWebBridge.h deleted file mode 100644 index bd1ba368b..000000000 --- a/AdjustSdkWebBridge/AdjustSdkWebBridge.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// AdjustSdkWebBridge.h -// AdjustSdkWebBridge -// -// Created by Uglješa Erceg (@uerceg) on 27th July 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. -// - -#import - -//! Project version number for AdjustSdkWebBridge. -FOUNDATION_EXPORT double AdjustSdkWebBridgeVersionNumber; - -//! Project version string for AdjustSdkWebBridge. -FOUNDATION_EXPORT const unsigned char AdjustSdkWebBridgeVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -// Exposing entire WebViewJavascriptBridge framework -#import -#import -#import diff --git a/AdjustSdkWebBridge/Info.plist b/AdjustSdkWebBridge/Info.plist deleted file mode 100644 index 1007fd9dd..000000000 --- a/AdjustSdkWebBridge/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/AdjustSdkWebBridgeStatic/AdjustSdkWebBridge.h b/AdjustSdkWebBridgeStatic/AdjustSdkWebBridge.h deleted file mode 100644 index 7cf6e445a..000000000 --- a/AdjustSdkWebBridgeStatic/AdjustSdkWebBridge.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// AdjustSdkWebBridgeStatic.h -// AdjustSdkWebBridgeStatic -// -// Created by Genady Buchatsky on 14.03.22. -// Copyright © 2022 Adjust GmbH. All rights reserved. -// - -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -// Exposing entire WebViewJavascriptBridge framework -#import -#import -#import diff --git a/AdjustSdkWebBridgeStatic/module.modulemap b/AdjustSdkWebBridgeStatic/module.modulemap deleted file mode 100644 index b82e403e6..000000000 --- a/AdjustSdkWebBridgeStatic/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AdjustSdkWebBridge { - umbrella header "AdjustSdkWebBridge.h" - - export * - module * { export * } -} diff --git a/AdjustSignature/AdjustSigSdk.xcframework/Info.plist b/AdjustSignature/AdjustSigSdk.xcframework/Info.plist new file mode 100644 index 000000000..2ea1062f5 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/Info.plist @@ -0,0 +1,67 @@ + + + + + AvailableLibraries + + + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + AdjustSigSdk.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + LibraryIdentifier + ios-arm64 + LibraryPath + AdjustSigSdk.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + LibraryIdentifier + tvos-arm64_x86_64-simulator + LibraryPath + AdjustSigSdk.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + tvos + SupportedPlatformVariant + simulator + + + LibraryIdentifier + tvos-arm64 + LibraryPath + AdjustSigSdk.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + tvos + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeDirectory b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeDirectory new file mode 100644 index 000000000..d814cdc64 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeDirectory differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements new file mode 100644 index 000000000..c97f73d7d Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements-1 b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 000000000..7e626a104 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeRequirements-1 differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeResources b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeResources new file mode 100644 index 000000000..bcfafc263 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeResources @@ -0,0 +1,398 @@ + + + + + files + + ios-arm64/AdjustSigSdk.framework/AdjustSigSdk + + vsMiBlIic9BniryhiGGlkqGoqA4= + + ios-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + ios-arm64/AdjustSigSdk.framework/Info.plist + + vdFIqwnU+nqfzxHYSiwOFxobNkY= + + ios-arm64/AdjustSigSdk.framework/Modules/module.modulemap + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + ios-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk + + aFSy17qzUm5rKNboGkhGP7McQlk= + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist + + qcGLPv608DKNowi2jJ5260bL7VA= + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + tvos-arm64/AdjustSigSdk.framework/AdjustSigSdk + + /EubCFqzcCLx/IDGL14EtKCh7nc= + + tvos-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + tvos-arm64/AdjustSigSdk.framework/Info.plist + + heCdw+ssxUl8RRCsCb2ydwQUffY= + + tvos-arm64/AdjustSigSdk.framework/Modules/module.modulemap + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + tvos-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk + + aBvN5tYvHo61GpUF/vzcXiceksw= + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist + + tSLKGg/3vdyyEqMGYruVfC2WFx8= + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + + files2 + + ios-arm64/AdjustSigSdk.framework/AdjustSigSdk + + hash + + vsMiBlIic9BniryhiGGlkqGoqA4= + + hash2 + + ZYzWMBdpblZj4PZG+QjzQYwshgWtntw8JIwLrNkSZ20= + + + ios-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h + + hash + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + hash2 + + S8F9VDcgghyH2m9Gi7ZvZyEkdBppwtLNL6uEzRW6ilk= + + + ios-arm64/AdjustSigSdk.framework/Info.plist + + hash + + vdFIqwnU+nqfzxHYSiwOFxobNkY= + + hash2 + + UAQHZA2x/NnyC+VTPKfCMazkoPiS0HiIj4tD6kprelo= + + + ios-arm64/AdjustSigSdk.framework/Modules/module.modulemap + + hash + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + hash2 + + kd9v81OmO3cFRLQihqVnRnZfiUg8ZhjRGvn6pUSmt9E= + + + ios-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + hash + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + hash2 + + Uan3ld35l2WJyJ1G5qP0HQ1EMgYlK+nZeQb223lQRnE= + + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk + + hash + + aFSy17qzUm5rKNboGkhGP7McQlk= + + hash2 + + jDs5sObxvoSlHNFpNmna5YhVOH/inqyeuDXKd4XnZ+k= + + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h + + hash + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + hash2 + + S8F9VDcgghyH2m9Gi7ZvZyEkdBppwtLNL6uEzRW6ilk= + + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist + + hash + + qcGLPv608DKNowi2jJ5260bL7VA= + + hash2 + + 5gwUBLrxDmd6uXMRa6v7m3sagj5+cNG/bsaSduplkhM= + + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap + + hash + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + hash2 + + kd9v81OmO3cFRLQihqVnRnZfiUg8ZhjRGvn6pUSmt9E= + + + ios-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + hash + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + hash2 + + Uan3ld35l2WJyJ1G5qP0HQ1EMgYlK+nZeQb223lQRnE= + + + tvos-arm64/AdjustSigSdk.framework/AdjustSigSdk + + hash + + /EubCFqzcCLx/IDGL14EtKCh7nc= + + hash2 + + lQiolodXzUKBwrff+MOGkywn2rOsZQylDAl0J9kKqOI= + + + tvos-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h + + hash + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + hash2 + + S8F9VDcgghyH2m9Gi7ZvZyEkdBppwtLNL6uEzRW6ilk= + + + tvos-arm64/AdjustSigSdk.framework/Info.plist + + hash + + heCdw+ssxUl8RRCsCb2ydwQUffY= + + hash2 + + vmiKbGL9UQ5vedSl+J17XXyhCsNCgno3CBrCXIFqmp0= + + + tvos-arm64/AdjustSigSdk.framework/Modules/module.modulemap + + hash + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + hash2 + + kd9v81OmO3cFRLQihqVnRnZfiUg8ZhjRGvn6pUSmt9E= + + + tvos-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + hash + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + hash2 + + Uan3ld35l2WJyJ1G5qP0HQ1EMgYlK+nZeQb223lQRnE= + + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk + + hash + + aBvN5tYvHo61GpUF/vzcXiceksw= + + hash2 + + RUQmgjancwWIhOYtlkULJxv/TgC1ublh2ousQ3kDQOE= + + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h + + hash + + sXKWy2cvoAerPOw1gnudrG6SLq4= + + hash2 + + S8F9VDcgghyH2m9Gi7ZvZyEkdBppwtLNL6uEzRW6ilk= + + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist + + hash + + tSLKGg/3vdyyEqMGYruVfC2WFx8= + + hash2 + + Sr1dapxM0rK2AT9VNxCh40WdeUUtJU0X5gpopjj+x2Y= + + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap + + hash + + PN3uj8Df1Ep4w5ZlPHNWwb/rUgs= + + hash2 + + kd9v81OmO3cFRLQihqVnRnZfiUg8ZhjRGvn6pUSmt9E= + + + tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy + + hash + + gx7rkJr5pAUPtYWv4sPaZaQm6zQ= + + hash2 + + Uan3ld35l2WJyJ1G5qP0HQ1EMgYlK+nZeQb223lQRnE= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeSignature b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeSignature new file mode 100644 index 000000000..5446cab9c Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/_CodeSignature/CodeSignature differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/AdjustSigSdk b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/AdjustSigSdk new file mode 100755 index 000000000..b9911ae9f Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/AdjustSigSdk differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h new file mode 100644 index 000000000..f3bd9235d --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h @@ -0,0 +1,30 @@ +// +// Adjust +// +// Created by Abdullah Joseph on 17.04.19 +// Copyright © 2019 adjust GmbH. All rights reserved. +// + +#ifndef ADJSigner_h +#define ADJSigner_h + +#import + +@interface ADJSigner : NSObject + ++(nonnull NSString *)getVersion; + ++ (void)sign:(nonnull NSMutableDictionary *)packageDict + withActivityKind:(nonnull const char *)activityKind + withSdkVersion:(nonnull const char *)sdkVersion; + ++ (void)sign:(nonnull NSDictionary *)packageParamsDict + withExtraParams:(nonnull NSDictionary *)extraParamsDict + withOutputParams:(nonnull NSMutableDictionary *)outputParamsDict; + +@end + +// Trampoline from C to ObjC +void _ADJSigner_sign(size_t argc, void **args); + +#endif /* ADJSigner_h */ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Info.plist b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Info.plist new file mode 100644 index 000000000..a24d90ba5 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Info.plist differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Modules/module.modulemap b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Modules/module.modulemap new file mode 100644 index 000000000..a7dc35bf3 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AdjustSigSdk { + umbrella header "ADJSigner.h" + + export * + module * { export * } +} diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..80a7d6dfd --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,29 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDiagnosticData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyAccessedAPITypes + + + + diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk new file mode 100755 index 000000000..33cefe8fb Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h new file mode 100644 index 000000000..f3bd9235d --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h @@ -0,0 +1,30 @@ +// +// Adjust +// +// Created by Abdullah Joseph on 17.04.19 +// Copyright © 2019 adjust GmbH. All rights reserved. +// + +#ifndef ADJSigner_h +#define ADJSigner_h + +#import + +@interface ADJSigner : NSObject + ++(nonnull NSString *)getVersion; + ++ (void)sign:(nonnull NSMutableDictionary *)packageDict + withActivityKind:(nonnull const char *)activityKind + withSdkVersion:(nonnull const char *)sdkVersion; + ++ (void)sign:(nonnull NSDictionary *)packageParamsDict + withExtraParams:(nonnull NSDictionary *)extraParamsDict + withOutputParams:(nonnull NSMutableDictionary *)outputParamsDict; + +@end + +// Trampoline from C to ObjC +void _ADJSigner_sign(size_t argc, void **args); + +#endif /* ADJSigner_h */ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist new file mode 100644 index 000000000..5338feb2d Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap new file mode 100644 index 000000000..a7dc35bf3 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AdjustSigSdk { + umbrella header "ADJSigner.h" + + export * + module * { export * } +} diff --git a/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..80a7d6dfd --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/ios-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,29 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDiagnosticData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyAccessedAPITypes + + + + diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/AdjustSigSdk b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/AdjustSigSdk new file mode 100755 index 000000000..aff536264 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/AdjustSigSdk differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h new file mode 100644 index 000000000..f3bd9235d --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Headers/ADJSigner.h @@ -0,0 +1,30 @@ +// +// Adjust +// +// Created by Abdullah Joseph on 17.04.19 +// Copyright © 2019 adjust GmbH. All rights reserved. +// + +#ifndef ADJSigner_h +#define ADJSigner_h + +#import + +@interface ADJSigner : NSObject + ++(nonnull NSString *)getVersion; + ++ (void)sign:(nonnull NSMutableDictionary *)packageDict + withActivityKind:(nonnull const char *)activityKind + withSdkVersion:(nonnull const char *)sdkVersion; + ++ (void)sign:(nonnull NSDictionary *)packageParamsDict + withExtraParams:(nonnull NSDictionary *)extraParamsDict + withOutputParams:(nonnull NSMutableDictionary *)outputParamsDict; + +@end + +// Trampoline from C to ObjC +void _ADJSigner_sign(size_t argc, void **args); + +#endif /* ADJSigner_h */ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Info.plist b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Info.plist new file mode 100644 index 000000000..f01ed6719 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Info.plist differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Modules/module.modulemap b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Modules/module.modulemap new file mode 100644 index 000000000..a7dc35bf3 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AdjustSigSdk { + umbrella header "ADJSigner.h" + + export * + module * { export * } +} diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..80a7d6dfd --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64/AdjustSigSdk.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,29 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDiagnosticData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyAccessedAPITypes + + + + diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk new file mode 100755 index 000000000..fc648a49c Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/AdjustSigSdk differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h new file mode 100644 index 000000000..f3bd9235d --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Headers/ADJSigner.h @@ -0,0 +1,30 @@ +// +// Adjust +// +// Created by Abdullah Joseph on 17.04.19 +// Copyright © 2019 adjust GmbH. All rights reserved. +// + +#ifndef ADJSigner_h +#define ADJSigner_h + +#import + +@interface ADJSigner : NSObject + ++(nonnull NSString *)getVersion; + ++ (void)sign:(nonnull NSMutableDictionary *)packageDict + withActivityKind:(nonnull const char *)activityKind + withSdkVersion:(nonnull const char *)sdkVersion; + ++ (void)sign:(nonnull NSDictionary *)packageParamsDict + withExtraParams:(nonnull NSDictionary *)extraParamsDict + withOutputParams:(nonnull NSMutableDictionary *)outputParamsDict; + +@end + +// Trampoline from C to ObjC +void _ADJSigner_sign(size_t argc, void **args); + +#endif /* ADJSigner_h */ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist new file mode 100644 index 000000000..a24c720d1 Binary files /dev/null and b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Info.plist differ diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap new file mode 100644 index 000000000..a7dc35bf3 --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AdjustSigSdk { + umbrella header "ADJSigner.h" + + export * + module * { export * } +} diff --git a/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..80a7d6dfd --- /dev/null +++ b/AdjustSignature/AdjustSigSdk.xcframework/tvos-arm64_x86_64-simulator/AdjustSigSdk.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,29 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDiagnosticData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyAccessedAPITypes + + + + diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj index 0dcf5d44c..e32c06f70 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj @@ -3,10 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 48; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ + 0A584D7D2C3E98CF0071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D7B2C3E98CF0071A651 /* AdjustSigSdk.xcframework */; }; + 0A584D7E2C3E98CF0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D7B2C3E98CF0071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584D822C3E994E0071A651 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D812C3E994E0071A651 /* libAdjust.a */; }; 524BACA4221C4EE800624F6C /* PSWebSocketDriver.m in Sources */ = {isa = PBXBuildFile; fileRef = 524BAC91221C4EE700624F6C /* PSWebSocketDriver.m */; }; 524BACA5221C4EE800624F6C /* PSWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 524BAC94221C4EE700624F6C /* PSWebSocket.m */; }; 524BACA6221C4EE800624F6C /* PSWebSocketServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 524BAC98221C4EE700624F6C /* PSWebSocketServer.m */; }; @@ -23,42 +26,10 @@ 6F0842342007769F00568A31 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6F0842332007769F00568A31 /* Assets.xcassets */; }; 6F084237200776A000568A31 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6F084235200776A000568A31 /* LaunchScreen.storyboard */; }; 6F08423A200776A000568A31 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F084239200776A000568A31 /* main.m */; }; - 6F3A5E6F2018CE14000AACD0 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E2C2018CE14000AACD0 /* ADJTimerOnce.m */; }; - 6F3A5E702018CE14000AACD0 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E2D2018CE14000AACD0 /* ADJAttributionHandler.m */; }; - 6F3A5E712018CE14000AACD0 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E302018CE14000AACD0 /* ADJRequestHandler.m */; }; - 6F3A5E732018CE14000AACD0 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E342018CE14000AACD0 /* ADJSdkClickHandler.m */; }; - 6F3A5E742018CE14000AACD0 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E362018CE14000AACD0 /* ADJEvent.m */; }; - 6F3A5E752018CE14000AACD0 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E3A2018CE14000AACD0 /* ADJSessionSuccess.m */; }; - 6F3A5E762018CE14000AACD0 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E3B2018CE14000AACD0 /* ADJEventFailure.m */; }; - 6F3A5E772018CE14000AACD0 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E3D2018CE14000AACD0 /* ADJEventSuccess.m */; }; - 6F3A5E782018CE14000AACD0 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E3E2018CE14000AACD0 /* ADJActivityState.m */; }; - 6F3A5E792018CE14000AACD0 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E3F2018CE14000AACD0 /* ADJSessionFailure.m */; }; - 6F3A5E7A2018CE14000AACD0 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E432018CE14000AACD0 /* ADJTimerCycle.m */; }; - 6F3A5E7B2018CE14000AACD0 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E442018CE14000AACD0 /* ADJSessionParameters.m */; }; - 6F3A5E7C2018CE14000AACD0 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E452018CE14000AACD0 /* ADJLogger.m */; }; - 6F3A5E7D2018CE14000AACD0 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E462018CE14000AACD0 /* ADJBackoffStrategy.m */; }; - 6F3A5E7E2018CE14000AACD0 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E482018CE14000AACD0 /* Adjust.m */; }; - 6F3A5E7F2018CE14000AACD0 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E4C2018CE14000AACD0 /* ADJConfig.m */; }; - 6F3A5E802018CE14000AACD0 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E4D2018CE14000AACD0 /* ADJPackageHandler.m */; }; - 6F3A5E812018CE14000AACD0 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E502018CE14000AACD0 /* ADJActivityKind.m */; }; - 6F3A5E822018CE14000AACD0 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E532018CE14000AACD0 /* NSString+ADJAdditions.m */; }; - 6F3A5E832018CE14000AACD0 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E552018CE14000AACD0 /* NSData+ADJAdditions.m */; }; - 6F3A5E852018CE14000AACD0 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E592018CE14000AACD0 /* ADJAttribution.m */; }; - 6F3A5E872018CE14000AACD0 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E5C2018CE14000AACD0 /* ADJActivityPackage.m */; }; - 6F3A5E882018CE14000AACD0 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E5D2018CE14000AACD0 /* ADJUtil.m */; }; - 6F3A5E892018CE14000AACD0 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E602018CE14000AACD0 /* ADJAdjustFactory.m */; }; - 6F3A5E8A2018CE14000AACD0 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E632018CE14000AACD0 /* ADJResponseData.m */; }; - 6F3A5E8B2018CE14000AACD0 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E652018CE14000AACD0 /* ADJPackageBuilder.m */; }; - 6F3A5E8C2018CE14000AACD0 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E662018CE14000AACD0 /* ADJUserDefaults.m */; }; - 6F3A5E8E2018CE14000AACD0 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E6C2018CE14000AACD0 /* ADJActivityHandler.m */; }; - 6F3A5E9E2018CE3A000AACD0 /* ATLTestInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E912018CE3A000AACD0 /* ATLTestInfo.m */; }; 6F3A5E9F2018CE3A000AACD0 /* ATLUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E982018CE3A000AACD0 /* ATLUtil.m */; }; - 6F3A5EA12018CE3A000AACD0 /* ATLUtilNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E9B2018CE3A000AACD0 /* ATLUtilNetworking.m */; }; 6F3A5EA22018CE3A000AACD0 /* ATLTestLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E9C2018CE3A000AACD0 /* ATLTestLibrary.m */; }; 6F3A5EA32018CE3A000AACD0 /* ATLBlockingQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F3A5E9D2018CE3A000AACD0 /* ATLBlockingQueue.m */; }; - 6F84510E25B1B1110004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84510C25B1B1100004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB789F2636DD0F00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB789E2636DD0F00773869 /* ADJLinkResolution.m */; }; - 6FBEE92024E421B200FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE91F24E421B200FEF3F1 /* ADJUrlStrategy.m */; }; + 6F666C9D2C00C80A005A6D90 /* ATLNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F666C9B2C00C80A005A6D90 /* ATLNetworking.m */; }; 6FFCFE5F2007978300467F01 /* ATAAdjustCommandExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE5D2007978300467F01 /* ATAAdjustCommandExecutor.m */; }; 6FFCFE6D200797D100467F01 /* ATAAdjustDelegateAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE61200797D000467F01 /* ATAAdjustDelegateAttribution.m */; }; 6FFCFE6E200797D100467F01 /* ATAAdjustDelegateEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE63200797D000467F01 /* ATAAdjustDelegateEventFailure.m */; }; @@ -66,22 +37,32 @@ 6FFCFE70200797D100467F01 /* ATAAdjustDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE66200797D000467F01 /* ATAAdjustDelegate.m */; }; 6FFCFE71200797D100467F01 /* ATAAdjustDelegateEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE69200797D000467F01 /* ATAAdjustDelegateEventSuccess.m */; }; 6FFCFE72200797D100467F01 /* ATAAdjustDelegateSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE6A200797D000467F01 /* ATAAdjustDelegateSessionSuccess.m */; }; - 9D0B5C162929787B007009C1 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B5C142929787B007009C1 /* ADJSKAdNetwork.m */; }; 9D1D8E9E219246E50088E3CF /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1D8E9D219246E50088E3CF /* iAd.framework */; }; 9D1D8EA0219246EA0088E3CF /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1D8E9F219246EA0088E3CF /* AdSupport.framework */; }; 9D1D8EA2219246EF0088E3CF /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1D8EA1219246EF0088E3CF /* CoreTelephony.framework */; }; - 9D2F24082447DDCB00B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F24072447DDCA00B7CA90 /* ADJSubscription.m */; }; - 9D3A2AC226263AFC00BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AC026263AFB00BD6E44 /* ADJAdRevenue.m */; }; - 9D3A34B82A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A34B22A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.m */; }; - 9D3A34B92A2DF5FB0029CE4F /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A34B52A2DF5FB0029CE4F /* ADJPurchase.m */; }; - 9D3A34BA2A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A34B72A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.m */; }; 9D75AFDB210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D75AFDA210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.m */; }; + 9D8EF16D2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D8EF16B2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.m */; }; + 9D8EF16F2BD7BECA0092AB68 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D8EF16E2BD7BECA0092AB68 /* StoreKit.framework */; }; 9DAA5C6A25B0F81200C718DD /* AdServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAA5C6925B0F81100C718DD /* AdServices.framework */; }; - 9DF38229260E9BA90033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF38227260E9BA90033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92D932630ED95000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D912630ED95000FC3FC /* ADJPackageParams.m */; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584D802C3E98CF0071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584D7E2C3E98CF0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ + 0A584D7B2C3E98CF0071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584D812C3E994E0071A651 /* libAdjust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjust.a; sourceTree = BUILT_PRODUCTS_DIR; }; 524BAC91221C4EE700624F6C /* PSWebSocketDriver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSWebSocketDriver.m; path = PocketSocket/PSWebSocketDriver.m; sourceTree = ""; }; 524BAC92221C4EE700624F6C /* PSWebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSWebSocket.h; path = PocketSocket/PSWebSocket.h; sourceTree = ""; }; 524BAC93221C4EE700624F6C /* PSWebSocketInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSWebSocketInternal.h; path = PocketSocket/PSWebSocketInternal.h; sourceTree = ""; }; @@ -115,80 +96,15 @@ 6F084236200776A000568A31 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6F084238200776A000568A31 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6F084239200776A000568A31 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6F3A5E2A2018CE14000AACD0 /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 6F3A5E2C2018CE14000AACD0 /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 6F3A5E2D2018CE14000AACD0 /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 6F3A5E2E2018CE14000AACD0 /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 6F3A5E2F2018CE14000AACD0 /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 6F3A5E302018CE14000AACD0 /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 6F3A5E322018CE14000AACD0 /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 6F3A5E342018CE14000AACD0 /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 6F3A5E352018CE14000AACD0 /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 6F3A5E362018CE14000AACD0 /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 6F3A5E372018CE14000AACD0 /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 6F3A5E382018CE14000AACD0 /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 6F3A5E392018CE14000AACD0 /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 6F3A5E3A2018CE14000AACD0 /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 6F3A5E3B2018CE14000AACD0 /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 6F3A5E3C2018CE14000AACD0 /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 6F3A5E3D2018CE14000AACD0 /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 6F3A5E3E2018CE14000AACD0 /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 6F3A5E3F2018CE14000AACD0 /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 6F3A5E402018CE14000AACD0 /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 6F3A5E422018CE14000AACD0 /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 6F3A5E432018CE14000AACD0 /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 6F3A5E442018CE14000AACD0 /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 6F3A5E452018CE14000AACD0 /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 6F3A5E462018CE14000AACD0 /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 6F3A5E472018CE14000AACD0 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 6F3A5E482018CE14000AACD0 /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 6F3A5E492018CE14000AACD0 /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 6F3A5E4A2018CE14000AACD0 /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 6F3A5E4C2018CE14000AACD0 /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 6F3A5E4D2018CE14000AACD0 /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 6F3A5E4E2018CE14000AACD0 /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 6F3A5E4F2018CE14000AACD0 /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 6F3A5E502018CE14000AACD0 /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 6F3A5E532018CE14000AACD0 /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 6F3A5E552018CE14000AACD0 /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 6F3A5E562018CE14000AACD0 /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 6F3A5E582018CE14000AACD0 /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 6F3A5E592018CE14000AACD0 /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 6F3A5E5B2018CE14000AACD0 /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 6F3A5E5C2018CE14000AACD0 /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 6F3A5E5D2018CE14000AACD0 /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 6F3A5E5E2018CE14000AACD0 /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 6F3A5E5F2018CE14000AACD0 /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 6F3A5E602018CE14000AACD0 /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 6F3A5E612018CE14000AACD0 /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 6F3A5E622018CE14000AACD0 /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 6F3A5E632018CE14000AACD0 /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 6F3A5E642018CE14000AACD0 /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 6F3A5E652018CE14000AACD0 /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 6F3A5E662018CE14000AACD0 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 6F3A5E672018CE14000AACD0 /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 6F3A5E682018CE14000AACD0 /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 6F3A5E692018CE14000AACD0 /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 6F3A5E6A2018CE14000AACD0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6F3A5E6B2018CE14000AACD0 /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 6F3A5E6C2018CE14000AACD0 /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 6F3A5E912018CE3A000AACD0 /* ATLTestInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestInfo.m; sourceTree = ""; }; 6F3A5E922018CE3A000AACD0 /* ATLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtil.h; sourceTree = ""; }; 6F3A5E942018CE3A000AACD0 /* ATLConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLConstants.h; sourceTree = ""; }; 6F3A5E952018CE3A000AACD0 /* ATLTestLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestLibrary.h; sourceTree = ""; }; - 6F3A5E962018CE3A000AACD0 /* ATLUtilNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtilNetworking.h; sourceTree = ""; }; 6F3A5E972018CE3A000AACD0 /* ATLBlockingQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLBlockingQueue.h; sourceTree = ""; }; 6F3A5E982018CE3A000AACD0 /* ATLUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtil.m; sourceTree = ""; }; - 6F3A5E992018CE3A000AACD0 /* ATLTestInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestInfo.h; sourceTree = ""; }; - 6F3A5E9B2018CE3A000AACD0 /* ATLUtilNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtilNetworking.m; sourceTree = ""; }; 6F3A5E9C2018CE3A000AACD0 /* ATLTestLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestLibrary.m; sourceTree = ""; }; 6F3A5E9D2018CE3A000AACD0 /* ATLBlockingQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLBlockingQueue.m; sourceTree = ""; }; - 6F84510C25B1B1100004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6F84510D25B1B1110004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6FAB789D2636DD0F00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB789E2636DD0F00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FBEE91E24E421B200FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE91F24E421B200FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; + 6F666C9B2C00C80A005A6D90 /* ATLNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLNetworking.m; sourceTree = ""; }; + 6F666C9C2C00C80A005A6D90 /* ATLNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLNetworking.h; sourceTree = ""; }; 6FFCFE5D2007978300467F01 /* ATAAdjustCommandExecutor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAAdjustCommandExecutor.m; sourceTree = ""; }; 6FFCFE5E2007978300467F01 /* ATAAdjustCommandExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAAdjustCommandExecutor.h; sourceTree = ""; }; 6FFCFE61200797D000467F01 /* ATAAdjustDelegateAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAAdjustDelegateAttribution.m; sourceTree = ""; }; @@ -203,28 +119,15 @@ 6FFCFE6A200797D000467F01 /* ATAAdjustDelegateSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAAdjustDelegateSessionSuccess.m; sourceTree = ""; }; 6FFCFE6B200797D000467F01 /* ATAAdjustDelegateEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAAdjustDelegateEventSuccess.h; sourceTree = ""; }; 6FFCFE6C200797D000467F01 /* ATAAdjustDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAAdjustDelegate.h; sourceTree = ""; }; - 9D0B5C142929787B007009C1 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D0B5C152929787B007009C1 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; 9D1D8E9D219246E50088E3CF /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 9D1D8E9F219246EA0088E3CF /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 9D1D8EA1219246EF0088E3CF /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; - 9D2F24062447DDCA00B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F24072447DDCA00B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D3A2AC026263AFB00BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2AC126263AFB00BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A34B22A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 9D3A34B32A2DF5FB0029CE4F /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 9D3A34B42A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 9D3A34B52A2DF5FB0029CE4F /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 9D3A34B62A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 9D3A34B72A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; 9D75AFD9210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ATAAdjustDelegateDeferredDeeplink.h; sourceTree = ""; }; 9D75AFDA210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ATAAdjustDelegateDeferredDeeplink.m; sourceTree = ""; }; + 9D8EF16B2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAAdjustDelegateSkan.m; sourceTree = ""; }; + 9D8EF16C2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAAdjustDelegateSkan.h; sourceTree = ""; }; + 9D8EF16E2BD7BECA0092AB68 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 9DAA5C6925B0F81100C718DD /* AdServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdServices.framework; path = System/Library/Frameworks/AdServices.framework; sourceTree = SDKROOT; }; - 9DF38227260E9BA90033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF38228260E9BA90033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF92D912630ED95000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92D922630ED95000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -232,8 +135,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0A584D822C3E994E0071A651 /* libAdjust.a in Frameworks */, 9D1D8E9E219246E50088E3CF /* iAd.framework in Frameworks */, + 0A584D7D2C3E98CF0071A651 /* AdjustSigSdk.xcframework in Frameworks */, 9DAA5C6A25B0F81200C718DD /* AdServices.framework in Frameworks */, + 9D8EF16F2BD7BECA0092AB68 /* StoreKit.framework in Frameworks */, 9D1D8EA0219246EA0088E3CF /* AdSupport.framework in Frameworks */, 9D1D8EA2219246EF0088E3CF /* CoreTelephony.framework in Frameworks */, ); @@ -275,106 +181,10 @@ 6F084238200776A000568A31 /* Info.plist */, 6F084239200776A000568A31 /* main.m */, 6F3A5E902018CE3A000AACD0 /* AdjustTestLibrary */, - 6F3A5E292018CE14000AACD0 /* Adjust */, ); path = AdjustTestApp; sourceTree = ""; }; - 6F3A5E292018CE14000AACD0 /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D3A34B32A2DF5FB0029CE4F /* ADJPurchase.h */, - 9D3A34B52A2DF5FB0029CE4F /* ADJPurchase.m */, - 9D3A34B62A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.h */, - 9D3A34B72A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.m */, - 9D3A34B42A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.h */, - 9D3A34B22A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.m */, - 9D0B5C152929787B007009C1 /* ADJSKAdNetwork.h */, - 9D0B5C142929787B007009C1 /* ADJSKAdNetwork.m */, - 9D3A2AC126263AFB00BD6E44 /* ADJAdRevenue.h */, - 9D3A2AC026263AFB00BD6E44 /* ADJAdRevenue.m */, - 6F3A5E2A2018CE14000AACD0 /* ADJConfig.h */, - 6F3A5E2C2018CE14000AACD0 /* ADJTimerOnce.m */, - 6F3A5E2D2018CE14000AACD0 /* ADJAttributionHandler.m */, - 6F3A5E2E2018CE14000AACD0 /* Adjust.h */, - 6F3A5E2F2018CE14000AACD0 /* ADJActivityPackage.h */, - 6F3A5E302018CE14000AACD0 /* ADJRequestHandler.m */, - 6F3A5E322018CE14000AACD0 /* ADJAttribution.h */, - 6F3A5E342018CE14000AACD0 /* ADJSdkClickHandler.m */, - 6F3A5E352018CE14000AACD0 /* ADJActivityKind.h */, - 6F3A5E362018CE14000AACD0 /* ADJEvent.m */, - 6F3A5E372018CE14000AACD0 /* ADJPackageHandler.h */, - 6F3A5E382018CE14000AACD0 /* ADJPackageBuilder.h */, - 6F3A5E392018CE14000AACD0 /* ADJResponseData.h */, - 6F3A5E3A2018CE14000AACD0 /* ADJSessionSuccess.m */, - 6F3A5E3B2018CE14000AACD0 /* ADJEventFailure.m */, - 6F3A5E3C2018CE14000AACD0 /* ADJAdjustFactory.h */, - 6F3A5E3D2018CE14000AACD0 /* ADJEventSuccess.m */, - 6F3A5E3E2018CE14000AACD0 /* ADJActivityState.m */, - 6F3A5E3F2018CE14000AACD0 /* ADJSessionFailure.m */, - 6F3A5E402018CE14000AACD0 /* ADJUtil.h */, - 6F3A5E422018CE14000AACD0 /* ADJActivityHandler.h */, - 6F3A5E432018CE14000AACD0 /* ADJTimerCycle.m */, - 6F3A5E442018CE14000AACD0 /* ADJSessionParameters.m */, - 6F3A5E452018CE14000AACD0 /* ADJLogger.m */, - 6F3A5E462018CE14000AACD0 /* ADJBackoffStrategy.m */, - 6F3A5E472018CE14000AACD0 /* ADJUserDefaults.h */, - 6F3A5E482018CE14000AACD0 /* Adjust.m */, - 6F3A5E492018CE14000AACD0 /* ADJAttributionHandler.h */, - 6F3A5E4A2018CE14000AACD0 /* ADJTimerOnce.h */, - 6F3A5E4C2018CE14000AACD0 /* ADJConfig.m */, - 6F3A5E4D2018CE14000AACD0 /* ADJPackageHandler.m */, - 6F3A5E4E2018CE14000AACD0 /* ADJEvent.h */, - 6F3A5E4F2018CE14000AACD0 /* ADJSdkClickHandler.h */, - 6F3A5E502018CE14000AACD0 /* ADJActivityKind.m */, - 6F3A5E522018CE14000AACD0 /* ADJAdditions */, - 6F3A5E592018CE14000AACD0 /* ADJAttribution.m */, - 6F3A5E5B2018CE14000AACD0 /* ADJRequestHandler.h */, - 6F3A5E5C2018CE14000AACD0 /* ADJActivityPackage.m */, - 6F3A5E5D2018CE14000AACD0 /* ADJUtil.m */, - 6F3A5E5E2018CE14000AACD0 /* ADJSessionFailure.h */, - 6F3A5E5F2018CE14000AACD0 /* ADJActivityState.h */, - 6F3A5E602018CE14000AACD0 /* ADJAdjustFactory.m */, - 6F3A5E612018CE14000AACD0 /* ADJEventSuccess.h */, - 6F3A5E622018CE14000AACD0 /* ADJEventFailure.h */, - 6F3A5E632018CE14000AACD0 /* ADJResponseData.m */, - 6F3A5E642018CE14000AACD0 /* ADJSessionSuccess.h */, - 6F3A5E652018CE14000AACD0 /* ADJPackageBuilder.m */, - 6F3A5E662018CE14000AACD0 /* ADJUserDefaults.m */, - 6F3A5E672018CE14000AACD0 /* ADJBackoffStrategy.h */, - 6F3A5E682018CE14000AACD0 /* ADJLogger.h */, - 6F3A5E692018CE14000AACD0 /* ADJSessionParameters.h */, - 6F3A5E6A2018CE14000AACD0 /* Info.plist */, - 6F3A5E6B2018CE14000AACD0 /* ADJTimerCycle.h */, - 6F3A5E6C2018CE14000AACD0 /* ADJActivityHandler.m */, - 9D2F24062447DDCA00B7CA90 /* ADJSubscription.h */, - 9D2F24072447DDCA00B7CA90 /* ADJSubscription.m */, - 6FBEE91E24E421B200FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE91F24E421B200FEF3F1 /* ADJUrlStrategy.m */, - 6F84510D25B1B1110004C7C0 /* ADJThirdPartySharing.h */, - 6F84510C25B1B1100004C7C0 /* ADJThirdPartySharing.m */, - 9DF92D922630ED95000FC3FC /* ADJPackageParams.h */, - 9DF92D912630ED95000FC3FC /* ADJPackageParams.m */, - 6FAB789D2636DD0F00773869 /* ADJLinkResolution.h */, - 6FAB789E2636DD0F00773869 /* ADJLinkResolution.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 6F3A5E522018CE14000AACD0 /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF38228260E9BA90033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF38227260E9BA90033F5A1 /* NSNumber+ADJAdditions.m */, - 6F3A5E532018CE14000AACD0 /* NSString+ADJAdditions.m */, - 6F3A5E552018CE14000AACD0 /* NSData+ADJAdditions.m */, - 6F3A5E562018CE14000AACD0 /* NSData+ADJAdditions.h */, - 6F3A5E582018CE14000AACD0 /* NSString+ADJAdditions.h */, - ); - path = ADJAdditions; - sourceTree = ""; - }; 6F3A5E902018CE3A000AACD0 /* AdjustTestLibrary */ = { isa = PBXGroup; children = ( @@ -401,15 +211,13 @@ 524BACA1221C4EE800624F6C /* PSWebSocketTypes.h */, 524BAC97221C4EE700624F6C /* PSWebSocketUTF8Decoder.h */, 524BACA2221C4EE800624F6C /* PSWebSocketUTF8Decoder.m */, - 6F3A5E912018CE3A000AACD0 /* ATLTestInfo.m */, + 6F666C9C2C00C80A005A6D90 /* ATLNetworking.h */, + 6F666C9B2C00C80A005A6D90 /* ATLNetworking.m */, 6F3A5E922018CE3A000AACD0 /* ATLUtil.h */, 6F3A5E942018CE3A000AACD0 /* ATLConstants.h */, 6F3A5E952018CE3A000AACD0 /* ATLTestLibrary.h */, - 6F3A5E962018CE3A000AACD0 /* ATLUtilNetworking.h */, 6F3A5E972018CE3A000AACD0 /* ATLBlockingQueue.h */, 6F3A5E982018CE3A000AACD0 /* ATLUtil.m */, - 6F3A5E992018CE3A000AACD0 /* ATLTestInfo.h */, - 6F3A5E9B2018CE3A000AACD0 /* ATLUtilNetworking.m */, 6F3A5E9C2018CE3A000AACD0 /* ATLTestLibrary.m */, 6F3A5E9D2018CE3A000AACD0 /* ATLBlockingQueue.m */, ); @@ -434,6 +242,8 @@ 6FFCFE6A200797D000467F01 /* ATAAdjustDelegateSessionSuccess.m */, 9D75AFD9210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.h */, 9D75AFDA210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.m */, + 9D8EF16C2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.h */, + 9D8EF16B2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.m */, ); path = Delegates; sourceTree = ""; @@ -441,6 +251,9 @@ 9D1D8E9C219246E50088E3CF /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584D812C3E994E0071A651 /* libAdjust.a */, + 0A584D7B2C3E98CF0071A651 /* AdjustSigSdk.xcframework */, + 9D8EF16E2BD7BECA0092AB68 /* StoreKit.framework */, 9DAA5C6925B0F81100C718DD /* AdServices.framework */, 9D1D8EA1219246EF0088E3CF /* CoreTelephony.framework */, 9D1D8E9F219246EA0088E3CF /* AdSupport.framework */, @@ -459,6 +272,7 @@ 6F0842232007769F00568A31 /* Sources */, 6F0842242007769F00568A31 /* Frameworks */, 6F0842252007769F00568A31 /* Resources */, + 0A584D802C3E98CF0071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -475,7 +289,8 @@ 6F08421F2007769F00568A31 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = adjust; TargetAttributes = { 6F0842262007769F00568A31 = { @@ -520,71 +335,32 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6F3A5E702018CE14000AACD0 /* ADJAttributionHandler.m in Sources */, - 6F3A5E7A2018CE14000AACD0 /* ADJTimerCycle.m in Sources */, 6FFCFE6E200797D100467F01 /* ATAAdjustDelegateEventFailure.m in Sources */, - 9DF92D932630ED95000FC3FC /* ADJPackageParams.m in Sources */, - 6F3A5E832018CE14000AACD0 /* NSData+ADJAdditions.m in Sources */, 524BACBB221D5B1200624F6C /* ATLControlSignal.m in Sources */, 6F3A5EA32018CE3A000AACD0 /* ATLBlockingQueue.m in Sources */, - 9D0B5C162929787B007009C1 /* ADJSKAdNetwork.m in Sources */, - 6F3A5E712018CE14000AACD0 /* ADJRequestHandler.m in Sources */, - 9D3A34BA2A2DF5FB0029CE4F /* ADJPurchaseVerificationHandler.m in Sources */, - 6F3A5E732018CE14000AACD0 /* ADJSdkClickHandler.m in Sources */, - 6F3A5E892018CE14000AACD0 /* ADJAdjustFactory.m in Sources */, 6F3A5E9F2018CE3A000AACD0 /* ATLUtil.m in Sources */, 524BACA7221C4EE800624F6C /* PSWebSocketInflater.m in Sources */, - 6F3A5E852018CE14000AACD0 /* ADJAttribution.m in Sources */, - 6FAB789F2636DD0F00773869 /* ADJLinkResolution.m in Sources */, 6FFCFE72200797D100467F01 /* ATAAdjustDelegateSessionSuccess.m in Sources */, - 6F3A5E7E2018CE14000AACD0 /* Adjust.m in Sources */, 6FFCFE6D200797D100467F01 /* ATAAdjustDelegateAttribution.m in Sources */, - 6F3A5E7B2018CE14000AACD0 /* ADJSessionParameters.m in Sources */, + 6F666C9D2C00C80A005A6D90 /* ATLNetworking.m in Sources */, 524BACB2221D583700624F6C /* ATLControlWebSocketClient.m in Sources */, - 6F3A5E882018CE14000AACD0 /* ADJUtil.m in Sources */, - 6F3A5E812018CE14000AACD0 /* ADJActivityKind.m in Sources */, - 6F3A5E8B2018CE14000AACD0 /* ADJPackageBuilder.m in Sources */, - 6F3A5E8C2018CE14000AACD0 /* ADJUserDefaults.m in Sources */, - 9D3A2AC226263AFC00BD6E44 /* ADJAdRevenue.m in Sources */, - 6F3A5E7C2018CE14000AACD0 /* ADJLogger.m in Sources */, + 9D8EF16D2BD7BC4B0092AB68 /* ATAAdjustDelegateSkan.m in Sources */, 524BACA6221C4EE800624F6C /* PSWebSocketServer.m in Sources */, - 6F3A5E742018CE14000AACD0 /* ADJEvent.m in Sources */, 524BACA5221C4EE800624F6C /* PSWebSocket.m in Sources */, - 6F84510E25B1B1110004C7C0 /* ADJThirdPartySharing.m in Sources */, - 6F3A5E822018CE14000AACD0 /* NSString+ADJAdditions.m in Sources */, - 6F3A5E752018CE14000AACD0 /* ADJSessionSuccess.m in Sources */, 6FFCFE70200797D100467F01 /* ATAAdjustDelegate.m in Sources */, 524BACA4221C4EE800624F6C /* PSWebSocketDriver.m in Sources */, - 6F3A5E772018CE14000AACD0 /* ADJEventSuccess.m in Sources */, 6FFCFE5F2007978300467F01 /* ATAAdjustCommandExecutor.m in Sources */, 6F08422F2007769F00568A31 /* ViewController.m in Sources */, 9D75AFDB210217FF0079A36C /* ATAAdjustDelegateDeferredDeeplink.m in Sources */, - 6F3A5E8A2018CE14000AACD0 /* ADJResponseData.m in Sources */, 6F08423A200776A000568A31 /* main.m in Sources */, - 6F3A5E9E2018CE3A000AACD0 /* ATLTestInfo.m in Sources */, 524BACAB221C4EE800624F6C /* PSWebSocketDeflater.m in Sources */, - 6F3A5E802018CE14000AACD0 /* ADJPackageHandler.m in Sources */, 524BACA8221C4EE800624F6C /* PSWebSocketBuffer.m in Sources */, - 6F3A5E792018CE14000AACD0 /* ADJSessionFailure.m in Sources */, 6F3A5EA22018CE3A000AACD0 /* ATLTestLibrary.m in Sources */, - 6F3A5EA12018CE3A000AACD0 /* ATLUtilNetworking.m in Sources */, - 6F3A5E782018CE14000AACD0 /* ADJActivityState.m in Sources */, - 9DF38229260E9BA90033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 6FBEE92024E421B200FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9D3A34B92A2DF5FB0029CE4F /* ADJPurchase.m in Sources */, - 6F3A5E8E2018CE14000AACD0 /* ADJActivityHandler.m in Sources */, 6F08422C2007769F00568A31 /* AppDelegate.m in Sources */, 524BACAA221C4EE800624F6C /* PSWebSocketUTF8Decoder.m in Sources */, - 9D3A34B82A2DF5FB0029CE4F /* ADJPurchaseVerificationResult.m in Sources */, - 6F3A5E762018CE14000AACD0 /* ADJEventFailure.m in Sources */, - 6F3A5E7F2018CE14000AACD0 /* ADJConfig.m in Sources */, 524BACA9221C4EE800624F6C /* PSWebSocketNetworkThread.m in Sources */, - 6F3A5E872018CE14000AACD0 /* ADJActivityPackage.m in Sources */, 6FFCFE71200797D100467F01 /* ATAAdjustDelegateEventSuccess.m in Sources */, - 6F3A5E6F2018CE14000AACD0 /* ADJTimerOnce.m in Sources */, - 9D2F24082447DDCB00B7CA90 /* ADJSubscription.m in Sources */, 6FFCFE6F200797D100467F01 /* ATAAdjustDelegateSessionFailure.m in Sources */, - 6F3A5E7D2018CE14000AACD0 /* ADJBackoffStrategy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -647,6 +423,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -661,7 +438,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -705,6 +482,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 = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -713,7 +491,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -727,7 +505,10 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = AdjustTestApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustTestApp; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; @@ -741,7 +522,10 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = AdjustTestApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.adjust.AdjustTestApp; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/xcshareddata/xcschemes/AdjustTestApp.xcscheme b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/xcshareddata/xcschemes/AdjustTestApp.xcscheme new file mode 100644 index 000000000..fc6e86dd7 --- /dev/null +++ b/AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/xcshareddata/xcschemes/AdjustTestApp.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m b/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m index 5c4a3a011..3fe5f37e8 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ATAAdjustCommandExecutor.m @@ -6,8 +6,7 @@ // Copyright © 2017-2018 Adjust GmbH. All rights reserved. // -#import "Adjust.h" -#import "ADJAdjustFactory.h" +#import #import "ATAAdjustDelegate.h" #import "ATAAdjustDelegateAttribution.h" #import "ATAAdjustDelegateEventFailure.h" @@ -15,6 +14,7 @@ #import "ATAAdjustDelegateSessionSuccess.h" #import "ATAAdjustDelegateSessionFailure.h" #import "ATAAdjustDelegateDeferredDeeplink.h" +#import "ATAAdjustDelegateSkan.h" #import "ATAAdjustCommandExecutor.h" #import "ViewController.h" @@ -67,106 +67,93 @@ - (void)executeCommand:(NSString *)className [self setEnabled:parameters]; } else if ([methodName isEqualToString:@"setOfflineMode"]) { [self setOfflineMode:parameters]; - } else if ([methodName isEqualToString:@"sendFirstPackages"]) { - [self sendFirstPackages:parameters]; - } else if ([methodName isEqualToString:@"addSessionCallbackParameter"]) { - [self addSessionCallbackParameter:parameters]; - } else if ([methodName isEqualToString:@"addSessionPartnerParameter"]) { - [self addSessionPartnerParameter:parameters]; - } else if ([methodName isEqualToString:@"removeSessionCallbackParameter"]) { - [self removeSessionCallbackParameter:parameters]; - } else if ([methodName isEqualToString:@"removeSessionPartnerParameter"]) { - [self removeSessionPartnerParameter:parameters]; - } else if ([methodName isEqualToString:@"resetSessionCallbackParameters"]) { - [self resetSessionCallbackParameters:parameters]; - } else if ([methodName isEqualToString:@"resetSessionPartnerParameters"]) { - [self resetSessionPartnerParameters:parameters]; + } else if ([methodName isEqualToString:@"addGlobalCallbackParameter"]) { + [self addGlobalCallbackParameter:parameters]; + } else if ([methodName isEqualToString:@"addGlobalPartnerParameter"]) { + [self addGlobalPartnerParameter:parameters]; + } else if ([methodName isEqualToString:@"removeGlobalCallbackParameter"]) { + [self removeGlobalCallbackParameter:parameters]; + } else if ([methodName isEqualToString:@"removeGlobalPartnerParameter"]) { + [self removeGlobalPartnerParameter:parameters]; + } else if ([methodName isEqualToString:@"removeGlobalCallbackParameters"]) { + [self removeGlobalCallbackParameters:parameters]; + } else if ([methodName isEqualToString:@"removeGlobalPartnerParameters"]) { + [self removeGlobalPartnerParameters:parameters]; } else if ([methodName isEqualToString:@"setPushToken"]) { [self setPushToken:parameters]; } else if ([methodName isEqualToString:@"openDeeplink"]) { [self openDeeplink:parameters]; } else if ([methodName isEqualToString:@"gdprForgetMe"]) { [self gdprForgetMe:parameters]; - } else if ([methodName isEqualToString:@"trackAdRevenue"]) { - [self trackAdRevenue:parameters]; - } else if ([methodName isEqualToString:@"disableThirdPartySharing"]) { - [self disableThirdPartySharing:parameters]; } else if ([methodName isEqualToString:@"thirdPartySharing"]) { [self thirdPartySharing:parameters]; } else if ([methodName isEqualToString:@"measurementConsent"]) { [self measurementConsent:parameters]; } else if ([methodName isEqualToString:@"trackSubscription"]) { - [self trackSubscription:parameters]; - } else if ([methodName isEqualToString:@"trackAdRevenueV2"]) { - [self trackAdRevenueV2:parameters]; + [self trackAppStoreSubscription:parameters]; + } else if ([methodName isEqualToString:@"trackAdRevenue"]) { + [self trackAdRevenue:parameters]; } else if ([methodName isEqualToString:@"getLastDeeplink"]) { [self getLastDeeplink:parameters]; } else if ([methodName isEqualToString:@"verifyPurchase"]) { [self verifyPurchase:parameters]; + } else if ([methodName isEqualToString:@"verifyTrack"]) { + [self verifyTrack:parameters]; } else if ([methodName isEqualToString:@"processDeeplink"]) { [self processDeeplink:parameters]; + } else if ([methodName isEqualToString:@"attributionGetter"]) { + [self attributionGetter:parameters]; } } - (void)testOptions:(NSDictionary *)parameters { - AdjustTestOptions *testOptions = [[AdjustTestOptions alloc] init]; - testOptions.urlOverwrite = urlOverwrite; + NSMutableDictionary *testOptions = [NSMutableDictionary dictionary]; + [testOptions setObject:urlOverwrite forKey:@"testUrlOverwrite"]; if ([parameters objectForKey:@"basePath"]) { self.extraPath = [parameters objectForKey:@"basePath"][0]; } if ([parameters objectForKey:@"timerInterval"]) { NSString *timerIntervalMilliS = [parameters objectForKey:@"timerInterval"][0]; - testOptions.timerIntervalInMilliseconds = [ATAAdjustCommandExecutor convertMilliStringToNumber:timerIntervalMilliS]; + [testOptions setObject:[ATAAdjustCommandExecutor convertMilliStringToNumber:timerIntervalMilliS] + forKey:@"timerIntervalInMilliseconds"]; } if ([parameters objectForKey:@"timerStart"]) { NSString *timerStartMilliS = [parameters objectForKey:@"timerStart"][0]; - testOptions.timerStartInMilliseconds = [ATAAdjustCommandExecutor convertMilliStringToNumber:timerStartMilliS]; + [testOptions setObject:[ATAAdjustCommandExecutor convertMilliStringToNumber:timerStartMilliS] + forKey:@"timerStartInMilliseconds"]; } if ([parameters objectForKey:@"sessionInterval"]) { NSString *sessionIntervalMilliS = [parameters objectForKey:@"sessionInterval"][0]; - testOptions.sessionIntervalInMilliseconds = [ATAAdjustCommandExecutor convertMilliStringToNumber:sessionIntervalMilliS]; + [testOptions setObject:[ATAAdjustCommandExecutor convertMilliStringToNumber:sessionIntervalMilliS] + forKey:@"sessionIntervalInMilliseconds"]; } if ([parameters objectForKey:@"subsessionInterval"]) { NSString *subsessionIntervalMilliS = [parameters objectForKey:@"subsessionInterval"][0]; - testOptions.subsessionIntervalInMilliseconds = [ATAAdjustCommandExecutor convertMilliStringToNumber:subsessionIntervalMilliS]; + [testOptions setObject:[ATAAdjustCommandExecutor convertMilliStringToNumber:subsessionIntervalMilliS] + forKey:@"subsessionIntervalInMilliseconds"]; } if ([parameters objectForKey:@"attStatus"]) { NSString *attStatusS = [parameters objectForKey:@"attStatus"][0]; NSNumber *attStatusN = [NSNumber numberWithInt:[attStatusS intValue]]; - - testOptions.attStatusInt = attStatusN; + [testOptions setObject:attStatusN forKey:@"attStatusInt"]; } if ([parameters objectForKey:@"idfa"]) { NSString *idfa = [parameters objectForKey:@"idfa"][0]; - testOptions.idfa = idfa; + [testOptions setObject:idfa forKey:@"idfa"]; } if ([parameters objectForKey:@"noBackoffWait"]) { NSString *noBackoffWaitStr = [parameters objectForKey:@"noBackoffWait"][0]; - testOptions.noBackoffWait = NO; + [testOptions setObject:@NO forKey:@"noBackoffWait"]; if ([noBackoffWaitStr isEqualToString:@"true"]) { - testOptions.noBackoffWait = YES; + [testOptions setObject:@YES forKey:@"noBackoffWait"]; } } - testOptions.adServicesFrameworkEnabled = NO; // default value -> NO - AdServices will not be used in test app by default + [testOptions setObject:@NO forKey:@"adServicesFrameworkEnabled"]; // default value -> NO - AdServices will not be used in test app by default if ([parameters objectForKey:@"adServicesFrameworkEnabled"]) { NSString *adServicesFrameworkEnabledStr = [parameters objectForKey:@"adServicesFrameworkEnabled"][0]; if ([adServicesFrameworkEnabledStr isEqualToString:@"true"]) { - testOptions.adServicesFrameworkEnabled = YES; - } - } - if ([parameters objectForKey:@"enableSigning"]) { - NSString *enableSigningStr = [parameters objectForKey:@"enableSigning"][0]; - testOptions.enableSigning = NO; - if ([enableSigningStr isEqualToString:@"true"]) { - testOptions.enableSigning = YES; - } - } - if ([parameters objectForKey:@"disableSigning"]) { - NSString *disableSigningStr = [parameters objectForKey:@"disableSigning"][0]; - testOptions.disableSigning = NO; - if ([disableSigningStr isEqualToString:@"true"]) { - testOptions.disableSigning = YES; + [testOptions setObject:@YES forKey:@"adServicesFrameworkEnabled"]; } } if ([parameters objectForKey:@"teardown"]) { @@ -174,34 +161,34 @@ - (void)testOptions:(NSDictionary *)parameters { for (int i = 0; i < teardownOptions.count; i = i + 1) { NSString *teardownOption = teardownOptions[i]; if ([teardownOption isEqualToString:@"resetSdk"]) { - testOptions.teardown = YES; - testOptions.extraPath = self.extraPath; + [testOptions setObject:@YES forKey:@"teardown"]; + [testOptions setObject:self.extraPath forKey:@"extraPath"]; } if ([teardownOption isEqualToString:@"deleteState"]) { - testOptions.deleteState = YES; + [testOptions setObject:@YES forKey:@"deleteState"]; } if ([teardownOption isEqualToString:@"resetTest"]) { self.savedConfigs = [NSMutableDictionary dictionary]; self.savedEvents = [NSMutableDictionary dictionary]; self.adjustDelegate = nil; - testOptions.timerIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.timerStartInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"timerIntervalInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"timerStartInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"sessionIntervalInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"subsessionIntervalInMilliseconds"]; } if ([teardownOption isEqualToString:@"sdk"]) { - testOptions.teardown = YES; - testOptions.extraPath = nil; + [testOptions setObject:@YES forKey:@"teardown"]; + [testOptions removeObjectForKey:@"extraPath"]; } if ([teardownOption isEqualToString:@"test"]) { self.savedConfigs = nil; self.savedEvents = nil; self.adjustDelegate = nil; self.extraPath = nil; - testOptions.timerIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.timerStartInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.sessionIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; - testOptions.subsessionIntervalInMilliseconds = [NSNumber numberWithInt:-1000]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"timerIntervalInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"timerStartInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"sessionIntervalInMilliseconds"]; + [testOptions setObject:[NSNumber numberWithInt:-1000] forKey:@"subsessionIntervalInMilliseconds"]; } } } @@ -231,7 +218,8 @@ - (void)config:(NSDictionary *)parameters { NSString *environment = [parameters objectForKey:@"environment"][0]; NSString *appToken = [parameters objectForKey:@"appToken"][0]; - adjustConfig = [ADJConfig configWithAppToken:appToken environment:environment]; + adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken + environment:environment]; [self.savedConfigs setObject:adjustConfig forKey:configNumber]; } @@ -274,77 +262,41 @@ - (void)config:(NSDictionary *)parameters { [adjustConfig setDefaultTracker:defaultTracker]; } - if ([parameters objectForKey:@"appSecret"]) { - NSArray *appSecretList = [parameters objectForKey:@"appSecret"]; - if ([appSecretList count] == 5 && - [appSecretList[0] length] > 0 && - [appSecretList[1] length] > 0 && - [appSecretList[2] length] > 0 && - [appSecretList[3] length] > 0 && - [appSecretList[4] length] > 0) { - NSUInteger secretId = [appSecretList[0] integerValue]; - NSUInteger part1 = [appSecretList[1] integerValue]; - NSUInteger part2 = [appSecretList[2] integerValue]; - NSUInteger part3 = [appSecretList[3] integerValue]; - NSUInteger part4 = [appSecretList[4] integerValue]; - - [adjustConfig setAppSecret:secretId info1:part1 info2:part2 info3:part3 info4:part4]; - } - } - - if ([parameters objectForKey:@"delayStart"]) { - NSString *delayStartS = [parameters objectForKey:@"delayStart"][0]; - double delayStart = [delayStartS doubleValue]; - [adjustConfig setDelayStart:delayStart]; - } - - if ([parameters objectForKey:@"deviceKnown"]) { - NSString *deviceKnownS = [parameters objectForKey:@"deviceKnown"][0]; - [adjustConfig setIsDeviceKnown:[deviceKnownS boolValue]]; - } - if ([parameters objectForKey:@"needsCost"]) { NSString *needsCostS = [parameters objectForKey:@"needsCost"][0]; - [adjustConfig setNeedsCost:[needsCostS boolValue]]; - } - - if ([parameters objectForKey:@"eventBufferingEnabled"]) { - NSString *eventBufferingEnabledS = [parameters objectForKey:@"eventBufferingEnabled"][0]; - [adjustConfig setEventBufferingEnabled:[eventBufferingEnabledS boolValue]]; - } - - if ([parameters objectForKey:@"coppaCompliant"]) { - NSString *coppaCompliantEnabledS = [parameters objectForKey:@"coppaCompliant"][0]; - [adjustConfig setCoppaCompliantEnabled:[coppaCompliantEnabledS boolValue]]; + if ([needsCostS boolValue] == YES) { + [adjustConfig enableCostDataInAttribution]; + } } if ([parameters objectForKey:@"sendInBackground"]) { NSString *sendInBackgroundS = [parameters objectForKey:@"sendInBackground"][0]; - [adjustConfig setSendInBackground:[sendInBackgroundS boolValue]]; + if ([sendInBackgroundS boolValue] == YES) { + [adjustConfig enableSendingInBackground]; + } } if ([parameters objectForKey:@"allowIdfaReading"]) { NSString *allowIdfaReadingS = [parameters objectForKey:@"allowIdfaReading"][0]; - [adjustConfig setAllowIdfaReading:[allowIdfaReadingS boolValue]]; + if ([allowIdfaReadingS boolValue] == NO) { + [adjustConfig disableIdfaReading]; + } } if ([parameters objectForKey:@"allowAdServicesInfoReading"]) { NSString *allowAdServicesInfoReadingS = [parameters objectForKey:@"allowAdServicesInfoReading"][0]; - [adjustConfig setAllowAdServicesInfoReading:[allowAdServicesInfoReadingS boolValue]]; + if ([allowAdServicesInfoReadingS boolValue] == NO) { + [adjustConfig disableAdServices]; + } } if ([parameters objectForKey:@"allowSkAdNetworkHandling"]) { NSString *allowSkAdNetworkHandlingS = [parameters objectForKey:@"allowSkAdNetworkHandling"][0]; if ([allowSkAdNetworkHandlingS boolValue] == NO) { - [adjustConfig deactivateSKAdNetworkHandling]; + [adjustConfig disableSkanAttribution]; } } - if ([parameters objectForKey:@"userAgent"]) { - NSString *userAgent = [parameters objectForKey:@"userAgent"][0]; - [adjustConfig setUserAgent:userAgent]; - } - if ([parameters objectForKey:@"externalDeviceId"]) { NSString *externalDeviceId = [parameters objectForKey:@"externalDeviceId"][0]; [adjustConfig setExternalDeviceId:externalDeviceId]; @@ -352,7 +304,9 @@ - (void)config:(NSDictionary *)parameters { if ([parameters objectForKey:@"checkPasteboard"]) { NSString *checkPasteboardS = [parameters objectForKey:@"checkPasteboard"][0]; - [adjustConfig setLinkMeEnabled:[checkPasteboardS boolValue]]; + if ([checkPasteboardS boolValue] == YES) { + [adjustConfig enableLinkMe]; + } } if ([parameters objectForKey:@"attributionCallbackSendAll"]) { @@ -400,11 +354,30 @@ - (void)config:(NSDictionary *)parameters { andReturnValue:[shouldOpenDeeplinkS boolValue]]; } + if ([parameters objectForKey:@"skanCallback"]) { + NSLog(@"skanCallback detected"); + self.adjustDelegate = + [[ATAAdjustDelegateSkan alloc] initWithTestLibrary:self.testLibrary + andExtraPath:self.extraPath]; + } + if ([parameters objectForKey:@"attConsentWaitingSeconds"]) { NSString *attConsentWaitingSecondsS = [parameters objectForKey:@"attConsentWaitingSeconds"][0]; [adjustConfig setAttConsentWaitingInterval:[attConsentWaitingSecondsS intValue]]; } + if ([parameters objectForKey:@"eventDeduplicationIdsMaxSize"]) { + NSString *eventDeduplicationIdsMaxSizeS = [parameters objectForKey:@"eventDeduplicationIdsMaxSize"][0]; + [adjustConfig setEventDeduplicationIdsMaxSize:[eventDeduplicationIdsMaxSizeS intValue]]; + } + + if ([parameters objectForKey:@"coppaCompliant"]) { + NSString *coppaCompliantEnabledS = [parameters objectForKey:@"coppaCompliant"][0]; + if ([coppaCompliantEnabledS boolValue] == YES) { + [adjustConfig enableCoppaCompliance]; + } + } + [adjustConfig setDelegate:self.adjustDelegate]; } @@ -420,7 +393,7 @@ - (void)start:(NSDictionary *)parameters { ADJConfig *adjustConfig = [self.savedConfigs objectForKey:configNumber]; [adjustConfig setLogLevel:ADJLogLevelVerbose]; - [Adjust appDidLaunch:adjustConfig]; + [Adjust initSdk:adjustConfig]; [self.savedConfigs removeObjectForKey:[NSNumber numberWithInt:0]]; } @@ -443,7 +416,7 @@ - (void)event:(NSDictionary *)parameters { } else { eventToken = [parameters objectForKey:@"eventToken"][0]; } - adjustEvent = [ADJEvent eventWithEventToken:eventToken]; + adjustEvent = [[ADJEvent alloc] initWithEventToken:eventToken]; [self.savedEvents setObject:adjustEvent forKey:eventNumber]; } @@ -509,10 +482,13 @@ - (void)event:(NSDictionary *)parameters { [adjustEvent setTransactionId:transactionId]; } - if ([parameters objectForKey:@"receipt"]) { - NSString *receiptString = [parameters objectForKey:@"receipt"][0]; - NSData *receipt = [receiptString dataUsingEncoding:NSUTF8StringEncoding]; - [adjustEvent setReceipt:receipt]; + if ([parameters objectForKey:@"deduplicationId"] && + [[parameters objectForKey:@"deduplicationId"] count] > 0) { + NSString *deduplicationId = [parameters objectForKey:@"deduplicationId"][0]; + if (deduplicationId == (id)[NSNull null]) { + deduplicationId = nil; + } + [adjustEvent setDeduplicationId:deduplicationId]; } } @@ -541,87 +517,80 @@ - (void)pause:(NSDictionary *)parameters { - (void)setEnabled:(NSDictionary *)parameters { NSString *enabledS = [parameters objectForKey:@"enabled"][0]; - [Adjust setEnabled:[enabledS boolValue]]; + if ([enabledS boolValue] == YES) { + [Adjust enable]; + } else { + [Adjust disable]; + } } - (void)setOfflineMode:(NSDictionary *)parameters { NSString *enabledS = [parameters objectForKey:@"enabled"][0]; - [Adjust setOfflineMode:[enabledS boolValue]]; -} - -- (void)sendFirstPackages:(NSDictionary *)parameters { - [Adjust sendFirstPackages]; + if ([enabledS boolValue] == YES) { + [Adjust switchToOfflineMode]; + } else { + [Adjust switchBackToOnlineMode]; + } } -- (void)addSessionCallbackParameter:(NSDictionary *)parameters { +- (void)addGlobalCallbackParameter:(NSDictionary *)parameters { NSArray *keyValuesPairs = [parameters objectForKey:@"KeyValue"]; for (int i = 0; i < keyValuesPairs.count; i = i + 2) { NSString *key = keyValuesPairs[i]; NSString *value = keyValuesPairs[i + 1]; - [Adjust addSessionCallbackParameter:key value:value]; + [Adjust addGlobalCallbackParameter:value forKey:key]; } } -- (void)addSessionPartnerParameter:(NSDictionary *)parameters { +- (void)addGlobalPartnerParameter:(NSDictionary *)parameters { NSArray *keyValuesPairs = [parameters objectForKey:@"KeyValue"]; for (int i = 0; i < keyValuesPairs.count; i = i + 2) { NSString *key = keyValuesPairs[i]; NSString *value = keyValuesPairs[i + 1]; - [Adjust addSessionPartnerParameter:key value:value]; + [Adjust addGlobalPartnerParameter:value forKey:key]; } } -- (void)removeSessionCallbackParameter:(NSDictionary *)parameters { +- (void)removeGlobalCallbackParameter:(NSDictionary *)parameters { NSArray *keys = [parameters objectForKey:@"key"]; for (int i = 0; i < keys.count; i = i + 1) { NSString *key = keys[i]; - [Adjust removeSessionCallbackParameter:key]; + [Adjust removeGlobalCallbackParameterForKey:key]; } } -- (void)removeSessionPartnerParameter:(NSDictionary *)parameters { +- (void)removeGlobalPartnerParameter:(NSDictionary *)parameters { NSArray *keys = [parameters objectForKey:@"key"]; for (int i = 0; i < keys.count; i = i + 1) { NSString *key = keys[i]; - [Adjust removeSessionPartnerParameter:key]; + [Adjust removeGlobalPartnerParameterForKey:key]; } } -- (void)resetSessionCallbackParameters:(NSDictionary *)parameters { - [Adjust resetSessionCallbackParameters]; +- (void)removeGlobalCallbackParameters:(NSDictionary *)parameters { + [Adjust removeGlobalCallbackParameters]; } -- (void)resetSessionPartnerParameters:(NSDictionary *)parameters { - [Adjust resetSessionPartnerParameters]; +- (void)removeGlobalPartnerParameters:(NSDictionary *)parameters { + [Adjust removeGlobalPartnerParameters]; } - (void)setPushToken:(NSDictionary *)parameters { - NSString *deviceTokenS = [parameters objectForKey:@"pushToken"][0]; - NSData *deviceToken = [deviceTokenS dataUsingEncoding:NSUTF8StringEncoding]; - [Adjust setDeviceToken:deviceToken]; + NSString *pushTokenS = [parameters objectForKey:@"pushToken"][0]; + NSData *pushToken = [pushTokenS dataUsingEncoding:NSUTF8StringEncoding]; + [Adjust setPushToken:pushToken]; } - (void)openDeeplink:(NSDictionary *)parameters { NSString *deeplinkS = [parameters objectForKey:@"deeplink"][0]; NSURL *deeplink = [NSURL URLWithString:deeplinkS]; - [Adjust appWillOpenUrl:deeplink]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:deeplink]]; } - (void)gdprForgetMe:(NSDictionary *)parameters { [Adjust gdprForgetMe]; } -- (void)trackAdRevenue:(NSDictionary *)parameters { - NSString *sourceS = [parameters objectForKey:@"adRevenueSource"][0]; - NSString *payloadS = [parameters objectForKey:@"adRevenueJsonString"][0]; - NSData *payload = [payloadS dataUsingEncoding:NSUTF8StringEncoding]; - [Adjust trackAdRevenue:sourceS payload:payload]; -} - -- (void)disableThirdPartySharing:(NSDictionary *)parameters { - [Adjust disableThirdPartySharing]; -} - - (void)thirdPartySharing:(NSDictionary *)parameters { NSString *isEnabledS = [parameters objectForKey:@"isEnabled"][0]; @@ -634,7 +603,7 @@ - (void)thirdPartySharing:(NSDictionary *)parameters { } ADJThirdPartySharing *adjustThirdPartySharing = - [[ADJThirdPartySharing alloc] initWithIsEnabledNumberBool:isEnabled]; + [[ADJThirdPartySharing alloc] initWithIsEnabled:isEnabled]; if ([parameters objectForKey:@"granularOptions"]) { NSArray *granularOptions = [parameters objectForKey:@"granularOptions"]; @@ -664,11 +633,10 @@ - (void)measurementConsent:(NSDictionary *)parameters { [Adjust trackMeasurementConsent:[isEnabledS boolValue]]; } -- (void)trackSubscription:(NSDictionary *)parameters { +- (void)trackAppStoreSubscription:(NSDictionary *)parameters { NSDecimalNumber *price; NSString *currency; NSString *transactionId; - NSData *receipt; NSDate *transactionDate; NSString *salesRegion; @@ -681,10 +649,6 @@ - (void)trackSubscription:(NSDictionary *)parameters { if ([parameters objectForKey:@"transactionId"]) { transactionId = [parameters objectForKey:@"transactionId"][0]; } - if ([parameters objectForKey:@"receipt"]) { - NSString *receiptString = [parameters objectForKey:@"receipt"][0]; - receipt = [receiptString dataUsingEncoding:NSUTF8StringEncoding]; - } if ([parameters objectForKey:@"transactionDate"]) { transactionDate = [NSDate dateWithTimeIntervalSince1970:[[parameters objectForKey:@"transactionDate"][0] doubleValue]]; } @@ -692,10 +656,10 @@ - (void)trackSubscription:(NSDictionary *)parameters { salesRegion = [parameters objectForKey:@"salesRegion"][0]; } - ADJSubscription *subscription = [[ADJSubscription alloc] initWithPrice:price - currency:currency - transactionId:transactionId - andReceipt:receipt]; + ADJAppStoreSubscription *subscription = + [[ADJAppStoreSubscription alloc] initWithPrice:price + currency:currency + transactionId:transactionId]; [subscription setTransactionDate:transactionDate]; [subscription setSalesRegion:salesRegion]; @@ -717,10 +681,10 @@ - (void)trackSubscription:(NSDictionary *)parameters { } } - [Adjust trackSubscription:subscription]; + [Adjust trackAppStoreSubscription:subscription]; } -- (void)trackAdRevenueV2:(NSDictionary *)parameters { +- (void)trackAdRevenue:(NSDictionary *)parameters { NSString *source = nil; if ([parameters objectForKey:@"adRevenueSource"]) { if ([[parameters objectForKey:@"adRevenueSource"] count] > 0) { @@ -778,21 +742,17 @@ - (void)trackAdRevenueV2:(NSDictionary *)parameters { } - (void)getLastDeeplink:(NSDictionary *)parameters { - NSURL *lastDeeplink = [Adjust lastDeeplink]; - NSString *lastDeeplinkString = lastDeeplink == nil ? @"" : [lastDeeplink absoluteString]; - [self.testLibrary addInfoToSend:@"last_deeplink" value:lastDeeplinkString]; - [self.testLibrary sendInfoToServer:self.extraPath]; + [Adjust lastDeeplinkWithCompletionHandler:^(NSURL * _Nullable lastDeeplink) { + NSString *lastDeeplinkString = lastDeeplink == nil ? @"" : [lastDeeplink absoluteString]; + [self.testLibrary addInfoToSend:@"last_deeplink" value:lastDeeplinkString]; + [self.testLibrary sendInfoToServer:self.extraPath]; + }]; } - (void)verifyPurchase:(NSDictionary *)parameters { - NSData *receipt; NSString *transactionId; NSString *productId; - if ([parameters objectForKey:@"receipt"]) { - NSString *receiptString = [parameters objectForKey:@"receipt"][0]; - receipt = [receiptString dataUsingEncoding:NSUTF8StringEncoding]; - } if ([parameters objectForKey:@"transactionId"]) { transactionId = [parameters objectForKey:@"transactionId"][0]; } @@ -800,10 +760,10 @@ - (void)verifyPurchase:(NSDictionary *)parameters { productId = [parameters objectForKey:@"productId"][0]; } - ADJPurchase *purchase = [[ADJPurchase alloc] initWithTransactionId:transactionId - productId:productId - andReceipt:receipt]; - [Adjust verifyPurchase:purchase completionHandler:^(ADJPurchaseVerificationResult * _Nonnull verificationResult) { + ADJAppStorePurchase *purchase = [[ADJAppStorePurchase alloc] initWithTransactionId:transactionId + productId:productId]; + [Adjust verifyAppStorePurchase:purchase + withCompletionHandler:^(ADJPurchaseVerificationResult * _Nonnull verificationResult) { [self.testLibrary addInfoToSend:@"verification_status" value:verificationResult.verificationStatus]; [self.testLibrary addInfoToSend:@"code" value:[NSString stringWithFormat:@"%d", verificationResult.code]]; [self.testLibrary addInfoToSend:@"message" value:verificationResult.message]; @@ -811,13 +771,52 @@ - (void)verifyPurchase:(NSDictionary *)parameters { }]; } +- (void)verifyTrack:(NSDictionary *)parameters { + [self event:parameters]; + NSNumber *eventNumber = [NSNumber numberWithInt:0]; + if ([parameters objectForKey:@"eventName"]) { + NSString *eventName = [parameters objectForKey:@"eventName"][0]; + NSString *eventNumberS = [eventName substringFromIndex:[eventName length] - 1]; + eventNumber = [NSNumber numberWithInt:[eventNumberS intValue]]; + } + + ADJEvent *adjustEvent = [self.savedEvents objectForKey:eventNumber]; + + [Adjust verifyAndTrackAppStorePurchase:adjustEvent + withCompletionHandler:^(ADJPurchaseVerificationResult * _Nonnull verificationResult) { + [self.testLibrary addInfoToSend:@"verification_status" value:verificationResult.verificationStatus]; + [self.testLibrary addInfoToSend:@"code" value:[NSString stringWithFormat:@"%d", verificationResult.code]]; + [self.testLibrary addInfoToSend:@"message" value:verificationResult.message]; + [self.testLibrary sendInfoToServer:self.extraPath]; + }]; + + [self.savedEvents removeObjectForKey:[NSNumber numberWithInt:0]]; +} + - (void)processDeeplink:(NSDictionary *)parameters { NSString *deeplinkS = [parameters objectForKey:@"deeplink"][0]; NSURL *deeplink = [NSURL URLWithString:deeplinkS]; - [Adjust processDeeplink:deeplink completionHandler:^(NSString * _Nonnull resolvedLink) { + [Adjust processAndResolveDeeplink:[[ADJDeeplink alloc] initWithDeeplink:deeplink] + withCompletionHandler:^(NSString * _Nullable resolvedLink) { [self.testLibrary addInfoToSend:@"resolved_link" value:resolvedLink]; [self.testLibrary sendInfoToServer:self.extraPath]; }]; } +- (void)attributionGetter:(NSDictionary *)parameters { + [Adjust attributionWithCompletionHandler:^(ADJAttribution * _Nullable attribution) { + [self.testLibrary addInfoToSend:@"tracker_token" value:attribution.trackerToken]; + [self.testLibrary addInfoToSend:@"tracker_name" value:attribution.trackerName]; + [self.testLibrary addInfoToSend:@"network" value:attribution.network]; + [self.testLibrary addInfoToSend:@"campaign" value:attribution.campaign]; + [self.testLibrary addInfoToSend:@"adgroup" value:attribution.adgroup]; + [self.testLibrary addInfoToSend:@"creative" value:attribution.creative]; + [self.testLibrary addInfoToSend:@"click_label" value:attribution.clickLabel]; + [self.testLibrary addInfoToSend:@"cost_type" value:attribution.costType]; + [self.testLibrary addInfoToSend:@"cost_amount" value:[attribution.costAmount stringValue]]; + [self.testLibrary addInfoToSend:@"cost_currency" value:attribution.costCurrency]; + [self.testLibrary sendInfoToServer:self.extraPath]; + }]; +} + @end diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/AppDelegate.m b/AdjustTests/AdjustTestApp/AdjustTestApp/AppDelegate.m index f0dfcfc76..cf3abca58 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/AppDelegate.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/AppDelegate.m @@ -7,7 +7,7 @@ // #import "AppDelegate.h" -#import "Adjust.h" +#import @interface AppDelegate () @@ -43,7 +43,7 @@ - (void)applicationWillTerminate:(UIApplication *)application { } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; return YES; } diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.h index e60333914..4b6669d94 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegate : NSObject @@ -18,5 +18,6 @@ eventSucceededCallback:(BOOL)swizzleEventSucceededCallback eventFailedCallback:(BOOL)swizzleEventFailedCallback sessionSucceededCallback:(BOOL)swizzleSessionSucceededCallback - sessionFailedCallback:(BOOL)swizzleSessionFailedCallback; + sessionFailedCallback:(BOOL)swizzleSessionFailedCallback + skanCallback:(BOOL)swizzleSkanCallback; @end diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.m index 836206d5b..9d6f03cd3 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegate.m @@ -43,6 +43,9 @@ - (id)initWithTestLibrary:(ATLTestLibrary *)testLibrary andBasePath:(NSString *) [self swizzleCallbackMethod:@selector(adjustSessionTrackingFailed:) swizzledSelector:@selector(adjustSessionTrackingFailedWananbeEmpty:)]; + [self swizzleCallbackMethod:@selector(adjustSkanUpdatedWithConversionData:) + swizzledSelector:@selector(adjustSkanUpdatedWithConversionDataWannabeEmpty:)]; + return self; } @@ -50,7 +53,8 @@ - (void)swizzleAttributionCallback:(BOOL)swizzleAttributionCallback eventSucceededCallback:(BOOL)swizzleEventSucceededCallback eventFailedCallback:(BOOL)swizzleEventFailedCallback sessionSucceededCallback:(BOOL)swizzleSessionSucceededCallback - sessionFailedCallback:(BOOL)swizzleSessionFailedCallback { + sessionFailedCallback:(BOOL)swizzleSessionFailedCallback + skanCallback:(BOOL)swizzleSkanCallback { // Do the swizzling where and if needed. if (swizzleAttributionCallback) { [self swizzleCallbackMethod:@selector(adjustAttributionChanged:) @@ -76,6 +80,11 @@ - (void)swizzleAttributionCallback:(BOOL)swizzleAttributionCallback [self swizzleCallbackMethod:@selector(adjustSessionTrackingFailed:) swizzledSelector:@selector(adjustSessionTrackingFailedWananbe:)]; } + + if (swizzleSkanCallback) { + [self swizzleCallbackMethod:@selector(adjustSkanUpdatedWithConversionData:) + swizzledSelector:@selector(adjustSkanUpdatedWithConversionDataWannabe:)]; + } } - (void)swizzleCallbackMethod:(SEL)originalSelector @@ -104,15 +113,17 @@ - (void)adjustAttributionChangedWannabe:(ADJAttribution *)attribution { NSLog(@"Attribution callback called!"); NSLog(@"Attribution: %@", attribution); - [self.testLibrary addInfoToSend:@"trackerToken" value:attribution.trackerToken]; - [self.testLibrary addInfoToSend:@"trackerName" value:attribution.trackerName]; + [self.testLibrary addInfoToSend:@"tracker_token" value:attribution.trackerToken]; + [self.testLibrary addInfoToSend:@"tracker_name" value:attribution.trackerName]; [self.testLibrary addInfoToSend:@"network" value:attribution.network]; [self.testLibrary addInfoToSend:@"campaign" value:attribution.campaign]; [self.testLibrary addInfoToSend:@"adgroup" value:attribution.adgroup]; [self.testLibrary addInfoToSend:@"creative" value:attribution.creative]; - [self.testLibrary addInfoToSend:@"clickLabel" value:attribution.clickLabel]; - [self.testLibrary addInfoToSend:@"adid" value:attribution.adid]; - + [self.testLibrary addInfoToSend:@"click_label" value:attribution.clickLabel]; + [self.testLibrary addInfoToSend:@"cost_type" value:attribution.costType]; + [self.testLibrary addInfoToSend:@"cost_amount" value:[attribution.costAmount stringValue]]; + [self.testLibrary addInfoToSend:@"cost_currency" value:attribution.costCurrency]; + [self.testLibrary sendInfoToServer:self.basePath]; } @@ -121,7 +132,7 @@ - (void)adjustEventTrackingSucceededWannabe:(ADJEventSuccess *)eventSuccessRespo NSLog(@"Event success data: %@", eventSuccessResponseData); [self.testLibrary addInfoToSend:@"message" value:eventSuccessResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:eventSuccessResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:eventSuccessResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:eventSuccessResponseData.adid]; [self.testLibrary addInfoToSend:@"eventToken" value:eventSuccessResponseData.eventToken]; @@ -145,7 +156,7 @@ - (void)adjustEventTrackingFailedWannabe:(ADJEventFailure *)eventFailureResponse NSLog(@"Event failure data: %@", eventFailureResponseData); [self.testLibrary addInfoToSend:@"message" value:eventFailureResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:eventFailureResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:eventFailureResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:eventFailureResponseData.adid]; [self.testLibrary addInfoToSend:@"eventToken" value:eventFailureResponseData.eventToken]; [self.testLibrary addInfoToSend:@"willRetry" value:(eventFailureResponseData.willRetry ? @"true" : @"false")]; @@ -170,7 +181,7 @@ - (void)adjustSessionTrackingSucceededWannabe:(ADJSessionSuccess *)sessionSucces NSLog(@"Session success data: %@", sessionSuccessResponseData); [self.testLibrary addInfoToSend:@"message" value:sessionSuccessResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:sessionSuccessResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:sessionSuccessResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:sessionSuccessResponseData.adid]; NSError *error; @@ -193,7 +204,7 @@ - (void)adjustSessionTrackingFailedWananbe:(ADJSessionFailure *)sessionFailureRe NSLog(@"Session failure data: %@", sessionFailureResponseData); [self.testLibrary addInfoToSend:@"message" value:sessionFailureResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:sessionFailureResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:sessionFailureResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:sessionFailureResponseData.adid]; [self.testLibrary addInfoToSend:@"willRetry" value:(sessionFailureResponseData.willRetry ? @"true" : @"false")]; @@ -212,6 +223,16 @@ - (void)adjustSessionTrackingFailedWananbe:(ADJSessionFailure *)sessionFailureRe [self.testLibrary sendInfoToServer:self.basePath]; } +- (void)adjustSkanUpdatedWithConversionDataWannabe:(nonnull NSDictionary *)data { + NSLog(@"SKAN callback called!"); + + for (NSString *key in data) { + [self.testLibrary addInfoToSend:key value:[data objectForKey:key]]; + } + + [self.testLibrary sendInfoToServer:self.basePath]; +} + - (void)adjustAttributionChangedWannabeEmpty:(ADJAttribution *)attribution { NSLog(@"Attribution callback called!"); NSLog(@"Attribution: %@", attribution); @@ -237,4 +258,9 @@ - (void)adjustSessionTrackingFailedWananbeEmpty:(ADJSessionFailure *)sessionFail NSLog(@"Session failure data: %@", sessionFailureResponseData); } +- (void)adjustSkanUpdatedWithConversionDataWannabeEmpty:(nonnull NSDictionary *)data { + NSLog(@"SKAN callback called!"); + NSLog(@"SKAN stuff: %@", data); +} + @end diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.h index 9512b5247..f5512b4e4 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateAttribution : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.m index dd622ed81..7387c06bb 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateAttribution.m @@ -34,18 +34,17 @@ - (void)adjustAttributionChanged:(ADJAttribution *)attribution { NSLog(@"Attribution callback called!"); NSLog(@"Attribution: %@", attribution); - [self.testLibrary addInfoToSend:@"trackerToken" value:attribution.trackerToken]; - [self.testLibrary addInfoToSend:@"trackerName" value:attribution.trackerName]; + [self.testLibrary addInfoToSend:@"tracker_token" value:attribution.trackerToken]; + [self.testLibrary addInfoToSend:@"tracker_name" value:attribution.trackerName]; [self.testLibrary addInfoToSend:@"network" value:attribution.network]; [self.testLibrary addInfoToSend:@"campaign" value:attribution.campaign]; [self.testLibrary addInfoToSend:@"adgroup" value:attribution.adgroup]; [self.testLibrary addInfoToSend:@"creative" value:attribution.creative]; - [self.testLibrary addInfoToSend:@"clickLabel" value:attribution.clickLabel]; - [self.testLibrary addInfoToSend:@"adid" value:attribution.adid]; - [self.testLibrary addInfoToSend:@"costType" value:attribution.costType]; - [self.testLibrary addInfoToSend:@"costAmount" value:[attribution.costAmount stringValue]]; - [self.testLibrary addInfoToSend:@"costCurrency" value:attribution.costCurrency]; - + [self.testLibrary addInfoToSend:@"click_label" value:attribution.clickLabel]; + [self.testLibrary addInfoToSend:@"cost_type" value:attribution.costType]; + [self.testLibrary addInfoToSend:@"cost_amount" value:[attribution.costAmount stringValue]]; + [self.testLibrary addInfoToSend:@"cost_currency" value:attribution.costCurrency]; + [self.testLibrary sendInfoToServer:self.extraPath]; } diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateDeferredDeeplink.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateDeferredDeeplink.h index 0316700dc..bd71db7ce 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateDeferredDeeplink.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateDeferredDeeplink.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateDeferredDeeplink : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.h index 5e5ee05b5..293fe1424 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateEventFailure : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.m index 313442736..06e068434 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventFailure.m @@ -35,7 +35,7 @@ - (void)adjustEventTrackingFailed:(ADJEventFailure *)eventFailureResponseData { NSLog(@"Event failure data: %@", eventFailureResponseData); [self.testLibrary addInfoToSend:@"message" value:eventFailureResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:eventFailureResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:eventFailureResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:eventFailureResponseData.adid]; [self.testLibrary addInfoToSend:@"eventToken" value:eventFailureResponseData.eventToken]; [self.testLibrary addInfoToSend:@"callbackId" value:eventFailureResponseData.callbackId]; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.h index 19ab41717..a332c0574 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateEventSuccess : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.m index d71fadad2..09e95f266 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateEventSuccess.m @@ -35,7 +35,7 @@ - (void)adjustEventTrackingSucceeded:(ADJEventSuccess *)eventSuccessResponseData NSLog(@"Event success data: %@", eventSuccessResponseData); [self.testLibrary addInfoToSend:@"message" value:eventSuccessResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:eventSuccessResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:eventSuccessResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:eventSuccessResponseData.adid]; [self.testLibrary addInfoToSend:@"eventToken" value:eventSuccessResponseData.eventToken]; [self.testLibrary addInfoToSend:@"callbackId" value:eventSuccessResponseData.callbackId]; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.h index a680fd3b2..e9e1c599e 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateSessionFailure : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.m index 3b59a2619..1b1e99787 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionFailure.m @@ -35,7 +35,7 @@ - (void)adjustSessionTrackingFailed:(ADJSessionFailure *)sessionFailureResponseD NSLog(@"Session failure data: %@", sessionFailureResponseData); [self.testLibrary addInfoToSend:@"message" value:sessionFailureResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:sessionFailureResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:sessionFailureResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:sessionFailureResponseData.adid]; [self.testLibrary addInfoToSend:@"willRetry" value:(sessionFailureResponseData.willRetry ? @"true" : @"false")]; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.h index 437650ac8..fac6353ab 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.h @@ -7,7 +7,7 @@ // #import -#import "Adjust.h" +#import #import "ATLTestLibrary.h" @interface ATAAdjustDelegateSessionSuccess : NSObject diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.m index 7015a95fb..9e6099381 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSessionSuccess.m @@ -35,7 +35,7 @@ - (void)adjustSessionTrackingSucceeded:(ADJSessionSuccess *)sessionSuccessRespon NSLog(@"Session success data: %@", sessionSuccessResponseData); [self.testLibrary addInfoToSend:@"message" value:sessionSuccessResponseData.message]; - [self.testLibrary addInfoToSend:@"timestamp" value:sessionSuccessResponseData.timeStamp]; + [self.testLibrary addInfoToSend:@"timestamp" value:sessionSuccessResponseData.timestamp]; [self.testLibrary addInfoToSend:@"adid" value:sessionSuccessResponseData.adid]; NSError *error; diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.h b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.h new file mode 100644 index 000000000..55875eab2 --- /dev/null +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.h @@ -0,0 +1,17 @@ +// +// ATAAdjustDelegateSkan.h +// AdjustTestApp +// +// Created by Uglješa Erceg (uerceg) on 23rd April 2024. +// Copyright © 2024 Adjust GmbH. All rights reserved. +// + +#import +#import +#import "ATLTestLibrary.h" + +@interface ATAAdjustDelegateSkan : NSObject + +- (id)initWithTestLibrary:(ATLTestLibrary *)testLibrary andExtraPath:(NSString *)extraPath; + +@end diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.m b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.m new file mode 100644 index 000000000..a2e5b2521 --- /dev/null +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/Delegates/ATAAdjustDelegateSkan.m @@ -0,0 +1,43 @@ +// +// ATAAdjustDelegateSkan.m +// AdjustTestApp +// +// Created by Uglješa Erceg (uerceg) on 23rd April 2024. +// Copyright © 2024 Adjust GmbH. All rights reserved. +// + +#import "ATAAdjustDelegateSkan.h" + +@interface ATAAdjustDelegateSkan () + +@property (nonatomic, strong) ATLTestLibrary *testLibrary; +@property (nonatomic, copy) NSString *extraPath; + +@end + +@implementation ATAAdjustDelegateSkan + +- (id)initWithTestLibrary:(ATLTestLibrary *)testLibrary andExtraPath:(NSString *)extraPath { + self = [super init]; + + if (nil == self) { + return nil; + } + + self.testLibrary = testLibrary; + self.extraPath = extraPath; + + return self; +} + +- (void)adjustSkanUpdatedWithConversionData:(nonnull NSDictionary *)data { + NSLog(@"SKAN callback called!"); + + for (NSString *key in data) { + [self.testLibrary addInfoToSend:key value:[data objectForKey:key]]; + } + + [self.testLibrary sendInfoToServer:self.extraPath]; +} + +@end diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h index 50497bd92..e9a72460b 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h @@ -9,11 +9,11 @@ #import // simulator -static NSString * urlOverwrite = @"http://127.0.0.1:8080"; -static NSString * controlUrl = @"ws://127.0.0.1:1987"; +//static NSString * urlOverwrite = @"http://127.0.0.1:8080"; +//static NSString * controlUrl = @"ws://127.0.0.1:1987"; // device -//static NSString * urlOverwrite = @"http://192.168.86.44:8080"; -//static NSString * controlUrl = @"ws://192.168.86.44:1987"; +static NSString * urlOverwrite = @"http://192.168.8.79:8080"; +static NSString * controlUrl = @"ws://192.168.8.79:1987"; @interface ViewController : UIViewController diff --git a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m index 727a7ee9a..ed9785436 100644 --- a/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m +++ b/AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m @@ -6,10 +6,9 @@ // Copyright © 2017-2018 Adjust GmbH. All rights reserved. // -#import "Adjust.h" #import "ViewController.h" +#import #import "ATLTestLibrary.h" -#import "ADJAdjustFactory.h" #import "ATAAdjustCommandExecutor.h" @interface ViewController () @@ -38,7 +37,9 @@ - (void)viewDidLoad { } - (void)startTestSession { - [self.testLibrary startTestSession:[Adjust sdkVersion]]; + [Adjust sdkVersionWithCompletionHandler:^(NSString * _Nullable sdkVersion) { + [self.testLibrary startTestSession:sdkVersion]; + }]; } - (void)didReceiveMemoryWarning { diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj index f76bf0d86..3812ee5aa 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 48; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -24,9 +24,7 @@ /* Begin PBXBuildFile section */ 20412650203FF86300CC40DB /* ATLUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0842542007782500568A31 /* ATLUtil.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20AC303F203C205B00CD9DA8 /* ATLTestLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0842572007782600568A31 /* ATLTestLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20AC3040203C205D00CD9DA8 /* ATLTestInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0842522007782500568A31 /* ATLTestInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20AC3042203C206300CD9DA8 /* ATLConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0842592007782600568A31 /* ATLConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20AC3043203C206600CD9DA8 /* ATLUtilNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0842552007782500568A31 /* ATLUtilNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20AC3044203C206800CD9DA8 /* ATLBlockingQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FFCFE732007AE0000467F01 /* ATLBlockingQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; 524BAC7E221C4E0B00624F6C /* PocketSocket-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 52836B26221C4B2E00F24F12 /* PocketSocket-Prefix.pch */; }; 524BAC7F221C4E0B00624F6C /* PSWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 52836B34221C4B3000F24F12 /* PSWebSocket.h */; }; @@ -52,9 +50,9 @@ 524BACB7221D5A3600624F6C /* ATLControlSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 524BACB5221D5A3600624F6C /* ATLControlSignal.h */; }; 524BACB8221D5A3600624F6C /* ATLControlSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 524BACB6221D5A3600624F6C /* ATLControlSignal.m */; }; 6F08425C2007782600568A31 /* ATLTestLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F08424F2007782500568A31 /* ATLTestLibrary.m */; }; - 6F08425D2007782600568A31 /* ATLTestInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0842532007782500568A31 /* ATLTestInfo.m */; }; 6F08425E2007782600568A31 /* ATLUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0842562007782500568A31 /* ATLUtil.m */; }; - 6F08425F2007782600568A31 /* ATLUtilNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F0842582007782600568A31 /* ATLUtilNetworking.m */; }; + 6F666C922C00B058005A6D90 /* ATLNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F666C902C00B058005A6D90 /* ATLNetworking.h */; }; + 6F666C932C00B058005A6D90 /* ATLNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F666C912C00B058005A6D90 /* ATLNetworking.m */; }; 6FFCFE752007AE0000467F01 /* ATLBlockingQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FFCFE742007AE0000467F01 /* ATLBlockingQueue.m */; }; /* End PBXBuildFile section */ @@ -106,14 +104,12 @@ 52836B38221C4B3000F24F12 /* PSWebSocketUTF8Decoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PSWebSocketUTF8Decoder.h; sourceTree = ""; }; 6F08420C2007766700568A31 /* libAdjustTestLibrary.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAdjustTestLibrary.a; sourceTree = BUILT_PRODUCTS_DIR; }; 6F08424F2007782500568A31 /* ATLTestLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestLibrary.m; sourceTree = ""; }; - 6F0842522007782500568A31 /* ATLTestInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestInfo.h; sourceTree = ""; }; - 6F0842532007782500568A31 /* ATLTestInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestInfo.m; sourceTree = ""; }; 6F0842542007782500568A31 /* ATLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtil.h; sourceTree = ""; }; - 6F0842552007782500568A31 /* ATLUtilNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtilNetworking.h; sourceTree = ""; }; 6F0842562007782500568A31 /* ATLUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtil.m; sourceTree = ""; }; 6F0842572007782600568A31 /* ATLTestLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestLibrary.h; sourceTree = ""; }; - 6F0842582007782600568A31 /* ATLUtilNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtilNetworking.m; sourceTree = ""; }; 6F0842592007782600568A31 /* ATLConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLConstants.h; sourceTree = ""; }; + 6F666C902C00B058005A6D90 /* ATLNetworking.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ATLNetworking.h; sourceTree = ""; }; + 6F666C912C00B058005A6D90 /* ATLNetworking.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ATLNetworking.m; sourceTree = ""; }; 6FFCFE732007AE0000467F01 /* ATLBlockingQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ATLBlockingQueue.h; sourceTree = ""; }; 6FFCFE742007AE0000467F01 /* ATLBlockingQueue.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ATLBlockingQueue.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -176,20 +172,18 @@ children = ( 52836B25221C4B2E00F24F12 /* PocketSocket */, 6F0842592007782600568A31 /* ATLConstants.h */, - 6F0842522007782500568A31 /* ATLTestInfo.h */, - 6F0842532007782500568A31 /* ATLTestInfo.m */, 6F0842572007782600568A31 /* ATLTestLibrary.h */, 6F08424F2007782500568A31 /* ATLTestLibrary.m */, 6F0842542007782500568A31 /* ATLUtil.h */, 6F0842562007782500568A31 /* ATLUtil.m */, - 6F0842552007782500568A31 /* ATLUtilNetworking.h */, - 6F0842582007782600568A31 /* ATLUtilNetworking.m */, 6FFCFE732007AE0000467F01 /* ATLBlockingQueue.h */, 6FFCFE742007AE0000467F01 /* ATLBlockingQueue.m */, 524BACAC221D529900624F6C /* ATLControlWebSocketClient.h */, 524BACAD221D529900624F6C /* ATLControlWebSocketClient.m */, 524BACB5221D5A3600624F6C /* ATLControlSignal.h */, 524BACB6221D5A3600624F6C /* ATLControlSignal.m */, + 6F666C902C00B058005A6D90 /* ATLNetworking.h */, + 6F666C912C00B058005A6D90 /* ATLNetworking.m */, ); path = AdjustTestLibrary; sourceTree = ""; @@ -205,7 +199,6 @@ 524BAC83221C4E0B00624F6C /* PSWebSocketDeflater.h in Headers */, 524BAC8A221C4E0B00624F6C /* PSWebSocketNetworkThread.h in Headers */, 524BAC8E221C4E0B00624F6C /* PSWebSocketTypes.h in Headers */, - 20AC3040203C205D00CD9DA8 /* ATLTestInfo.h in Headers */, 20AC303F203C205B00CD9DA8 /* ATLTestLibrary.h in Headers */, 524BAC7E221C4E0B00624F6C /* PocketSocket-Prefix.pch in Headers */, 524BAC81221C4E0B00624F6C /* PSWebSocketBuffer.h in Headers */, @@ -214,7 +207,7 @@ 20AC3042203C206300CD9DA8 /* ATLConstants.h in Headers */, 524BAC7F221C4E0B00624F6C /* PSWebSocket.h in Headers */, 524BAC85221C4E0B00624F6C /* PSWebSocketDriver.h in Headers */, - 20AC3043203C206600CD9DA8 /* ATLUtilNetworking.h in Headers */, + 6F666C922C00B058005A6D90 /* ATLNetworking.h in Headers */, 524BAC8C221C4E0B00624F6C /* PSWebSocketServer.h in Headers */, 20AC3044203C206800CD9DA8 /* ATLBlockingQueue.h in Headers */, 524BAC89221C4E0B00624F6C /* PSWebSocketInternal.h in Headers */, @@ -251,7 +244,8 @@ 6F0842042007766700568A31 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = adjust; TargetAttributes = { 20E71745203B162B0073AC91 = { @@ -320,12 +314,11 @@ buildActionMask = 2147483647; files = ( 6F08425C2007782600568A31 /* ATLTestLibrary.m in Sources */, - 6F08425F2007782600568A31 /* ATLUtilNetworking.m in Sources */, 524BAC90221C4E0B00624F6C /* PSWebSocketUTF8Decoder.m in Sources */, + 6F666C932C00B058005A6D90 /* ATLNetworking.m in Sources */, 524BAC86221C4E0B00624F6C /* PSWebSocketDriver.m in Sources */, 524BAC8D221C4E0B00624F6C /* PSWebSocketServer.m in Sources */, 524BAC82221C4E0B00624F6C /* PSWebSocketBuffer.m in Sources */, - 6F08425D2007782600568A31 /* ATLTestInfo.m in Sources */, 524BAC8B221C4E0B00624F6C /* PSWebSocketNetworkThread.m in Sources */, 524BAC84221C4E0B00624F6C /* PSWebSocketDeflater.m in Sources */, 524BAC88221C4E0B00624F6C /* PSWebSocketInflater.m in Sources */, @@ -354,6 +347,7 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -365,6 +359,7 @@ CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -407,6 +402,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -421,7 +417,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -465,6 +461,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 = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -473,7 +470,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = NO; SDKROOT = iphoneos; @@ -486,6 +483,7 @@ buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; @@ -500,6 +498,7 @@ buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.h b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.h new file mode 100644 index 000000000..90c2a1092 --- /dev/null +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.h @@ -0,0 +1,39 @@ +// +// ATLNetworking.h +// AdjustTestLibrary +// +// Created by Pedro Silva on 24.05.24. +// Copyright © 2024 adjust. All rights reserved. +// + +#import + +@interface ATLHttpResponse : NSObject + +@property (nonatomic, nullable, strong) NSString * responseString; +@property (nonatomic, nullable, strong) id jsonFoundation; +@property (nonatomic, nullable, strong) NSDictionary *headerFields; +@property (nonatomic, assign) NSInteger statusCode; + +@end + +@interface ATLHttpRequest : NSObject + +@property (nonatomic, nonnull, readonly, strong) NSString *path; +@property (nonatomic, nullable, readonly, strong) NSString *base; +@property (nonatomic, nullable, strong) NSString *bodyString; +@property (nonatomic, nullable, strong) NSDictionary *headerFields; + +- (nonnull id)initWithPath:(nonnull NSString *)path + base:(nullable NSString *)base; +@end + +typedef void (^httpResponseHandler)(ATLHttpResponse *_Nonnull httpResponse); + +@interface ATLNetworking : NSObject + +- (void)sendPostRequestWithData:(nonnull ATLHttpRequest *)requestData + baseUrl:(nonnull NSURL *)baseUrl + responseHandler:(nonnull httpResponseHandler)responseHandler; + +@end diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.m b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.m similarity index 59% rename from AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.m rename to AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.m index 8bfa95cc9..7b695d3a5 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.m +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLNetworking.m @@ -1,131 +1,135 @@ // -// ATLUtilNetworking.m +// ATLNetworking.m // AdjustTestLibrary // -// Created by Pedro on 18.04.17. -// Copyright © 2017 adjust. All rights reserved. +// Created by Pedro Silva on 24.05.24. +// Copyright © 2024 adjust. All rights reserved. // -#import "ATLUtilNetworking.h" +#import "ATLNetworking.h" #import "ATLUtil.h" -#import "ATLTestLibrary.h" static const double kRequestTimeout = 60; // 60 seconds -static NSURLSessionConfiguration *urlSessionConfiguration = nil; @implementation ATLHttpResponse @end @implementation ATLHttpRequest +- (nonnull id)initWithPath:(nonnull NSString *)path + base:(nullable NSString *)base +{ + self = [super init]; + _path = path; + _base = base; + + return self; +} + @end -@implementation ATLUtilNetworking +@interface ATLNetworking () + +@property (nonatomic, nonnull, strong) NSURLSessionConfiguration *urlSessionConfiguration; + +@end -+ (void)initialize { - if (self != [ATLUtilNetworking class]) { +@implementation ATLNetworking + +- (nonnull instancetype)init { + self = [super init]; + _urlSessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; + + return self; +} + +- (void)sendPostRequestWithData:(nonnull ATLHttpRequest *)requestData + baseUrl:(nonnull NSURL *)baseUrl + responseHandler:(nonnull httpResponseHandler)responseHandler +{ + NSMutableURLRequest *_Nullable request = [self requestWithData:requestData + baseUrl:baseUrl]; + if (request == nil) { return; } - - [self initializeUrlSessionConfiguration]; -} -+ (void)initializeUrlSessionConfiguration { - urlSessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; -} + Class NSURLSessionClass = NSClassFromString(@"NSURLSession"); -+ (NSString *)appendBasePath:(NSString *)basePath - path:(NSString *)path { - if (basePath == nil) { - return path; + if (NSURLSessionClass != nil) { + [self sendNSURLSessionRequest:request + responseHandler:responseHandler]; + } else { + [self sendNSURLConnectionRequest:request + responseHandler:responseHandler]; } - return [NSString stringWithFormat:@"%@%@", basePath, path]; } -+ (void)sendPostRequest:(ATLHttpRequest *)requestData - responseHandler:(httpResponseHandler)responseHandler +- (nullable NSMutableURLRequest *)requestWithData:(nonnull ATLHttpRequest *)requestData + baseUrl:(nonnull NSURL *)baseUrl { - NSMutableURLRequest *request = [ATLUtilNetworking requestForPackage:requestData]; - - [ATLUtilNetworking sendRequest:request - responseHandler:responseHandler]; -} + NSString *_Nonnull mergedPath = requestData.base == nil ? + requestData.path : [NSString stringWithFormat:@"%@%@", requestData.base, requestData.path]; + + NSURL *_Nullable url = [NSURL URLWithString:mergedPath relativeToURL:baseUrl]; + if (url == nil) { + return nil; + } -+ (NSMutableURLRequest *)requestForPackage:(ATLHttpRequest *)requestData -{ - NSURL *url = [NSURL URLWithString:requestData.path relativeToURL:[ATLTestLibrary baseUrl]]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.timeoutInterval = kRequestTimeout; request.HTTPMethod = @"POST"; - + [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; - + if (requestData.headerFields != nil) { for (NSString *key in requestData.headerFields) { [request setValue:requestData.headerFields[key] forHTTPHeaderField:key]; } } - + if (requestData.bodyString != nil) { NSData *body = [NSData dataWithBytes:requestData.bodyString.UTF8String length:requestData.bodyString.length]; [request setHTTPBody:body]; } - - return request; -} -+ (void)sendRequest:(NSMutableURLRequest *)request - responseHandler:(httpResponseHandler)responseHandler -{ - Class NSURLSessionClass = NSClassFromString(@"NSURLSession"); - - if (NSURLSessionClass != nil) { - [ATLUtilNetworking sendNSURLSessionRequest:request - responseHandler:responseHandler]; - } else { - [ATLUtilNetworking sendNSURLConnectionRequest:request - responseHandler:responseHandler]; - } + return request; } -+ (void)sendNSURLSessionRequest:(NSMutableURLRequest *)request - responseHandler:(httpResponseHandler)responseHandler +- (void)sendNSURLSessionRequest:(nonnull NSMutableURLRequest *)request + responseHandler:(nonnull httpResponseHandler)responseHandler { - NSURLSession *session = [NSURLSession sessionWithConfiguration:urlSessionConfiguration + NSURLSession *session = [NSURLSession sessionWithConfiguration:self.urlSessionConfiguration delegate:nil delegateQueue:nil]; - + NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { - ATLHttpResponse *httpResponseData = - [ATLUtilNetworking completionHandler:data - response:(NSHTTPURLResponse *)response - error:error]; - responseHandler(httpResponseData); + responseHandler([ATLNetworking + completionHandler:data + response:(NSHTTPURLResponse *)response + error:error]); }]; - + [task resume]; [session finishTasksAndInvalidate]; } -+ (void)sendNSURLConnectionRequest:(NSMutableURLRequest *)request +- (void)sendNSURLConnectionRequest:(NSMutableURLRequest *)request responseHandler:(httpResponseHandler)responseHandler { NSError *responseError = nil; NSHTTPURLResponse *urlResponse = nil; - + #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&responseError]; #pragma clang diagnostic pop - - ATLHttpResponse *httpResponseData = [ATLUtilNetworking completionHandler:data - response:(NSHTTPURLResponse *)urlResponse - error:responseError]; - - responseHandler(httpResponseData); + + responseHandler([ATLNetworking completionHandler:data + response:(NSHTTPURLResponse *)urlResponse + error:responseError]); } + (ATLHttpResponse *)completionHandler:(NSData *)data @@ -133,20 +137,20 @@ + (ATLHttpResponse *)completionHandler:(NSData *)data error:(NSError *)responseError { ATLHttpResponse *httpResponseData = [[ATLHttpResponse alloc] init]; - + // Connection error if (responseError != nil) { [ATLUtil debug:@"responseError %@", responseError.localizedDescription]; - + return httpResponseData; } - + if ([ATLUtil isNull:data]) { [ATLUtil debug:@"data is null %@"]; return httpResponseData; } - + httpResponseData.responseString = [ATLUtil adjTrim:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]]; [ATLUtil debug:@"Response: %@", httpResponseData.responseString]; @@ -155,32 +159,34 @@ + (ATLHttpResponse *)completionHandler:(NSData *)data httpResponseData.headerFields = urlResponse.allHeaderFields; [ATLUtil debug:@"header fields: %@", httpResponseData.headerFields]; - httpResponseData.jsonFoundation = [ATLUtilNetworking saveJsonResponse:data]; + httpResponseData.jsonFoundation = [ATLNetworking saveJsonResponse:data]; [ATLUtil debug:@"json response: %@", httpResponseData.jsonFoundation]; [ATLUtil debug:@"json response class: %@", NSStringFromClass([httpResponseData.jsonFoundation class])]; //2const char * cStringClassName = object_getClassName(httpResponseData.jsonFoundation); - + return httpResponseData; } + (id)saveJsonResponse:(NSData *)jsonData { NSError *error = nil; NSException *exception = nil; - id jsonFoundation = [ATLUtilNetworking buildJsonFoundation:jsonData exceptionPtr:&exception errorPtr:&error]; - + id jsonFoundation = [ATLNetworking buildJsonFoundation:jsonData + exceptionPtr:&exception + errorPtr:&error]; + if (exception != nil) { [ATLUtil debug:@"Failed to parse json response. (%@)", exception.description]; - + return nil; } - + if (error != nil) { [ATLUtil debug:@"Failed to parse json response. (%@)", error.description]; return nil; } - + return jsonFoundation; } @@ -190,16 +196,16 @@ + (id)buildJsonFoundation:(NSData *)jsonData if (jsonData == nil) { return nil; } - + id jsonFoundation = nil; - + @try { jsonFoundation = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:error]; } @catch (NSException *ex) { *exceptionPtr = ex; return nil; } - + return jsonFoundation; } diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.h b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.h deleted file mode 100644 index 06ac38a0f..000000000 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// ATLTestInfo.h -// AdjustTestLibrary -// -// Created by Pedro on 01.11.17. -// Copyright © 2017 adjust. All rights reserved. -// - -#import -#import "ATLTestLibrary.h" - -@interface ATLTestInfo : NSObject - -- (id)initWithTestLibrary:(ATLTestLibrary *)testLibrary; - -- (void)teardown; - -- (void)addInfoToSend:(NSString *)key - value:(NSString *)value; - -- (void)sendInfoToServer:(NSString *)currentBasePath; - -@end diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.m b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.m deleted file mode 100644 index 42717ff34..000000000 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestInfo.m +++ /dev/null @@ -1,105 +0,0 @@ -// -// ATLTestInfo.m -// AdjustTestLibrary -// -// Created by Pedro on 01.11.17. -// Copyright © 2017 adjust. All rights reserved. -// - -#import "ATLTestInfo.h" -#import "ATLUtil.h" - -static NSString * const TEST_INFO_PATH = @"/test_info"; - -@interface ATLTestInfo() - -@property (nonatomic, strong) NSOperationQueue* operationQueue; -@property (nonatomic, strong) NSMutableDictionary *infoToServer; -@property (nonatomic, weak) ATLTestLibrary * testLibrary; -@property (nonatomic, assign) BOOL closed; - -@end - -@implementation ATLTestInfo - -- (id)initWithTestLibrary:(ATLTestLibrary *)testLibrary { - self = [super init]; - if (self == nil) return nil; - - self.testLibrary = testLibrary; - - self.operationQueue = [[NSOperationQueue alloc] init]; - [self.operationQueue setMaxConcurrentOperationCount:1]; - - self.closed = NO; - - return self; -} - -- (void)teardown { - self.closed = YES; - if (self.operationQueue != nil) { - [ATLUtil debug:@"queue cancel test info thread queue"]; - [ATLUtil addOperationAfterLast:self.operationQueue - block:^{ - [ATLUtil debug:@"cancel test info thread queue"]; - if (self.operationQueue != nil) { - [self.operationQueue cancelAllOperations]; - } - self.operationQueue = nil; - self.testLibrary = nil; - }]; - } else { - self.operationQueue = nil; - self.testLibrary = nil; - } -} - -- (void)addInfoToSend:(NSString *)key - value:(NSString *)value { - [ATLUtil addOperationAfterLast:self.operationQueue - block:^{ - [self addInfoToSendI:key value:value]; - }]; -} - -- (void)addInfoToSendI:(NSString *)key - value:(NSString *)value { - if (key == nil || value == nil) { - return; - } - if (self.infoToServer == nil) { - self.infoToServer = [[NSMutableDictionary alloc] init]; - } - - [self.infoToServer setObject:value forKey:key]; -} - -- (void)sendInfoToServer:(NSString *)currentBasePath { - [ATLUtil addOperationAfterLast:self.operationQueue - block:^{ - [self sendInfoToServerI:currentBasePath]; - }]; -} - - -- (void)sendInfoToServerI:(NSString *)currentBasePath { - [ATLUtil debug:@"sendInfoToServer"]; - - ATLHttpRequest * requestData = [[ATLHttpRequest alloc] init]; - - requestData.path = [ATLUtil appendBasePath:currentBasePath path:TEST_INFO_PATH]; - - if (self.infoToServer) { - requestData.bodyString = [ATLUtil queryString:self.infoToServer]; - } - - [ATLUtilNetworking sendPostRequest:requestData - responseHandler:^(ATLHttpResponse *httpResponse) { - self.infoToServer = nil; - [self.testLibrary readResponse:httpResponse]; - }]; -} - - -@end diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.h b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.h index 099414dde..14f763ba0 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.h +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.h @@ -7,7 +7,7 @@ // #import -#import "ATLUtilNetworking.h" +#import "ATLNetworking.h" #import "ATLBlockingQueue.h" @protocol AdjustCommandDelegate @@ -29,10 +29,6 @@ - (ATLBlockingQueue *)waitControlQueue; -- (id)initWithBaseUrl:(NSString *)baseUrl - andControlUrl:(NSString *)controlUrl - andCommandDelegate:(NSObject *)commandDelegate; - - (void)addTest:(NSString *)testName; - (void)addTestDirectory:(NSString *)testDirectory; @@ -57,7 +53,4 @@ + (ATLTestLibrary *)testLibraryWithBaseUrl:(NSString *)baseUrl andControlUrl:(NSString *)controlUrl andCommandDelegate:(NSObject *)commandDelegate; - -+ (NSURL *)baseUrl; - @end diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.m b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.m index e66749f8e..4c6fbe1b4 100644 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.m +++ b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLTestLibrary.m @@ -9,54 +9,52 @@ #import "ATLTestLibrary.h" #import "ATLUtil.h" #import "ATLConstants.h" -#import "ATLTestInfo.h" #import "ATLBlockingQueue.h" #import "ATLControlWebSocketClient.h" @interface ATLTestLibrary() +@property (nonatomic, strong) NSURL *baseUrl; @property (nonatomic, strong) ATLControlWebSocketClient *controlClient; +@property (nonatomic, strong) ATLNetworking *networking; @property (nonatomic, weak, nullable) NSObject *commandDelegate; @property (nonatomic, strong) ATLBlockingQueue *waitControlQueue; @property (nonatomic, strong) NSOperationQueue *operationQueue; @property (nonatomic, copy) NSString *currentBasePath; @property (nonatomic, copy) NSString *currentTestName; @property (nonatomic, strong) NSMutableString *testNames; -@property (nonatomic, strong) ATLTestInfo *infoToServer; +@property (nonatomic, strong) NSMutableDictionary *infoToServer; +@property (nonatomic, assign) BOOL exitAfterEnd; @end @implementation ATLTestLibrary -BOOL exitAfterEnd = YES; -static NSURL *_baseUrl = nil; - -+ (NSURL *)baseUrl { - return _baseUrl; -} - + (ATLTestLibrary *)testLibraryWithBaseUrl:(NSString *)baseUrl andControlUrl:(NSString *)controlUrl - andCommandDelegate:(NSObject *)commandDelegate { - return [[ATLTestLibrary alloc] initWithBaseUrl:baseUrl - andControlUrl:controlUrl - andCommandDelegate:commandDelegate]; + andCommandDelegate:(NSObject *)commandDelegate +{ + ATLTestLibrary *_Nonnull instance = [[ATLTestLibrary alloc] initWithBaseUrl:baseUrl + andCommandDelegate:commandDelegate]; + + [instance.controlClient initializeWebSocketWithControlUrl:controlUrl andTestLibrary:instance]; + + return instance; } - (id)initWithBaseUrl:(NSString *)baseUrl - andControlUrl:(NSString *)controlUrl - andCommandDelegate:(NSObject *)commandDelegate; + andCommandDelegate:(NSObject *)commandDelegate { self = [super init]; if (self == nil) return nil; _baseUrl = [NSURL URLWithString:baseUrl]; - self.commandDelegate = commandDelegate; - self.testNames = [[NSMutableString alloc] init]; - - self.controlClient = [[ATLControlWebSocketClient alloc] init]; - [self.controlClient initializeWebSocketWithControlUrl:controlUrl andTestLibrary:self]; - + _commandDelegate = commandDelegate; + _testNames = [[NSMutableString alloc] init]; + _controlClient = [[ATLControlWebSocketClient alloc] init]; + _networking = [[ATLNetworking alloc] init]; + _exitAfterEnd = YES; + return self; } @@ -115,9 +113,6 @@ - (void)clearTest { [self.waitControlQueue teardown]; } self.waitControlQueue = nil; - if (self.infoToServer != nil) { - [self.infoToServer teardown]; - } self.infoToServer = nil; } @@ -136,12 +131,19 @@ - (void)resetForNextTest { - (void)initTest { self.waitControlQueue = [[ATLBlockingQueue alloc] init]; - self.infoToServer = [[ATLTestInfo alloc] initWithTestLibrary:self]; } - (void)addInfoToSend:(NSString *)key - value:(NSString *)value { - [self.infoToServer addInfoToSend:key value:value]; + value:(NSString *)value +{ + if (key == nil || value == nil) { + return; + } + if (self.infoToServer == nil) { + self.infoToServer = [[NSMutableDictionary alloc] init]; + } + + [self.infoToServer setObject:value forKey:key]; } - (void)signalEndWaitWithReason:(NSString *)reason { @@ -150,37 +152,65 @@ - (void)signalEndWaitWithReason:(NSString *)reason { - (void)cancelTestAndGetNext { [self resetTestLibrary]; + + __typeof(self) __weak weakSelf = self; [ATLUtil addOperationAfterLast:self.operationQueue blockWithOperation:^(NSBlockOperation *operation) { - ATLHttpRequest *requestData = [[ATLHttpRequest alloc] init]; - requestData.path = [ATLUtilNetworking appendBasePath:self.currentBasePath path:@"/end_test_read_next"]; - [ATLUtilNetworking sendPostRequest:requestData - responseHandler:^(ATLHttpResponse *httpResponse) { - [self readResponse:httpResponse]; - }]; + __typeof(weakSelf) __strong strongSelf = weakSelf; + if (strongSelf == nil) { return; } + + [strongSelf.networking sendPostRequestWithData:[[ATLHttpRequest alloc] + initWithPath:@"/end_test_read_next" + base:self.currentBasePath] + baseUrl:self.baseUrl + responseHandler:^(ATLHttpResponse * _Nonnull httpResponse) + { + [strongSelf readResponse:httpResponse]; + }]; }]; } - (void)sendInfoToServer:(NSString *)basePath { - [self.infoToServer sendInfoToServer:basePath]; + ATLHttpRequest *_Nonnull requestData = [[ATLHttpRequest alloc] + initWithPath:@"/test_info" + base:basePath]; + + if (self.infoToServer != nil) { + requestData.bodyString = [ATLUtil queryString:self.infoToServer]; + } + __typeof(self) __weak weakSelf = self; + [self.networking sendPostRequestWithData:requestData + baseUrl:self.baseUrl + responseHandler:^(ATLHttpResponse *_Nonnull httpResponse) + { + __typeof(weakSelf) __strong strongSelf = weakSelf; + if (strongSelf == nil) { return; } + + strongSelf.infoToServer = nil; + [strongSelf readResponse:httpResponse]; + }]; } - (void)sendTestSessionI:(NSString *)clientSdk { - ATLHttpRequest *requestData = [[ATLHttpRequest alloc] init]; - NSMutableDictionary *headerFields = [NSMutableDictionary dictionaryWithObjectsAndKeys:clientSdk, @"Client-SDK", nil]; + ATLHttpRequest *_Nonnull requestData = [[ATLHttpRequest alloc] + initWithPath:@"/init_session" + base:self.currentBasePath]; + NSMutableDictionary *_Nonnull headerFields = + [NSMutableDictionary dictionaryWithObjectsAndKeys:clientSdk, @"Client-SDK", nil]; if (self.testNames != nil) { [headerFields setObject:self.testNames forKey:@"Test-Names"]; } - requestData.headerFields = headerFields; - requestData.path = @"/init_session"; - - [ATLUtilNetworking sendPostRequest:requestData - responseHandler:^(ATLHttpResponse *httpResponse) { - NSString *testSessionId = httpResponse.headerFields[TEST_SESSION_ID_HEADER]; - [[self controlClient] sendInitTestSessionSignal:testSessionId]; - [self readResponse:httpResponse]; - }]; + + [self.networking sendPostRequestWithData:requestData + baseUrl:self.baseUrl + responseHandler:^(ATLHttpResponse * _Nonnull httpResponse) + { + [self.controlClient sendInitTestSessionSignal: + httpResponse.headerFields[TEST_SESSION_ID_HEADER]]; + + [self readResponse:httpResponse]; + }]; } - (void)readResponse:(ATLHttpResponse *)httpResponse { @@ -279,23 +309,25 @@ - (void)resetTestI:(NSDictionary *)params { } - (void)endTestReadNextI { - ATLHttpRequest *requestData = [[ATLHttpRequest alloc] init]; - requestData.path = [ATLUtilNetworking appendBasePath:self.currentBasePath path:@"/end_test_read_next"]; - [ATLUtilNetworking sendPostRequest:requestData - responseHandler:^(ATLHttpResponse *httpResponse) { - [self readResponse:httpResponse]; - }]; + [self.networking sendPostRequestWithData:[[ATLHttpRequest alloc] + initWithPath:@"/end_test_read_next" + base:self.currentBasePath] + baseUrl:self.baseUrl + responseHandler:^(ATLHttpResponse * _Nonnull httpResponse) + { + [self readResponse:httpResponse]; + }]; } - (void)endTestSessionI { [self teardown]; - if (exitAfterEnd) { + if (self.exitAfterEnd) { exit(0); } } - (void)doNotExitAfterEnd { - exitAfterEnd = false; + self.exitAfterEnd = NO; } - (void)waitI:(NSDictionary *)params { diff --git a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.h b/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.h deleted file mode 100644 index d7370b741..000000000 --- a/AdjustTests/AdjustTestLibrary/AdjustTestLibrary/ATLUtilNetworking.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// ATLUtilNetworking.h -// AdjustTestLibrary -// -// Created by Pedro on 18.04.17. -// Copyright © 2017 adjust. All rights reserved. -// - -#import - -@interface ATLHttpResponse : NSObject - -@property (nonatomic, copy) NSString *responseString; -@property (nonatomic, strong) id jsonFoundation; -@property (nonatomic, strong) NSDictionary *headerFields; -@property (nonatomic, assign) NSInteger statusCode; - -@end - -@interface ATLHttpRequest : NSObject - -@property (nonatomic, copy) NSString *path; -@property (nonatomic, copy) NSString *bodyString; -@property (nonatomic, strong) NSDictionary *headerFields; - -@end - -typedef void (^httpResponseHandler)(ATLHttpResponse* httpResponse); - -@interface ATLUtilNetworking : NSObject - -+ (void)sendPostRequest:(ATLHttpRequest *)requestData - responseHandler:(httpResponseHandler) responseHandler; - -+ (NSString *)appendBasePath:(NSString *)basePath - path:(NSString *)path; -@end diff --git a/AdjustTests/AdjustUnitTests/Adjust-Prefix.pch b/AdjustTests/AdjustUnitTests/Adjust-Prefix.pch deleted file mode 100644 index eb2007ecd..000000000 --- a/AdjustTests/AdjustUnitTests/Adjust-Prefix.pch +++ /dev/null @@ -1,9 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#ifdef __OBJC__ - #import -#endif diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj index 4d237fe01..39b20df05 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj @@ -3,19 +3,16 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 07077DC32BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 07077DBE2BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.m */; }; - 07077DC42BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 07077DC02BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.m */; }; - 07077DC52BAB2D9200D44AC7 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 07077DC12BAB2D9200D44AC7 /* ADJPurchase.m */; }; - 6F6F75A223279D4D00F47E64 /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F759723279D4D00F47E64 /* AdjustBridge.m */; }; - 6F6F75A323279D4D00F47E64 /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F759A23279D4D00F47E64 /* WebViewJavascriptBridgeBase.m */; }; - 6F6F75A423279D4D00F47E64 /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F759B23279D4D00F47E64 /* WKWebViewJavascriptBridge.m */; }; - 6F6F75A523279D4D00F47E64 /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F759E23279D4D00F47E64 /* WebViewJavascriptBridge_JS.m */; }; - 6F6F75A623279D4D00F47E64 /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75A123279D4D00F47E64 /* AdjustBridgeRegister.m */; }; - 6F6F75CB2327C08B00F47E64 /* ATLTestInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75A82327C08B00F47E64 /* ATLTestInfo.m */; }; + 07D5CAAD2C50E67400C112DC /* WKWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CAAC2C50E67400C112DC /* WKWebViewController.m */; }; + 07D5CAB02C50E7BA00C112DC /* TestLibraryBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CAAF2C50E7BA00C112DC /* TestLibraryBridge.m */; }; + 0A584D852C3EA31B0071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D832C3EA31B0071A651 /* AdjustSigSdk.xcframework */; }; + 0A584D862C3EA31B0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D832C3EA31B0071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584D872C3EA31B0071A651 /* libAdjustBridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D842C3EA31B0071A651 /* libAdjustBridge.a */; }; + 6F666C962C00C430005A6D90 /* ATLNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F666C952C00C430005A6D90 /* ATLNetworking.m */; }; 6F6F75CC2327C08B00F47E64 /* ATLControlWebSocketClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75AD2327C08B00F47E64 /* ATLControlWebSocketClient.m */; }; 6F6F75CD2327C08B00F47E64 /* ATLUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75B02327C08B00F47E64 /* ATLUtil.m */; }; 6F6F75CE2327C08B00F47E64 /* ATLControlSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75B12327C08B00F47E64 /* ATLControlSignal.m */; }; @@ -27,7 +24,6 @@ 6F6F75D42327C08B00F47E64 /* PSWebSocketNetworkThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75C02327C08B00F47E64 /* PSWebSocketNetworkThread.m */; }; 6F6F75D52327C08B00F47E64 /* PSWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75C32327C08B00F47E64 /* PSWebSocket.m */; }; 6F6F75D62327C08B00F47E64 /* PSWebSocketServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75C52327C08B00F47E64 /* PSWebSocketServer.m */; }; - 6F6F75D72327C08B00F47E64 /* ATLUtilNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75C72327C08B00F47E64 /* ATLUtilNetworking.m */; }; 6F6F75D82327C08B00F47E64 /* ATLTestLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75C92327C08B00F47E64 /* ATLTestLibrary.m */; }; 6F6F75D92327C08B00F47E64 /* ATLBlockingQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F6F75CA2327C08B00F47E64 /* ATLBlockingQueue.m */; }; 6F7AF62B211878BA00F730B2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF62A211878BA00F730B2 /* AppDelegate.m */; }; @@ -35,78 +31,44 @@ 6F7AF633211878BC00F730B2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6F7AF632211878BC00F730B2 /* Assets.xcassets */; }; 6F7AF636211878BC00F730B2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6F7AF634211878BC00F730B2 /* LaunchScreen.storyboard */; }; 6F7AF639211878BC00F730B2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF638211878BC00F730B2 /* main.m */; }; - 6F7AF73221187CFF00F730B2 /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6EF21187CFE00F730B2 /* ADJTimerOnce.m */; }; - 6F7AF73321187CFF00F730B2 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6F021187CFE00F730B2 /* ADJAttributionHandler.m */; }; - 6F7AF73421187CFF00F730B2 /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6F321187CFE00F730B2 /* ADJRequestHandler.m */; }; - 6F7AF73621187CFF00F730B2 /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6F721187CFE00F730B2 /* ADJSdkClickHandler.m */; }; - 6F7AF73721187CFF00F730B2 /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6F921187CFE00F730B2 /* ADJEvent.m */; }; - 6F7AF73821187CFF00F730B2 /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6FD21187CFE00F730B2 /* ADJSessionSuccess.m */; }; - 6F7AF73921187CFF00F730B2 /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF6FE21187CFE00F730B2 /* ADJEventFailure.m */; }; - 6F7AF73A21187CFF00F730B2 /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70021187CFE00F730B2 /* ADJEventSuccess.m */; }; - 6F7AF73B21187CFF00F730B2 /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70121187CFE00F730B2 /* ADJActivityState.m */; }; - 6F7AF73C21187CFF00F730B2 /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70221187CFE00F730B2 /* ADJSessionFailure.m */; }; - 6F7AF73D21187CFF00F730B2 /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70621187CFE00F730B2 /* ADJTimerCycle.m */; }; - 6F7AF73E21187CFF00F730B2 /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70721187CFE00F730B2 /* ADJSessionParameters.m */; }; - 6F7AF73F21187CFF00F730B2 /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70821187CFE00F730B2 /* ADJLogger.m */; }; - 6F7AF74021187CFF00F730B2 /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70921187CFE00F730B2 /* ADJBackoffStrategy.m */; }; - 6F7AF74121187CFF00F730B2 /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70B21187CFE00F730B2 /* Adjust.m */; }; - 6F7AF74221187CFF00F730B2 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF70F21187CFE00F730B2 /* ADJConfig.m */; }; - 6F7AF74321187CFF00F730B2 /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71021187CFE00F730B2 /* ADJPackageHandler.m */; }; - 6F7AF74421187CFF00F730B2 /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71321187CFE00F730B2 /* ADJActivityKind.m */; }; - 6F7AF74521187CFF00F730B2 /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71621187CFE00F730B2 /* NSString+ADJAdditions.m */; }; - 6F7AF74621187CFF00F730B2 /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71821187CFE00F730B2 /* NSData+ADJAdditions.m */; }; - 6F7AF74821187CFF00F730B2 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71C21187CFE00F730B2 /* ADJAttribution.m */; }; - 6F7AF74A21187CFF00F730B2 /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF71F21187CFE00F730B2 /* ADJActivityPackage.m */; }; - 6F7AF74B21187CFF00F730B2 /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72021187CFE00F730B2 /* ADJUtil.m */; }; - 6F7AF74C21187CFF00F730B2 /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72321187CFE00F730B2 /* ADJAdjustFactory.m */; }; - 6F7AF74D21187CFF00F730B2 /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72621187CFE00F730B2 /* ADJResponseData.m */; }; - 6F7AF74E21187CFF00F730B2 /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72821187CFE00F730B2 /* ADJPackageBuilder.m */; }; - 6F7AF74F21187CFF00F730B2 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72921187CFE00F730B2 /* ADJUserDefaults.m */; }; - 6F7AF75121187CFF00F730B2 /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF72F21187CFF00F730B2 /* ADJActivityHandler.m */; }; - 6F7AF78B21187EC500F730B2 /* WKWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF78A21187EC500F730B2 /* WKWebViewController.m */; }; 6F7AF78D2118808400F730B2 /* AdjustTestApp-WebView.html in Resources */ = {isa = PBXBuildFile; fileRef = 6F7AF78C2118808300F730B2 /* AdjustTestApp-WebView.html */; }; - 6F7AF790211888B500F730B2 /* TestLibraryBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7AF78F211888B500F730B2 /* TestLibraryBridge.m */; }; 6F7AF7B02118949C00F730B2 /* TestLibraryBridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 6F7AF7AF2118949C00F730B2 /* TestLibraryBridge.js */; }; 6F7AF7BB2118992200F730B2 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F7AF7BA2118992200F730B2 /* WebKit.framework */; }; - 6F84513125B1B14E0004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84513025B1B14E0004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB78A32636DD2A00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78A12636DD2A00773869 /* ADJLinkResolution.m */; }; - 6FBEE92324E421C800FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE92224E421C800FEF3F1 /* ADJUrlStrategy.m */; }; 6FD0412C211C71D1008D42D0 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD0412B211C71D1008D42D0 /* iAd.framework */; }; 6FD0412E211C71D9008D42D0 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD0412D211C71D9008D42D0 /* AdSupport.framework */; }; 6FD04130211C71E8008D42D0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD0412F211C71E8008D42D0 /* Foundation.framework */; }; 6FD04132211C71EF008D42D0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD04131211C71EE008D42D0 /* UIKit.framework */; }; - 9D0B5C1B29297B40007009C1 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B5C1929297B40007009C1 /* ADJSKAdNetwork.m */; }; - 9D0B5C1C29297B40007009C1 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B5C1A29297B40007009C1 /* ADJSubscription.m */; }; - 9D3A2AD52626510200BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AD42626510200BD6E44 /* ADJAdRevenue.m */; }; 9DAA5C6C25B0F81F00C718DD /* AdServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAA5C6B25B0F81F00C718DD /* AdServices.framework */; }; - 9DF3822D260E9BC90033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF3822C260E9BC90033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92D962630EDB0000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D952630EDB0000FC3FC /* ADJPackageParams.m */; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584D882C3EA31B0071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584D862C3EA31B0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 07077DBD2BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 07077DBE2BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 07077DBF2BAB2D9200D44AC7 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 07077DC02BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 07077DC12BAB2D9200D44AC7 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 07077DC22BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 6F6F759723279D4D00F47E64 /* AdjustBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridge.m; sourceTree = ""; }; - 6F6F759823279D4D00F47E64 /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; - 6F6F759A23279D4D00F47E64 /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = ""; }; - 6F6F759B23279D4D00F47E64 /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = ""; }; - 6F6F759C23279D4D00F47E64 /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = ""; }; - 6F6F759D23279D4D00F47E64 /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = ""; }; - 6F6F759E23279D4D00F47E64 /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = ""; }; - 6F6F759F23279D4D00F47E64 /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = ""; }; - 6F6F75A023279D4D00F47E64 /* AdjustBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridge.h; sourceTree = ""; }; - 6F6F75A123279D4D00F47E64 /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; - 6F6F75A82327C08B00F47E64 /* ATLTestInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestInfo.m; sourceTree = ""; }; + 07D5CAAB2C50E67400C112DC /* WKWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebViewController.h; sourceTree = ""; }; + 07D5CAAC2C50E67400C112DC /* WKWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WKWebViewController.m; sourceTree = ""; }; + 07D5CAAE2C50E7BA00C112DC /* TestLibraryBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestLibraryBridge.h; sourceTree = ""; }; + 07D5CAAF2C50E7BA00C112DC /* TestLibraryBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestLibraryBridge.m; sourceTree = ""; }; + 0A584D832C3EA31B0071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584D842C3EA31B0071A651 /* libAdjustBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjustBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 6F666C942C00C430005A6D90 /* ATLNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLNetworking.h; sourceTree = ""; }; + 6F666C952C00C430005A6D90 /* ATLNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLNetworking.m; sourceTree = ""; }; 6F6F75A92327C08B00F47E64 /* ATLControlSignal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLControlSignal.h; sourceTree = ""; }; 6F6F75AA2327C08B00F47E64 /* ATLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtil.h; sourceTree = ""; }; 6F6F75AB2327C08B00F47E64 /* ATLConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLConstants.h; sourceTree = ""; }; 6F6F75AC2327C08B00F47E64 /* ATLTestLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestLibrary.h; sourceTree = ""; }; 6F6F75AD2327C08B00F47E64 /* ATLControlWebSocketClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLControlWebSocketClient.m; sourceTree = ""; }; - 6F6F75AE2327C08B00F47E64 /* ATLUtilNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLUtilNetworking.h; sourceTree = ""; }; 6F6F75AF2327C08B00F47E64 /* ATLBlockingQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLBlockingQueue.h; sourceTree = ""; }; 6F6F75B02327C08B00F47E64 /* ATLUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtil.m; sourceTree = ""; }; 6F6F75B12327C08B00F47E64 /* ATLControlSignal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLControlSignal.m; sourceTree = ""; }; @@ -129,8 +91,6 @@ 6F6F75C32327C08B00F47E64 /* PSWebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSWebSocket.m; sourceTree = ""; }; 6F6F75C42327C08B00F47E64 /* PSWebSocketDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSWebSocketDriver.h; sourceTree = ""; }; 6F6F75C52327C08B00F47E64 /* PSWebSocketServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSWebSocketServer.m; sourceTree = ""; }; - 6F6F75C62327C08B00F47E64 /* ATLTestInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLTestInfo.h; sourceTree = ""; }; - 6F6F75C72327C08B00F47E64 /* ATLUtilNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLUtilNetworking.m; sourceTree = ""; }; 6F6F75C82327C08B00F47E64 /* ATLControlWebSocketClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLControlWebSocketClient.h; sourceTree = ""; }; 6F6F75C92327C08B00F47E64 /* ATLTestLibrary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLTestLibrary.m; sourceTree = ""; }; 6F6F75CA2327C08B00F47E64 /* ATLBlockingQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLBlockingQueue.m; sourceTree = ""; }; @@ -142,90 +102,14 @@ 6F7AF635211878BC00F730B2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6F7AF637211878BC00F730B2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6F7AF638211878BC00F730B2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6F7AF6ED21187CFE00F730B2 /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 6F7AF6EF21187CFE00F730B2 /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 6F7AF6F021187CFE00F730B2 /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 6F7AF6F121187CFE00F730B2 /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 6F7AF6F221187CFE00F730B2 /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 6F7AF6F321187CFE00F730B2 /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 6F7AF6F521187CFE00F730B2 /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 6F7AF6F721187CFE00F730B2 /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 6F7AF6F821187CFE00F730B2 /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 6F7AF6F921187CFE00F730B2 /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 6F7AF6FA21187CFE00F730B2 /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 6F7AF6FB21187CFE00F730B2 /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 6F7AF6FC21187CFE00F730B2 /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 6F7AF6FD21187CFE00F730B2 /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 6F7AF6FE21187CFE00F730B2 /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 6F7AF6FF21187CFE00F730B2 /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 6F7AF70021187CFE00F730B2 /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 6F7AF70121187CFE00F730B2 /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 6F7AF70221187CFE00F730B2 /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 6F7AF70321187CFE00F730B2 /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 6F7AF70521187CFE00F730B2 /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 6F7AF70621187CFE00F730B2 /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 6F7AF70721187CFE00F730B2 /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 6F7AF70821187CFE00F730B2 /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 6F7AF70921187CFE00F730B2 /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 6F7AF70A21187CFE00F730B2 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 6F7AF70B21187CFE00F730B2 /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 6F7AF70C21187CFE00F730B2 /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 6F7AF70D21187CFE00F730B2 /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 6F7AF70F21187CFE00F730B2 /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 6F7AF71021187CFE00F730B2 /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 6F7AF71121187CFE00F730B2 /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 6F7AF71221187CFE00F730B2 /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 6F7AF71321187CFE00F730B2 /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 6F7AF71621187CFE00F730B2 /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 6F7AF71821187CFE00F730B2 /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 6F7AF71921187CFE00F730B2 /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 6F7AF71B21187CFE00F730B2 /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 6F7AF71C21187CFE00F730B2 /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 6F7AF71E21187CFE00F730B2 /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 6F7AF71F21187CFE00F730B2 /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 6F7AF72021187CFE00F730B2 /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 6F7AF72121187CFE00F730B2 /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 6F7AF72221187CFE00F730B2 /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 6F7AF72321187CFE00F730B2 /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 6F7AF72421187CFE00F730B2 /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 6F7AF72521187CFE00F730B2 /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 6F7AF72621187CFE00F730B2 /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 6F7AF72721187CFE00F730B2 /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 6F7AF72821187CFE00F730B2 /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 6F7AF72921187CFE00F730B2 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 6F7AF72A21187CFE00F730B2 /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 6F7AF72B21187CFE00F730B2 /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 6F7AF72C21187CFF00F730B2 /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 6F7AF72E21187CFF00F730B2 /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 6F7AF72F21187CFF00F730B2 /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 6F7AF78921187EC500F730B2 /* WKWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebViewController.h; sourceTree = ""; }; - 6F7AF78A21187EC500F730B2 /* WKWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WKWebViewController.m; sourceTree = ""; }; 6F7AF78C2118808300F730B2 /* AdjustTestApp-WebView.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "AdjustTestApp-WebView.html"; sourceTree = ""; }; - 6F7AF78E211888B500F730B2 /* TestLibraryBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestLibraryBridge.h; sourceTree = ""; }; - 6F7AF78F211888B500F730B2 /* TestLibraryBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestLibraryBridge.m; sourceTree = ""; }; 6F7AF7AF2118949C00F730B2 /* TestLibraryBridge.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = TestLibraryBridge.js; sourceTree = ""; }; 6F7AF7BA2118992200F730B2 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - 6F84512F25B1B14E0004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6F84513025B1B14E0004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6FAB78A12636DD2A00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78A22636DD2A00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FBEE92124E421C800FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE92224E421C800FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; 6FD0412B211C71D1008D42D0 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 6FD0412D211C71D9008D42D0 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 6FD0412F211C71E8008D42D0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6FD04131211C71EE008D42D0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 9D0B5C1729297B40007009C1 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D0B5C1829297B40007009C1 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D0B5C1929297B40007009C1 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D0B5C1A29297B40007009C1 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D3A2AD32626510200BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AD42626510200BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; 9DAA5C6B25B0F81F00C718DD /* AdServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdServices.framework; path = System/Library/Frameworks/AdServices.framework; sourceTree = SDKROOT; }; - 9DF3822B260E9BC90033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF3822C260E9BC90033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF92D942630EDB0000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92D952630EDB0000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -234,59 +118,33 @@ buildActionMask = 2147483647; files = ( 6FD04132211C71EF008D42D0 /* UIKit.framework in Frameworks */, + 0A584D852C3EA31B0071A651 /* AdjustSigSdk.xcframework in Frameworks */, 6FD04130211C71E8008D42D0 /* Foundation.framework in Frameworks */, 6FD0412E211C71D9008D42D0 /* AdSupport.framework in Frameworks */, 6FD0412C211C71D1008D42D0 /* iAd.framework in Frameworks */, 6F7AF7BB2118992200F730B2 /* WebKit.framework in Frameworks */, 9DAA5C6C25B0F81F00C718DD /* AdServices.framework in Frameworks */, + 0A584D872C3EA31B0071A651 /* libAdjustBridge.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 6F6F759623279D4D00F47E64 /* AdjustBridge */ = { - isa = PBXGroup; - children = ( - 6F6F759723279D4D00F47E64 /* AdjustBridge.m */, - 6F6F759823279D4D00F47E64 /* AdjustBridgeRegister.h */, - 6F6F759923279D4D00F47E64 /* WebViewJavascriptBridge */, - 6F6F75A023279D4D00F47E64 /* AdjustBridge.h */, - 6F6F75A123279D4D00F47E64 /* AdjustBridgeRegister.m */, - ); - name = AdjustBridge; - path = ../../../AdjustBridge; - sourceTree = ""; - }; - 6F6F759923279D4D00F47E64 /* WebViewJavascriptBridge */ = { - isa = PBXGroup; - children = ( - 6F6F759A23279D4D00F47E64 /* WebViewJavascriptBridgeBase.m */, - 6F6F759B23279D4D00F47E64 /* WKWebViewJavascriptBridge.m */, - 6F6F759C23279D4D00F47E64 /* WebViewJavascriptBridge_JS.h */, - 6F6F759D23279D4D00F47E64 /* WebViewJavascriptBridgeBase.h */, - 6F6F759E23279D4D00F47E64 /* WebViewJavascriptBridge_JS.m */, - 6F6F759F23279D4D00F47E64 /* WKWebViewJavascriptBridge.h */, - ); - path = WebViewJavascriptBridge; - sourceTree = ""; - }; 6F6F75A72327C08B00F47E64 /* AdjustTestLibrary */ = { isa = PBXGroup; children = ( - 6F6F75A82327C08B00F47E64 /* ATLTestInfo.m */, + 6F666C942C00C430005A6D90 /* ATLNetworking.h */, + 6F666C952C00C430005A6D90 /* ATLNetworking.m */, 6F6F75A92327C08B00F47E64 /* ATLControlSignal.h */, 6F6F75AA2327C08B00F47E64 /* ATLUtil.h */, 6F6F75AB2327C08B00F47E64 /* ATLConstants.h */, 6F6F75AC2327C08B00F47E64 /* ATLTestLibrary.h */, 6F6F75AD2327C08B00F47E64 /* ATLControlWebSocketClient.m */, - 6F6F75AE2327C08B00F47E64 /* ATLUtilNetworking.h */, 6F6F75AF2327C08B00F47E64 /* ATLBlockingQueue.h */, 6F6F75B02327C08B00F47E64 /* ATLUtil.m */, 6F6F75B12327C08B00F47E64 /* ATLControlSignal.m */, 6F6F75B22327C08B00F47E64 /* PocketSocket */, - 6F6F75C62327C08B00F47E64 /* ATLTestInfo.h */, - 6F6F75C72327C08B00F47E64 /* ATLUtilNetworking.m */, 6F6F75C82327C08B00F47E64 /* ATLControlWebSocketClient.h */, 6F6F75C92327C08B00F47E64 /* ATLTestLibrary.m */, 6F6F75CA2327C08B00F47E64 /* ATLBlockingQueue.m */, @@ -344,10 +202,10 @@ 6F7AF629211878BA00F730B2 /* AppDelegate.h */, 6F7AF62A211878BA00F730B2 /* AppDelegate.m */, 6F7AF7AF2118949C00F730B2 /* TestLibraryBridge.js */, - 6F7AF78E211888B500F730B2 /* TestLibraryBridge.h */, - 6F7AF78F211888B500F730B2 /* TestLibraryBridge.m */, - 6F7AF78921187EC500F730B2 /* WKWebViewController.h */, - 6F7AF78A21187EC500F730B2 /* WKWebViewController.m */, + 07D5CAAE2C50E7BA00C112DC /* TestLibraryBridge.h */, + 07D5CAAF2C50E7BA00C112DC /* TestLibraryBridge.m */, + 07D5CAAB2C50E67400C112DC /* WKWebViewController.h */, + 07D5CAAC2C50E67400C112DC /* WKWebViewController.m */, 6F7AF78C2118808300F730B2 /* AdjustTestApp-WebView.html */, 6F7AF638211878BC00F730B2 /* main.m */, 6F7AF637211878BC00F730B2 /* Info.plist */, @@ -355,109 +213,15 @@ 6F7AF62F211878BA00F730B2 /* Main.storyboard */, 6F7AF634211878BC00F730B2 /* LaunchScreen.storyboard */, 6F6F75A72327C08B00F47E64 /* AdjustTestLibrary */, - 6F6F759623279D4D00F47E64 /* AdjustBridge */, - 6F7AF6EC21187CFE00F730B2 /* Adjust */, ); path = AdjustWebBridgeTestApp; sourceTree = ""; }; - 6F7AF6EC21187CFE00F730B2 /* Adjust */ = { - isa = PBXGroup; - children = ( - 07077DBF2BAB2D9200D44AC7 /* ADJPurchase.h */, - 07077DC12BAB2D9200D44AC7 /* ADJPurchase.m */, - 07077DC22BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.h */, - 07077DC02BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.m */, - 07077DBD2BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.h */, - 07077DBE2BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.m */, - 9D0B5C1729297B40007009C1 /* ADJSKAdNetwork.h */, - 9D0B5C1929297B40007009C1 /* ADJSKAdNetwork.m */, - 9D0B5C1829297B40007009C1 /* ADJSubscription.h */, - 9D0B5C1A29297B40007009C1 /* ADJSubscription.m */, - 6F7AF6ED21187CFE00F730B2 /* ADJConfig.h */, - 6F7AF6EF21187CFE00F730B2 /* ADJTimerOnce.m */, - 6F7AF6F021187CFE00F730B2 /* ADJAttributionHandler.m */, - 6F7AF6F121187CFE00F730B2 /* Adjust.h */, - 6F7AF6F221187CFE00F730B2 /* ADJActivityPackage.h */, - 6F7AF6F321187CFE00F730B2 /* ADJRequestHandler.m */, - 6F7AF6F521187CFE00F730B2 /* ADJAttribution.h */, - 6F7AF6F721187CFE00F730B2 /* ADJSdkClickHandler.m */, - 6F7AF6F821187CFE00F730B2 /* ADJActivityKind.h */, - 6F7AF6F921187CFE00F730B2 /* ADJEvent.m */, - 6F7AF6FA21187CFE00F730B2 /* ADJPackageHandler.h */, - 6F7AF6FB21187CFE00F730B2 /* ADJPackageBuilder.h */, - 6F7AF6FC21187CFE00F730B2 /* ADJResponseData.h */, - 6F7AF6FD21187CFE00F730B2 /* ADJSessionSuccess.m */, - 6F7AF6FE21187CFE00F730B2 /* ADJEventFailure.m */, - 6F7AF6FF21187CFE00F730B2 /* ADJAdjustFactory.h */, - 6F7AF70021187CFE00F730B2 /* ADJEventSuccess.m */, - 6F7AF70121187CFE00F730B2 /* ADJActivityState.m */, - 6F7AF70221187CFE00F730B2 /* ADJSessionFailure.m */, - 6F7AF70321187CFE00F730B2 /* ADJUtil.h */, - 6F7AF70521187CFE00F730B2 /* ADJActivityHandler.h */, - 6F7AF70621187CFE00F730B2 /* ADJTimerCycle.m */, - 6F7AF70721187CFE00F730B2 /* ADJSessionParameters.m */, - 6F7AF70821187CFE00F730B2 /* ADJLogger.m */, - 6F7AF70921187CFE00F730B2 /* ADJBackoffStrategy.m */, - 6F7AF70A21187CFE00F730B2 /* ADJUserDefaults.h */, - 6F7AF70B21187CFE00F730B2 /* Adjust.m */, - 6F7AF70C21187CFE00F730B2 /* ADJAttributionHandler.h */, - 6F7AF70D21187CFE00F730B2 /* ADJTimerOnce.h */, - 6F7AF70F21187CFE00F730B2 /* ADJConfig.m */, - 6F7AF71021187CFE00F730B2 /* ADJPackageHandler.m */, - 6F7AF71121187CFE00F730B2 /* ADJEvent.h */, - 6F7AF71221187CFE00F730B2 /* ADJSdkClickHandler.h */, - 6F7AF71321187CFE00F730B2 /* ADJActivityKind.m */, - 6F7AF71521187CFE00F730B2 /* ADJAdditions */, - 6F7AF71C21187CFE00F730B2 /* ADJAttribution.m */, - 6F7AF71E21187CFE00F730B2 /* ADJRequestHandler.h */, - 6F7AF71F21187CFE00F730B2 /* ADJActivityPackage.m */, - 6F7AF72021187CFE00F730B2 /* ADJUtil.m */, - 6F7AF72121187CFE00F730B2 /* ADJSessionFailure.h */, - 6F7AF72221187CFE00F730B2 /* ADJActivityState.h */, - 6F7AF72321187CFE00F730B2 /* ADJAdjustFactory.m */, - 6F7AF72421187CFE00F730B2 /* ADJEventSuccess.h */, - 6F7AF72521187CFE00F730B2 /* ADJEventFailure.h */, - 6F7AF72621187CFE00F730B2 /* ADJResponseData.m */, - 6F7AF72721187CFE00F730B2 /* ADJSessionSuccess.h */, - 6F7AF72821187CFE00F730B2 /* ADJPackageBuilder.m */, - 6F7AF72921187CFE00F730B2 /* ADJUserDefaults.m */, - 6F7AF72A21187CFE00F730B2 /* ADJBackoffStrategy.h */, - 6F7AF72B21187CFE00F730B2 /* ADJLogger.h */, - 6F7AF72C21187CFF00F730B2 /* ADJSessionParameters.h */, - 6F7AF72E21187CFF00F730B2 /* ADJTimerCycle.h */, - 6F7AF72F21187CFF00F730B2 /* ADJActivityHandler.m */, - 6FBEE92124E421C800FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE92224E421C800FEF3F1 /* ADJUrlStrategy.m */, - 6F84512F25B1B14E0004C7C0 /* ADJThirdPartySharing.h */, - 6F84513025B1B14E0004C7C0 /* ADJThirdPartySharing.m */, - 9D3A2AD32626510200BD6E44 /* ADJAdRevenue.h */, - 9D3A2AD42626510200BD6E44 /* ADJAdRevenue.m */, - 9DF92D942630EDB0000FC3FC /* ADJPackageParams.h */, - 9DF92D952630EDB0000FC3FC /* ADJPackageParams.m */, - 6FAB78A22636DD2A00773869 /* ADJLinkResolution.h */, - 6FAB78A12636DD2A00773869 /* ADJLinkResolution.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 6F7AF71521187CFE00F730B2 /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF3822B260E9BC90033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF3822C260E9BC90033F5A1 /* NSNumber+ADJAdditions.m */, - 6F7AF71621187CFE00F730B2 /* NSString+ADJAdditions.m */, - 6F7AF71821187CFE00F730B2 /* NSData+ADJAdditions.m */, - 6F7AF71921187CFE00F730B2 /* NSData+ADJAdditions.h */, - 6F7AF71B21187CFE00F730B2 /* NSString+ADJAdditions.h */, - ); - path = ADJAdditions; - sourceTree = ""; - }; 6F7AF7B92118992200F730B2 /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584D832C3EA31B0071A651 /* AdjustSigSdk.xcframework */, + 0A584D842C3EA31B0071A651 /* libAdjustBridge.a */, 9DAA5C6B25B0F81F00C718DD /* AdServices.framework */, 6FD04131211C71EE008D42D0 /* UIKit.framework */, 6FD0412F211C71E8008D42D0 /* Foundation.framework */, @@ -478,6 +242,7 @@ 6F7AF622211878B900F730B2 /* Sources */, 6F7AF623211878B900F730B2 /* Frameworks */, 6F7AF624211878B900F730B2 /* Resources */, + 0A584D882C3EA31B0071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -494,7 +259,8 @@ 6F7AF61E211878B900F730B2 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = adjust; TargetAttributes = { 6F7AF625211878B900F730B2 = { @@ -540,69 +306,24 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6F7AF73621187CFF00F730B2 /* ADJSdkClickHandler.m in Sources */, - 6F7AF74C21187CFF00F730B2 /* ADJAdjustFactory.m in Sources */, 6F6F75CC2327C08B00F47E64 /* ATLControlWebSocketClient.m in Sources */, - 6F6F75A623279D4D00F47E64 /* AdjustBridgeRegister.m in Sources */, - 6F7AF790211888B500F730B2 /* TestLibraryBridge.m in Sources */, - 6F7AF74D21187CFF00F730B2 /* ADJResponseData.m in Sources */, - 9D3A2AD52626510200BD6E44 /* ADJAdRevenue.m in Sources */, - 6F7AF73221187CFF00F730B2 /* ADJTimerOnce.m in Sources */, - 6F7AF74521187CFF00F730B2 /* NSString+ADJAdditions.m in Sources */, 6F6F75CD2327C08B00F47E64 /* ATLUtil.m in Sources */, - 07077DC32BAB2D9200D44AC7 /* ADJPurchaseVerificationResult.m in Sources */, - 6F7AF73821187CFF00F730B2 /* ADJSessionSuccess.m in Sources */, - 6F7AF74E21187CFF00F730B2 /* ADJPackageBuilder.m in Sources */, 6F6F75D22327C08B00F47E64 /* PSWebSocketDriver.m in Sources */, - 6F7AF74021187CFF00F730B2 /* ADJBackoffStrategy.m in Sources */, 6F6F75D92327C08B00F47E64 /* ATLBlockingQueue.m in Sources */, - 6F7AF73421187CFF00F730B2 /* ADJRequestHandler.m in Sources */, - 6F84513125B1B14E0004C7C0 /* ADJThirdPartySharing.m in Sources */, - 6F7AF73721187CFF00F730B2 /* ADJEvent.m in Sources */, - 6F7AF74621187CFF00F730B2 /* NSData+ADJAdditions.m in Sources */, - 07077DC42BAB2D9200D44AC7 /* ADJPurchaseVerificationHandler.m in Sources */, 6F6F75D82327C08B00F47E64 /* ATLTestLibrary.m in Sources */, 6F6F75D42327C08B00F47E64 /* PSWebSocketNetworkThread.m in Sources */, - 9DF92D962630EDB0000FC3FC /* ADJPackageParams.m in Sources */, - 9DF3822D260E9BC90033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 6F7AF74321187CFF00F730B2 /* ADJPackageHandler.m in Sources */, 6F6F75D02327C08B00F47E64 /* PSWebSocketDeflater.m in Sources */, - 6F6F75A323279D4D00F47E64 /* WebViewJavascriptBridgeBase.m in Sources */, - 6F7AF73A21187CFF00F730B2 /* ADJEventSuccess.m in Sources */, - 6F7AF74A21187CFF00F730B2 /* ADJActivityPackage.m in Sources */, - 6F7AF74421187CFF00F730B2 /* ADJActivityKind.m in Sources */, - 6FAB78A32636DD2A00773869 /* ADJLinkResolution.m in Sources */, 6F6F75D62327C08B00F47E64 /* PSWebSocketServer.m in Sources */, - 6F7AF73B21187CFF00F730B2 /* ADJActivityState.m in Sources */, - 6F7AF73F21187CFF00F730B2 /* ADJLogger.m in Sources */, - 6F7AF78B21187EC500F730B2 /* WKWebViewController.m in Sources */, - 6F7AF73D21187CFF00F730B2 /* ADJTimerCycle.m in Sources */, 6F6F75CF2327C08B00F47E64 /* PSWebSocketInflater.m in Sources */, - 6F6F75A523279D4D00F47E64 /* WebViewJavascriptBridge_JS.m in Sources */, 6F7AF639211878BC00F730B2 /* main.m in Sources */, - 6F7AF74121187CFF00F730B2 /* Adjust.m in Sources */, - 07077DC52BAB2D9200D44AC7 /* ADJPurchase.m in Sources */, - 6F6F75A223279D4D00F47E64 /* AdjustBridge.m in Sources */, - 6FBEE92324E421C800FEF3F1 /* ADJUrlStrategy.m in Sources */, + 07D5CAB02C50E7BA00C112DC /* TestLibraryBridge.m in Sources */, + 07D5CAAD2C50E67400C112DC /* WKWebViewController.m in Sources */, 6F6F75D32327C08B00F47E64 /* PSWebSocketBuffer.m in Sources */, - 6F7AF74821187CFF00F730B2 /* ADJAttribution.m in Sources */, - 6F6F75D72327C08B00F47E64 /* ATLUtilNetworking.m in Sources */, - 6F7AF73C21187CFF00F730B2 /* ADJSessionFailure.m in Sources */, 6F6F75D12327C08B00F47E64 /* PSWebSocketUTF8Decoder.m in Sources */, - 6F7AF74221187CFF00F730B2 /* ADJConfig.m in Sources */, - 6F7AF74F21187CFF00F730B2 /* ADJUserDefaults.m in Sources */, - 6F7AF74B21187CFF00F730B2 /* ADJUtil.m in Sources */, + 6F666C962C00C430005A6D90 /* ATLNetworking.m in Sources */, 6F6F75D52327C08B00F47E64 /* PSWebSocket.m in Sources */, - 9D0B5C1B29297B40007009C1 /* ADJSKAdNetwork.m in Sources */, - 6F6F75CB2327C08B00F47E64 /* ATLTestInfo.m in Sources */, - 6F7AF73921187CFF00F730B2 /* ADJEventFailure.m in Sources */, - 6F7AF73321187CFF00F730B2 /* ADJAttributionHandler.m in Sources */, 6F6F75CE2327C08B00F47E64 /* ATLControlSignal.m in Sources */, - 6F6F75A423279D4D00F47E64 /* WKWebViewJavascriptBridge.m in Sources */, - 9D0B5C1C29297B40007009C1 /* ADJSubscription.m in Sources */, 6F7AF62B211878BA00F730B2 /* AppDelegate.m in Sources */, - 6F7AF75121187CFF00F730B2 /* ADJActivityHandler.m in Sources */, - 6F7AF73E21187CFF00F730B2 /* ADJSessionParameters.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -666,6 +387,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -727,6 +449,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 = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -751,7 +474,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = AdjustWebBridgeTestApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -769,7 +492,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = AdjustWebBridgeTestApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/xcshareddata/xcschemes/AdjustWebBridgeTestApp.xcscheme b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/xcshareddata/xcschemes/AdjustWebBridgeTestApp.xcscheme index d397931b5..57fa40633 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/xcshareddata/xcschemes/AdjustWebBridgeTestApp.xcscheme +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/xcshareddata/xcschemes/AdjustWebBridgeTestApp.xcscheme @@ -1,6 +1,6 @@ - + -

Adjust TestApp

+

Adjust TestApp

+ - -
-
- -
-
-
+ + + diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.h b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.h index dd10666d2..aada59699 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.h +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.h @@ -3,7 +3,7 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.m b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.m index 0c0b14f4d..57c69eeff 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.m +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/AppDelegate.m @@ -3,7 +3,7 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import "AppDelegate.h" diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.h b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.h index 6046b08ab..66d35a77a 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.h +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.h @@ -3,22 +3,24 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import +#import #import "ATLTestLibrary.h" -#import "AdjustBridgeRegister.h" // simulator -static NSString * urlOverwrite = @"http://127.0.0.1:8080"; -static NSString * controlUrl = @"ws://127.0.0.1:1987"; +//static NSString * urlOverwrite = @"http://127.0.0.1:8080"; +//static NSString * controlUrl = @"ws://127.0.0.1:1987"; + // device -//static NSString * urlOverwrite = @"http://192.168.86.44:8080"; -//static NSString * controlUrl = @"ws://192.168.86.44:1987"; +static NSString * urlOverwrite = @"http://192.168.178.81:8080"; +static NSString * controlUrl = @"ws://192.168.178.81:1987"; @interface TestLibraryBridge : NSObject -- (id)initWithAdjustBridgeRegister:(AdjustBridgeRegister *)adjustBridgeRegister; +- (id)initWithAdjustBridge:(AdjustBridge *)adjustBridge; @end + diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.js b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.js index 070a1159e..946104f2a 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.js +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.js @@ -1,9 +1,9 @@ // simulator -var urlOverwrite = 'http://127.0.0.1:8080'; -var controlUrl = 'ws://127.0.0.1:1987'; +//var urlOverwrite = 'http://127.0.0.1:8080'; +//var controlUrl = 'ws://127.0.0.1:1987'; // device -// var urlOverwrite = 'http://192.168.86.44:8080'; -// var controlUrl = 'ws://192.168.86.44:1987'; +var urlOverwrite = 'http://192.168.178.81:8080'; +var controlUrl = 'ws://192.168.178.81:1987'; // local reference of the command executor // originally it was this.adjustCommandExecutor of TestLibraryBridge var @@ -11,38 +11,63 @@ var controlUrl = 'ws://127.0.0.1:1987'; var localAdjustCommandExecutor; var TestLibraryBridge = { - adjustCommandExecutor: function(commandRawJson) { + adjustCommandExecutor: function (commandRawJson) { console.log('TestLibraryBridge adjustCommandExecutor'); const command = JSON.parse(commandRawJson); console.log('className: ' + command.className); console.log('functionName: ' + command.functionName); console.log('params: ' + JSON.stringify(command.params)); + if (command.className == 'TestOptions') { + if (command.functionName != "teardown") { + console.log('TestLibraryBridge TestOption only method should be teardown.'); + return; + } + } + + if (command.className == 'AdjustV4') { + console.log('TestLibraryBridge AdjustV4 is not supported.'); + return; + } // reflection based technique to call functions with the same name as the command function localAdjustCommandExecutor[command.functionName](command.params); }, + startTestSession: function () { console.log('TestLibraryBridge startTestSession'); - if (WebViewJavascriptBridge) { - console.log('TestLibraryBridge startTestSession callHandler'); - localAdjustCommandExecutor = new AdjustCommandExecutor(urlOverwrite, controlUrl); - // register objc->JS function for commands - WebViewJavascriptBridge.registerHandler('adjustJS_commandExecutor', TestLibraryBridge.adjustCommandExecutor); - // start test session in obj-c - Adjust.getSdkVersion(function(sdkVersion) { - WebViewJavascriptBridge.callHandler('adjustTLB_startTestSession', sdkVersion, null); - }); - } + console.log('TestLibraryBridge startTestSession callHandler'); + localAdjustCommandExecutor = new AdjustCommandExecutor(urlOverwrite, controlUrl); + Adjust.getSdkVersion(function(sdkVersion) { + // pass the sdk version to native side + const message = { + action: 'adjustTLB_startTestSession', + data: sdkVersion + }; + window.webkit.messageHandlers.adjustTest.postMessage(message); + }); }, - addTestDirectory: function(directoryName) { - WebViewJavascriptBridge.callHandler('adjustTLB_addTestDirectory', {directoryName: directoryName}, null); + addTestDirectory: function (directoryName) { + const message = { + action: 'adjustTLB_addTestDirectory', + data: directoryName + }; + window.webkit.messageHandlers.adjustTest.postMessage(message); + }, + addTest: function (testName) { + const message = { + action: 'adjustTLB_addTest', + data: testName + }; + window.webkit.messageHandlers.adjustTest.postMessage(message); + }, + teardownReturnExtraPath: function (extraPath) { + this.extraPath = extraPath; + // TODO - pending implementatio + // Adjust.instance().teardown; }, - addTest: function(testName) { - WebViewJavascriptBridge.callHandler('adjustTLB_addTest', {testName: testName}, null); - } }; -var AdjustCommandExecutor = function(urlOverwrite, controlUrl) { +var AdjustCommandExecutor = function (urlOverwrite, controlUrl) { this.urlOverwrite = urlOverwrite; this.controlUrl = controlUrl; this.extraPath = null; @@ -52,6 +77,24 @@ var AdjustCommandExecutor = function(urlOverwrite, controlUrl) { this.nextToSendCounter = 0; }; +AdjustCommandExecutor.prototype.teardown = function (params) { + console.log('TestLibraryBridge teardown'); + console.log('params: ' + JSON.stringify(params)); + + for (key in params) { + for (var i = 0; i < params[key].length; i += 1) { + value = params[key][i]; + // send to test options to native side + const message = { + action: 'adjustTLB_addToTestOptionsSet', + data: { key: key, value: value } + }; + + window.webkit.messageHandlers.adjustTest.postMessage(message); + } + } +}; + AdjustCommandExecutor.prototype.testOptions = function(params) { console.log('TestLibraryBridge testOptions'); console.log('params: ' + JSON.stringify(params)); @@ -200,7 +243,6 @@ AdjustCommandExecutor.prototype.config = function(params) { logLevel = AdjustConfig.LogLevelSuppress; break; } - adjustConfig.setLogLevel(logLevel); } @@ -213,107 +255,87 @@ AdjustCommandExecutor.prototype.config = function(params) { var defaultTracker = getFirstValue(params, 'defaultTracker'); adjustConfig.setDefaultTracker(defaultTracker); } - + if ('externalDeviceId' in params) { var externalDeviceId = getFirstValue(params, 'externalDeviceId'); adjustConfig.setExternalDeviceId(externalDeviceId); } - if ('appSecret' in params) { - var appSecretArray = getValues(params, 'appSecret'); - var secretId = appSecretArray[0].toString(); - var info1 = appSecretArray[1].toString(); - var info2 = appSecretArray[2].toString(); - var info3 = appSecretArray[3].toString(); - var info4 = appSecretArray[4].toString(); - adjustConfig.setAppSecret(secretId, info1, info2, info3, info4); - } - - if ('delayStart' in params) { - var delayStartS = getFirstValue(params, 'delayStart'); - var delayStart = parseFloat(delayStartS); - adjustConfig.setDelayStart(delayStart); - } - - if ('deviceKnown' in params) { - var deviceKnownS = getFirstValue(params, 'deviceKnown'); - var deviceKnown = deviceKnownS == 'true'; - adjustConfig.setIsDeviceKnown(deviceKnown); - } - if ('needsCost' in params) { - var needsCostS = getFirstValue(params, 'needsCost'); - var needsCost = needsCostS == 'true'; - adjustConfig.setNeedsCost(needsCost); + var isCostDataInAttributionEnabledS = getFirstValue(params, 'needsCost'); + var isCostDataInAttributionEnabled = isCostDataInAttributionEnabledS == 'true'; + if (isCostDataInAttributionEnabled == true) { + adjustConfig.enableCostDataInAttribution(); + } } - + if ('allowAdServicesInfoReading' in params) { - var allowAdServicesInfoReadingS = getFirstValue(params, 'allowAdServicesInfoReading'); - var allowAdServicesInfoReading = allowAdServicesInfoReadingS == 'true'; - adjustConfig.setAllowAdServicesInfoReading(allowAdServicesInfoReading); + var isAdServicesEnabledS = getFirstValue(params, 'allowAdServicesInfoReading'); + var isAdServicesEnabled = isAdServicesEnabledS == 'true'; + if (isAdServicesEnabled == false) { + adjustConfig.disableAdServices(); + } } - + if ('allowIdfaReading' in params) { var allowIdfaReadingS = getFirstValue(params, 'allowIdfaReading'); var allowIdfaReading = allowIdfaReadingS == 'true'; - adjustConfig.setAllowIdfaReading(allowIdfaReading); + if (allowIdfaReading == false) { + adjustConfig.disableIdfaReading(); + } } - + if ('allowSkAdNetworkHandling' in params) { var allowSkAdNetworkHandlingS = getFirstValue(params, 'allowSkAdNetworkHandling'); var allowSkAdNetworkHandling = allowSkAdNetworkHandlingS == 'true'; if (allowSkAdNetworkHandling == false) { - adjustConfig.deactivateSkAdNetworkHandling(); + adjustConfig.disableSkanAttributionHandling(); } } - if ('eventBufferingEnabled' in params) { - var eventBufferingEnabledS = getFirstValue(params, 'eventBufferingEnabled'); - var eventBufferingEnabled = eventBufferingEnabledS == 'true'; - adjustConfig.setEventBufferingEnabled(eventBufferingEnabled); - } - - if ('coppaCompliant' in params) { - var coppaCompliantEnabledS = getFirstValue(params, 'coppaCompliant'); - var coppaCompliantEnabled = coppaCompliantEnabledS == 'true'; - adjustConfig.setCoppaCompliantEnabled(coppaCompliantEnabled); - } - if ('sendInBackground' in params) { var sendInBackgroundS = getFirstValue(params, 'sendInBackground'); var sendInBackground = sendInBackgroundS == 'true'; adjustConfig.setSendInBackground(sendInBackground); } - if ('userAgent' in params) { - var userAgent = getFirstValue(params, 'userAgent'); - adjustConfig.setUserAgent(userAgent); - } - if ('attConsentWaitingSeconds' in params) { var attConsentWaitingSecondsS = getFirstValue(params, 'attConsentWaitingSeconds'); var attConsentWaitingSeconds = parseFloat(attConsentWaitingSecondsS); adjustConfig.setAttConsentWaitingInterval(attConsentWaitingSeconds); } + if ('eventDeduplicationIdsMaxSize' in params) { + var eventDeduplicationIdsMaxSizeS = getFirstValue(params, 'eventDeduplicationIdsMaxSize'); + var eventDeduplicationIdsMaxSize = parseFloat(eventDeduplicationIdsMaxSizeS); + adjustConfig.setEventDeduplicationIdsMaxSize(eventDeduplicationIdsMaxSize); + } + + if ('coppaCompliant' in params) { + var coppaCompliantS = getFirstValue(params, 'coppaCompliant'); + var coppaCompliant = coppaCompliantS == 'true'; + if (coppaCompliant == true) { + adjustConfig.enableCoppaCompliance(); + } + } + if ('attributionCallbackSendAll' in params) { console.log('AdjustCommandExecutor.prototype.config attributionCallbackSendAll'); var extraPath = this.extraPath; adjustConfig.setAttributionCallback( function(attribution) { console.log('attributionCallback: ' + JSON.stringify(attribution)); - addInfoToSend('trackerToken', attribution.trackerToken); - addInfoToSend('trackerName', attribution.trackerName); + addInfoToSend('tracker_token', attribution.trackerToken); + addInfoToSend('tracker_name', attribution.trackerName); addInfoToSend('network', attribution.network); addInfoToSend('campaign', attribution.campaign); addInfoToSend('adgroup', attribution.adgroup); addInfoToSend('creative', attribution.creative); - addInfoToSend('clickLabel', attribution.click_label); - addInfoToSend('adid', attribution.adid); - addInfoToSend('costType', attribution.costType); - addInfoToSend('costAmount', attribution.costAmount); - addInfoToSend('costCurrency', attribution.costCurrency); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + addInfoToSend('click_label', attribution.click_label); + addInfoToSend('cost_type', attribution.costType); + addInfoToSend('cost_amount', attribution.costAmount); + addInfoToSend('cost_currency', attribution.costCurrency); + sendInfoToServer(extraPath); } ); } @@ -328,7 +350,7 @@ AdjustCommandExecutor.prototype.config = function(params) { addInfoToSend('timestamp', sessionSuccessResponseData.timestamp); addInfoToSend('adid', sessionSuccessResponseData.adid); addInfoToSend('jsonResponse', sessionSuccessResponseData.jsonResponse); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + sendInfoToServer(extraPath); } ); } @@ -344,7 +366,7 @@ AdjustCommandExecutor.prototype.config = function(params) { addInfoToSend('adid', sessionFailureResponseData.adid); addInfoToSend('willRetry', sessionFailureResponseData.willRetry ? 'true' : 'false'); addInfoToSend('jsonResponse', sessionFailureResponseData.jsonResponse); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + sendInfoToServer(extraPath); } ); } @@ -361,7 +383,7 @@ AdjustCommandExecutor.prototype.config = function(params) { addInfoToSend('eventToken', eventSuccessResponseData.eventToken); addInfoToSend('callbackId', eventSuccessResponseData.callbackId); addInfoToSend('jsonResponse', eventSuccessResponseData.jsonResponse); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + sendInfoToServer(extraPath); } ); } @@ -379,33 +401,42 @@ AdjustCommandExecutor.prototype.config = function(params) { addInfoToSend('callbackId', eventFailureResponseData.callbackId); addInfoToSend('willRetry', eventFailureResponseData.willRetry ? 'true' : 'false'); addInfoToSend('jsonResponse', eventFailureResponseData.jsonResponse); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + sendInfoToServer(extraPath); } ); } if ('deferredDeeplinkCallback' in params) { console.log('AdjustCommandExecutor.prototype.config deferredDeeplinkCallback'); - var shouldOpenDeeplinkS = getFirstValue(params, 'deferredDeeplinkCallback'); - if (shouldOpenDeeplinkS === 'true') { - adjustConfig.setOpenDeferredDeeplink(true); - } - if (shouldOpenDeeplinkS === 'false') { - adjustConfig.setOpenDeferredDeeplink(false); + var isOpeningDeferredDeeplinkEnabledS = getFirstValue(params, 'deferredDeeplinkCallback'); + if (isOpeningDeferredDeeplinkEnabledS === 'false') { + adjustConfig.disableDeferredDeeplinkOpening(); } var extraPath = this.extraPath; adjustConfig.setDeferredDeeplinkCallback( function(deeplink) { console.log('deferredDeeplinkCallback: ' + JSON.stringify(deeplink)); addInfoToSend('deeplink', deeplink); - WebViewJavascriptBridge.callHandler('adjustTLB_sendInfoToServer', extraPath, null); + sendInfoToServer(extraPath); } ); } }; -var addInfoToSend = function(key, value) { - WebViewJavascriptBridge.callHandler('adjustTLB_addInfoToSend', {key: key, value: value}, null); +var addInfoToSend = function (key, value) { + const message = { + action: 'adjustTLB_addInfoToSend', + data: { key: key, value: value } + }; + window.webkit.messageHandlers.adjustTest.postMessage(message); +}; + +var sendInfoToServer = function (extraPath) { + const message = { + action: 'adjustTLB_sendInfoToServer', + data: extraPath + }; + window.webkit.messageHandlers.adjustTest.postMessage(message); }; AdjustCommandExecutor.prototype.start = function(params) { @@ -417,7 +448,7 @@ AdjustCommandExecutor.prototype.start = function(params) { } var adjustConfig = this.savedConfigs[configNumber]; - Adjust.appDidLaunch(adjustConfig); + Adjust.initSdk(adjustConfig); delete this.savedConfigs[0]; }; @@ -463,15 +494,15 @@ AdjustCommandExecutor.prototype.event = function(params) { } } - if ('orderId' in params) { - var orderId = getFirstValue(params, 'orderId'); - adjustEvent.setTransactionId(orderId); - } - if ('callbackId' in params) { var callbackId = getFirstValue(params, 'callbackId'); adjustEvent.setCallbackId(callbackId); } + + if ('deduplicationId' in params) { + var deduplicationId = getFirstValue(params, 'deduplicationId'); + adjustEvent.setDeduplicationId(deduplicationId); + } }; AdjustCommandExecutor.prototype.trackEvent = function(params) { @@ -498,90 +529,70 @@ AdjustCommandExecutor.prototype.resume = function(params) { AdjustCommandExecutor.prototype.setEnabled = function(params) { var enabled = getFirstValue(params, 'enabled') == 'true'; - Adjust.setEnabled(enabled); + if (enabled == true) { + Adjust.enable(); + } else { + Adjust.disable(); + } }; AdjustCommandExecutor.prototype.setOfflineMode = function(params) { var enabled = getFirstValue(params, 'enabled') == 'true'; - Adjust.setOfflineMode(enabled); -}; - -AdjustCommandExecutor.prototype.sendFirstPackages = function(params) { - Adjust.sendFirstPackages(); + if (enabled == true) { + Adjust.switchToOfflineMode(); + } else { + Adjust.switchBackToOnlineMode(); + } }; AdjustCommandExecutor.prototype.gdprForgetMe = function(params) { Adjust.gdprForgetMe(); }; -AdjustCommandExecutor.prototype.addSessionCallbackParameter = function(params) { +AdjustCommandExecutor.prototype.addGlobalCallbackParameter = function(params) { var list = getValues(params, 'KeyValue'); for (var i = 0; i < list.length; i = i+2){ var key = list[i]; var value = list[i+1]; - Adjust.addSessionCallbackParameter(key, value); + Adjust.addGlobalCallbackParameter(key, value); } }; -AdjustCommandExecutor.prototype.addSessionPartnerParameter = function(params) { +AdjustCommandExecutor.prototype.addGlobalPartnerParameter = function(params) { var list = getValues(params, 'KeyValue'); for (var i = 0; i < list.length; i = i+2){ var key = list[i]; var value = list[i+1]; - Adjust.addSessionPartnerParameter(key, value); + Adjust.addGlobalPartnerParameter(key, value); } }; -AdjustCommandExecutor.prototype.removeSessionCallbackParameter = function(params) { +AdjustCommandExecutor.prototype.removeGlobalCallbackParameter = function(params) { var list = getValues(params, 'key'); for (var i = 0; i < list.length; i++) { var key = list[i]; - Adjust.removeSessionCallbackParameter(key); + Adjust.removeGlobalCallbackParameter(key); } }; -AdjustCommandExecutor.prototype.removeSessionPartnerParameter = function(params) { +AdjustCommandExecutor.prototype.removeGlobalPartnerParameter = function(params) { var list = getValues(params, 'key'); for (var i = 0; i < list.length; i++) { var key = list[i]; - Adjust.removeSessionPartnerParameter(key); + Adjust.removeGlobalPartnerParameter(key); } }; -AdjustCommandExecutor.prototype.resetSessionCallbackParameters = function(params) { - Adjust.resetSessionCallbackParameters(); +AdjustCommandExecutor.prototype.removeGlobalCallbackParameters = function(params) { + Adjust.removeGlobalCallbackParameters(); }; -AdjustCommandExecutor.prototype.resetSessionPartnerParameters = function(params) { - Adjust.resetSessionPartnerParameters(); -}; - -AdjustCommandExecutor.prototype.setPushToken = function(params) { - var token = getFirstValue(params, 'pushToken'); - Adjust.setDeviceToken(token); -}; - -AdjustCommandExecutor.prototype.openDeeplink = function(params) { - var deeplink = getFirstValue(params, 'deeplink'); - Adjust.appWillOpenUrl(deeplink); -}; - -AdjustCommandExecutor.prototype.trackAdRevenue = function(params) { - var source = getFirstValue(params, 'adRevenueSource'); - var payload = getFirstValue(params, 'adRevenueJsonString'); - if (payload === null) { - Adjust.trackAdRevenue(source, ''); - } else { - Adjust.trackAdRevenue(source, payload); - } -}; - -AdjustCommandExecutor.prototype.disableThirdPartySharing = function(params) { - Adjust.disableThirdPartySharing(); +AdjustCommandExecutor.prototype.removeGlobalPartnerParameters = function(params) { + Adjust.removeGlobalPartnerParameters(); }; AdjustCommandExecutor.prototype.thirdPartySharing = function(params) { @@ -623,6 +634,23 @@ AdjustCommandExecutor.prototype.measurementConsent = function(params) { Adjust.trackMeasurementConsent(consentMeasurement); }; +AdjustCommandExecutor.prototype.attributionGetter = function(params) { + var extraPath = this.extraPath; + Adjust.getAttribution(function(attribution) { + addInfoToSend('tracker_token', attribution.trackerToken); + addInfoToSend('tracker_name', attribution.trackerName); + addInfoToSend('network', attribution.network); + addInfoToSend('campaign', attribution.campaign); + addInfoToSend('adgroup', attribution.adgroup); + addInfoToSend('creative', attribution.creative); + addInfoToSend('click_label', attribution.click_label); + addInfoToSend('cost_type', attribution.costType); + addInfoToSend('cost_amount', attribution.costAmount); + addInfoToSend('cost_currency', attribution.costCurrency); + sendInfoToServer(extraPath); + }); +} + // Util function getValues(params, key) { if (key in params) { @@ -645,3 +673,4 @@ function getFirstValue(params, key) { } module.exports = TestLibraryBridge; + diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.m b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.m index 4b004d810..91a377e00 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.m +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.m @@ -3,80 +3,110 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import "TestLibraryBridge.h" +#import -@interface TestLibraryBridge () +@interface TestLibraryBridge () -@property WVJBResponseCallback commandExecutorCallback; @property (nonatomic, strong) ATLTestLibrary *testLibrary; -@property (nonatomic, weak) AdjustBridgeRegister *adjustBridgeRegister; +@property (nonatomic, strong) WKWebView *webView; @end @implementation TestLibraryBridge -- (id)initWithAdjustBridgeRegister:(AdjustBridgeRegister *)adjustBridgeRegister { +- (id)initWithAdjustBridge:(AdjustBridge *)adjustBridge { self = [super init]; if (self == nil) { return nil; } - self.testLibrary = [ATLTestLibrary testLibraryWithBaseUrl:urlOverwrite andControlUrl:controlUrl andCommandDelegate:self]; + [self augmentedHybridTestWKWebView:adjustBridge.wkWebView]; + return self; +} + +#pragma mark - Test Webview Methods + +#pragma mark Set up Test Webview + +- (void)augmentedHybridTestWKWebView:(WKWebView *_Nonnull)wkWebView { + if ([wkWebView isKindOfClass:WKWebView.class]) { + self.webView = wkWebView; + WKUserContentController *controller = wkWebView.configuration.userContentController; + [controller addScriptMessageHandler:self name:@"adjustTest"]; + } +} + +#pragma mark Handle Message from Test Webview + +- (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message { + + if ([message.body isKindOfClass:[NSDictionary class]]) { + + NSString *action = [message.body objectForKey:@"action"]; + NSDictionary *data = [message.body objectForKey:@"data"]; + + if ([action isEqual:@"adjustTLB_startTestSession"]) { + [self startTestSession:(NSString *)data]; + + } else if ([action isEqual:@"adjustTLB_sendInfoToServer"]) { + [self sendInfoToServer:(NSString *)data]; + + } else if ([action isEqual:@"adjustTLB_addInfoToSend"]) { + NSString *key = [data objectForKey:@"key"]; + NSString *value = [data objectForKey:@"value"]; + [self addInfoToSend:key andValue:value]; + + } else if ([action isEqual:@"adjustTLB_addTest"]) { + [self addTest:(NSString *)data]; - [adjustBridgeRegister registerHandler:@"adjustTLB_startTestSession" handler:^(id data, WVJBResponseCallback responseCallback) { - NSLog(@"TestLibraryBridge adjustTLB_startTestSession"); - // self.commandExecutorCallback = responseCallback; - [self.adjustBridgeRegister callHandler:@"adjustjs_commandExecutor" data:@"test"]; - [self.testLibrary startTestSession:(NSString *)data]; - }]; - - [adjustBridgeRegister registerHandler:@"adjustTLB_addInfoToSend" handler:^(id data, WVJBResponseCallback responseCallback) { - NSLog(@"TestLibraryBridge adjustTLB_addInfoToSend"); - NSString *key = [data objectForKey:@"key"]; - NSString *value = [data objectForKey:@"value"]; - [self.testLibrary addInfoToSend:key value:value]; - }]; - - [adjustBridgeRegister registerHandler:@"adjustTLB_sendInfoToServer" handler:^(id data, WVJBResponseCallback responseCallback) { - NSLog(@"TestLibraryBridge adjustTLB_sendInfoToServer"); - if (![data isKindOfClass:[NSString class]]) { - NSLog(@"TestLibraryBridge adjustTLB_sendInfoToServer data not string %@", data); - return; + } else if ([action isEqual:@"adjustTLB_addTestDirectory"]) { + [self addTestDirectory:(NSString *)data]; + + } else if ([action isEqual:@"adjustTLB_addToTestOptionsSet"]) { + NSString *key = [data objectForKey:@"key"]; + NSString *value = [data objectForKey:@"value"]; + [self addToTestOptionsSet:key andValue:value]; } + } +} - NSString *extraPath = (NSString *)data; - [self.testLibrary sendInfoToServer:extraPath]; - }]; - - [adjustBridgeRegister registerHandler:@"adjustTLB_addTestDirectory" handler:^(id data, WVJBResponseCallback responseCallback) { - NSLog(@"TestLibraryBridge adjustTLB_addTestDirectory"); - NSString *directoryName = [data objectForKey:@"directoryName"]; - [self.testLibrary addTestDirectory:directoryName]; - }]; - - [adjustBridgeRegister registerHandler:@"adjustTLB_addTest" handler:^(id data, WVJBResponseCallback responseCallback) { - NSLog(@"TestLibraryBridge adjustTLB_addTest"); - NSString *testName = [data objectForKey:@"testName"]; - [self.testLibrary addTest:testName]; - }]; - - self.adjustBridgeRegister = adjustBridgeRegister; - NSLog(@"TestLibraryBridge initWithAdjustBridgeRegister"); - return self; +- (void)startTestSession:(NSString *)clientSdk { + [self.testLibrary startTestSession:clientSdk]; +} + +- (void)addTest:(NSString *)testName { + [self.testLibrary addTest:testName]; +} + +- (void)addTestDirectory:(NSString *)directoryName { + [self.testLibrary addTestDirectory:directoryName]; } +- (void)addInfoToSend:(NSString *)key andValue:(NSString *)value { + [self.testLibrary addInfoToSend:key value:value]; +} + +- (void)sendInfoToServer:(NSString *)extraPath { + [self.testLibrary sendInfoToServer:extraPath]; +} + +- (void)addToTestOptionsSet:(NSString *)key andValue:(NSString *)value { + [self.testLibrary addInfoToSend:key value:value]; +} + +#pragma mark - Test cases command handler + - (void)executeCommandRawJson:(NSString *)json { - NSLog(@"TestLibraryBridge executeCommandRawJson: %@", json); - if (self.commandExecutorCallback == nil) { - NSLog(@"TestLibraryBridge nil commandExecutorCallback"); - } - // self.commandExecutorCallback(json); - [self.adjustBridgeRegister callHandler:@"adjustJS_commandExecutor" data:json]; + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *javaScript = [NSString stringWithFormat:@"TestLibraryBridge.adjustCommandExecutor('%@')", json]; + [self.webView evaluateJavaScript:javaScript completionHandler:nil]; + }); } @end diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.h b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.h index 8b0dc3d09..98324bd93 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.h +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.h @@ -3,16 +3,15 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import #import -#import NS_ASSUME_NONNULL_BEGIN -@interface WKWebViewController : UINavigationController +@interface WKWebViewController : UINavigationController @end diff --git a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.m b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.m index efc0477a9..e1b8c692c 100644 --- a/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.m +++ b/AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/WKWebViewController.m @@ -3,15 +3,14 @@ // AdjustWebBridgeTestApp // // Created by Pedro Silva (@nonelse) on 6th August 2018. -// Copyright © 2018 Adjust GmbH. All rights reserved. +// Copyright © 2018-Present Adjust GmbH. All rights reserved. // #import "WKWebViewController.h" -#import - -#import "AdjustBridge.h" #import "TestLibraryBridge.h" +#import +#import @interface WKWebViewController () @@ -22,28 +21,37 @@ @interface WKWebViewController () @implementation WKWebViewController +#pragma mark - View Controller Life cycle Methods + +- (void)viewDidLoad { + [super viewDidLoad]; +} + - (void)viewWillAppear:(BOOL)animated { - WKWebView *webView = [[NSClassFromString(@"WKWebView") alloc] initWithFrame:self.view.bounds]; - webView.navigationDelegate = self; + + WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:webView]; - _adjustBridge = [[AdjustBridge alloc] init]; - [_adjustBridge loadWKWebViewBridge:webView wkWebViewDelegate:self]; + self.adjustBridge = [[AdjustBridge alloc] init]; + [self.adjustBridge loadWKWebViewBridge:webView]; - self.testLibraryBridge = [[TestLibraryBridge alloc] initWithAdjustBridgeRegister:[self.adjustBridge bridgeRegister]]; + if (@available(iOS 16.4, *)) { + [webView setInspectable:YES]; + } else { + // Fallback on earlier versions + } - NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"AdjustTestApp-WebView" ofType:@"html"]; - NSString *appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; - NSURL *baseURL = [NSURL fileURLWithPath:htmlPath]; - [webView loadHTMLString:appHtml baseURL:baseURL]; -} + self.testLibraryBridge = [[TestLibraryBridge alloc] + initWithAdjustBridge:self.adjustBridge]; -- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation { - NSLog(@"webViewDidStartLoad"); -} + NSString *htmlPath = [[NSBundle mainBundle] + pathForResource:@"AdjustTestApp-WebView" ofType:@"html"]; + NSString *appHtml = [NSString stringWithContentsOfFile:htmlPath + encoding:NSUTF8StringEncoding error:nil]; -- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { - NSLog(@"webViewDidFinishLoad"); + NSURL *baseURL = [NSURL fileURLWithPath:htmlPath]; + [webView loadHTMLString:appHtml baseURL:baseURL]; } @end + diff --git a/AdjustTests/PocketSocket/PocketSocket.xcodeproj/project.pbxproj b/AdjustTests/PocketSocket/PocketSocket.xcodeproj/project.pbxproj index 7dfb8be4f..5894e16f9 100644 --- a/AdjustTests/PocketSocket/PocketSocket.xcodeproj/project.pbxproj +++ b/AdjustTests/PocketSocket/PocketSocket.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -375,7 +375,8 @@ EEE5E30218B37DD500BAE47A /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Zwopple Limited"; TargetAttributes = { EE453D0E1CABF60300A2EA13 = { @@ -527,9 +528,11 @@ isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; DSTROOT = /tmp/PocketSocket.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "PocketSocket/PocketSocket-Prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "PocketSocket-Mac"; SDKROOT = macosx; @@ -542,9 +545,11 @@ isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; DSTROOT = /tmp/PocketSocket.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "PocketSocket/PocketSocket-Prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "PocketSocket-Mac"; SDKROOT = macosx; @@ -566,8 +571,12 @@ GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PSAutobahnServerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = com.zwopple.PSAutobahnServerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -589,8 +598,12 @@ GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = PSAutobahnServerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = com.zwopple.PSAutobahnServerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -629,8 +642,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; 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; @@ -646,7 +661,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MACOSX_DEPLOYMENT_TARGET = 10.8; ONLY_ACTIVE_ARCH = YES; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos appletvsimulator"; @@ -684,8 +699,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; + DEAD_CODE_STRIPPING = YES; 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; @@ -694,7 +711,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MACOSX_DEPLOYMENT_TARGET = 10.8; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvos appletvsimulator"; VALIDATE_PRODUCT = YES; @@ -704,9 +721,11 @@ EEE5E32E18B37DD600BAE47A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; DSTROOT = /tmp/PocketSocket.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "PocketSocket/PocketSocket-Prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -716,9 +735,11 @@ EEE5E32F18B37DD600BAE47A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; DSTROOT = /tmp/PocketSocket.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "PocketSocket/PocketSocket-Prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -728,6 +749,7 @@ EEE5E37018B37F8700BAE47A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(DEVELOPER_FRAMEWORKS_DIR)", @@ -743,6 +765,7 @@ "$(inherited)", "$(SDKROOT)/usr/lib/system", ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "com.zwopple.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; @@ -752,6 +775,7 @@ EEE5E37118B37F8700BAE47A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + DEAD_CODE_STRIPPING = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(DEVELOPER_FRAMEWORKS_DIR)", @@ -763,6 +787,7 @@ "$(inherited)", "$(SDKROOT)/usr/lib/system", ); + MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "com.zwopple.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = xctest; diff --git a/AdjustTests/PocketSocket/PocketSocket.xcodeproj/xcshareddata/xcschemes/PocketSocket-Mac.xcscheme b/AdjustTests/PocketSocket/PocketSocket.xcodeproj/xcshareddata/xcschemes/PocketSocket-Mac.xcscheme index fc5df6c7e..5fe134c62 100644 --- a/AdjustTests/PocketSocket/PocketSocket.xcodeproj/xcshareddata/xcschemes/PocketSocket-Mac.xcscheme +++ b/AdjustTests/PocketSocket/PocketSocket.xcodeproj/xcshareddata/xcschemes/PocketSocket-Mac.xcscheme @@ -1,6 +1,6 @@ @@ -14,12 +14,13 @@ #import #import #import -#import +#import #import #import #import #import #import #import -#import +#import #import +#import diff --git a/AdjustSdk/AdjustSdk.h b/UmbrellaHeaders/webbridge/AdjustSdk.h similarity index 52% rename from AdjustSdk/AdjustSdk.h rename to UmbrellaHeaders/webbridge/AdjustSdk.h index dbd6162d1..35010a24d 100644 --- a/AdjustSdk/AdjustSdk.h +++ b/UmbrellaHeaders/webbridge/AdjustSdk.h @@ -2,32 +2,30 @@ // AdjustSdk.h // AdjustSdk // -// Created by Uglješa Erceg on 02/12/15. -// Copyright © 2015 adjust GmbH. All rights reserved. +// Created by Genady Buchatsky on 14.03.22. +// Copyright © 2022 Adjust GmbH. All rights reserved. // #import -//! Project version number for AdjustSdk. -FOUNDATION_EXPORT double AdjustSdkVersionNumber; - -//! Project version string for AdjustSdk. -FOUNDATION_EXPORT const unsigned char AdjustSdkVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - #import #import #import #import #import #import -#import +#import #import #import #import #import #import #import -#import +#import #import +#import + +#import +#import +#import +#import diff --git a/VERSION b/VERSION index 608c5ec8d..0062ac971 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.38.4 +5.0.0 diff --git a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj/project.pbxproj b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj/project.pbxproj index 3a1b17440..8dd267cf6 100644 --- a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj/project.pbxproj @@ -3,16 +3,14 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ 07AF832327BD3CBF00C5DD9E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 07AF832227BD3CBF00C5DD9E /* Main.storyboard */; }; - 0A4FE7AA2AD6A11C0085338A /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7A62AD6A11C0085338A /* ADJPurchaseVerificationHandler.m */; }; - 0A4FE7AB2AD6A11C0085338A /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7A82AD6A11C0085338A /* ADJPurchaseVerificationResult.m */; }; - 0A4FE7AC2AD6A11C0085338A /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7A92AD6A11C0085338A /* ADJPurchase.m */; }; - 6FAB78C12636DDC400773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78BF2636DDC400773869 /* ADJLinkResolution.m */; }; - 9D49D17A290FEC2E00042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D179290FEC2E00042345 /* ADJSKAdNetwork.m */; }; + 0A584DB62C3EA9070071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DB42C3EA9070071A651 /* AdjustSigSdk.xcframework */; }; + 0A584DB72C3EA9070071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DB42C3EA9070071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584DB82C3EA9070071A651 /* libAdjustBridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DB52C3EA9070071A651 /* libAdjustBridge.a */; }; 9D9D1533212EB3920081445E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9D1532212EB3920081445E /* AppDelegate.m */; }; 9D9D153B212EB3940081445E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D9D153A212EB3940081445E /* Assets.xcassets */; }; 9D9D153E212EB3940081445E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D9D153C212EB3940081445E /* LaunchScreen.storyboard */; }; @@ -21,59 +19,26 @@ 9D9D1565212EB4130081445E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D9D1564212EB4130081445E /* WebKit.framework */; }; 9D9D15E3212EB47C0081445E /* AdjustExample-FbPixel.html in Resources */ = {isa = PBXBuildFile; fileRef = 9D9D15E2212EB47C0081445E /* AdjustExample-FbPixel.html */; }; 9D9D15E9212EB5230081445E /* WKWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9D15E6212EB5230081445E /* WKWebViewController.m */; }; - 9DF92F042630F377000FC3FC /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EB22630F377000FC3FC /* ADJAdRevenue.m */; }; - 9DF92F052630F377000FC3FC /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EB32630F377000FC3FC /* ADJTimerOnce.m */; }; - 9DF92F062630F377000FC3FC /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EB42630F377000FC3FC /* ADJAttributionHandler.m */; }; - 9DF92F072630F377000FC3FC /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EB72630F377000FC3FC /* ADJRequestHandler.m */; }; - 9DF92F082630F377000FC3FC /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EBA2630F377000FC3FC /* ADJSdkClickHandler.m */; }; - 9DF92F092630F377000FC3FC /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EBC2630F377000FC3FC /* ADJEvent.m */; }; - 9DF92F0A2630F377000FC3FC /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EC12630F377000FC3FC /* ADJSessionSuccess.m */; }; - 9DF92F0B2630F377000FC3FC /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EC22630F377000FC3FC /* ADJEventFailure.m */; }; - 9DF92F0C2630F377000FC3FC /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED02630F377000FC3FC /* ADJEventSuccess.m */; }; - 9DF92F0D2630F377000FC3FC /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED12630F377000FC3FC /* ADJActivityState.m */; }; - 9DF92F0E2630F377000FC3FC /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED32630F377000FC3FC /* ADJSessionFailure.m */; }; - 9DF92F0F2630F377000FC3FC /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED72630F377000FC3FC /* ADJTimerCycle.m */; }; - 9DF92F102630F377000FC3FC /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED82630F377000FC3FC /* ADJSessionParameters.m */; }; - 9DF92F112630F377000FC3FC /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92ED92630F377000FC3FC /* ADJLogger.m */; }; - 9DF92F122630F377000FC3FC /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EDA2630F377000FC3FC /* ADJBackoffStrategy.m */; }; - 9DF92F132630F377000FC3FC /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EDC2630F377000FC3FC /* Adjust.m */; }; - 9DF92F142630F377000FC3FC /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE02630F377000FC3FC /* ADJConfig.m */; }; - 9DF92F152630F377000FC3FC /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE12630F377000FC3FC /* ADJPackageHandler.m */; }; - 9DF92F162630F377000FC3FC /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE42630F377000FC3FC /* ADJActivityKind.m */; }; - 9DF92F172630F377000FC3FC /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE72630F377000FC3FC /* NSString+ADJAdditions.m */; }; - 9DF92F182630F377000FC3FC /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE82630F377000FC3FC /* NSData+ADJAdditions.m */; }; - 9DF92F192630F377000FC3FC /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EE92630F377000FC3FC /* NSNumber+ADJAdditions.m */; }; - 9DF92F1A2630F377000FC3FC /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EEC2630F377000FC3FC /* ADJAttribution.m */; }; - 9DF92F1B2630F377000FC3FC /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EED2630F377000FC3FC /* ADJThirdPartySharing.m */; }; - 9DF92F1C2630F377000FC3FC /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EEF2630F377000FC3FC /* ADJActivityPackage.m */; }; - 9DF92F1D2630F377000FC3FC /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EF02630F377000FC3FC /* ADJUtil.m */; }; - 9DF92F1E2630F377000FC3FC /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EF12630F377000FC3FC /* ADJUrlStrategy.m */; }; - 9DF92F1F2630F377000FC3FC /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EF42630F377000FC3FC /* ADJAdjustFactory.m */; }; - 9DF92F202630F377000FC3FC /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EF82630F377000FC3FC /* ADJResponseData.m */; }; - 9DF92F212630F377000FC3FC /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EFA2630F377000FC3FC /* ADJPackageBuilder.m */; }; - 9DF92F222630F377000FC3FC /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EFB2630F377000FC3FC /* ADJSubscription.m */; }; - 9DF92F232630F377000FC3FC /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92EFC2630F377000FC3FC /* ADJUserDefaults.m */; }; - 9DF92F252630F377000FC3FC /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F022630F377000FC3FC /* ADJActivityHandler.m */; }; - 9DF92F262630F377000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F032630F377000FC3FC /* ADJPackageParams.m */; }; - 9DF92F8B2630F3A1000FC3FC /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F282630F3A0000FC3FC /* AdjustBridge.m */; }; - 9DF92FAF2630F3A1000FC3FC /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F7E2630F3A1000FC3FC /* WebViewJavascriptBridgeBase.m */; }; - 9DF92FB02630F3A1000FC3FC /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F7F2630F3A1000FC3FC /* WKWebViewJavascriptBridge.m */; }; - 9DF92FB12630F3A1000FC3FC /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F822630F3A1000FC3FC /* WebViewJavascriptBridge_JS.m */; }; - 9DF92FB22630F3A1000FC3FC /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92F8A2630F3A1000FC3FC /* AdjustBridgeRegister.m */; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584DB92C3EA9070071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584DB72C3EA9070071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 07AF832227BD3CBF00C5DD9E /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; - 0A4FE7A42AD6A11C0085338A /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0A4FE7A52AD6A11C0085338A /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0A4FE7A62AD6A11C0085338A /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0A4FE7A72AD6A11C0085338A /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0A4FE7A82AD6A11C0085338A /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0A4FE7A92AD6A11C0085338A /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 6FAB78BF2636DDC400773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78C02636DDC400773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 9D49D178290FEC2E00042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D179290FEC2E00042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; + 0A584DB42C3EA9070071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584DB52C3EA9070071A651 /* libAdjustBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjustBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9D9D152E212EB3920081445E /* AdjustExample-FbPixel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-FbPixel.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9D9D1531212EB3920081445E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 9D9D1532212EB3920081445E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -87,85 +52,6 @@ 9D9D15E2212EB47C0081445E /* AdjustExample-FbPixel.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "AdjustExample-FbPixel.html"; sourceTree = ""; }; 9D9D15E6212EB5230081445E /* WKWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewController.m; sourceTree = ""; }; 9D9D15E7212EB5230081445E /* WKWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewController.h; sourceTree = ""; }; - 9DF92EB12630F377000FC3FC /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9DF92EB22630F377000FC3FC /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9DF92EB32630F377000FC3FC /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9DF92EB42630F377000FC3FC /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9DF92EB52630F377000FC3FC /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9DF92EB62630F377000FC3FC /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9DF92EB72630F377000FC3FC /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9DF92EB82630F377000FC3FC /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 9DF92EB92630F377000FC3FC /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9DF92EBA2630F377000FC3FC /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9DF92EBB2630F377000FC3FC /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9DF92EBC2630F377000FC3FC /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9DF92EBD2630F377000FC3FC /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9DF92EBE2630F377000FC3FC /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9DF92EBF2630F377000FC3FC /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9DF92EC02630F377000FC3FC /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9DF92EC12630F377000FC3FC /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9DF92EC22630F377000FC3FC /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9DF92EC32630F377000FC3FC /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9DF92ED02630F377000FC3FC /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9DF92ED12630F377000FC3FC /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9DF92ED22630F377000FC3FC /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 9DF92ED32630F377000FC3FC /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9DF92ED42630F377000FC3FC /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9DF92ED52630F377000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92ED62630F377000FC3FC /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9DF92ED72630F377000FC3FC /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9DF92ED82630F377000FC3FC /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9DF92ED92630F377000FC3FC /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9DF92EDA2630F377000FC3FC /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9DF92EDB2630F377000FC3FC /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9DF92EDC2630F377000FC3FC /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9DF92EDD2630F377000FC3FC /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9DF92EDE2630F377000FC3FC /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9DF92EDF2630F377000FC3FC /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9DF92EE02630F377000FC3FC /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9DF92EE12630F377000FC3FC /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9DF92EE22630F377000FC3FC /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9DF92EE32630F377000FC3FC /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9DF92EE42630F377000FC3FC /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9DF92EE62630F377000FC3FC /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF92EE72630F377000FC3FC /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9DF92EE82630F377000FC3FC /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9DF92EE92630F377000FC3FC /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF92EEA2630F377000FC3FC /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9DF92EEB2630F377000FC3FC /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9DF92EEC2630F377000FC3FC /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9DF92EED2630F377000FC3FC /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 9DF92EEE2630F377000FC3FC /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9DF92EEF2630F377000FC3FC /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9DF92EF02630F377000FC3FC /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9DF92EF12630F377000FC3FC /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 9DF92EF22630F377000FC3FC /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9DF92EF32630F377000FC3FC /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9DF92EF42630F377000FC3FC /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9DF92EF52630F377000FC3FC /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9DF92EF62630F377000FC3FC /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9DF92EF82630F377000FC3FC /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9DF92EF92630F377000FC3FC /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9DF92EFA2630F377000FC3FC /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9DF92EFB2630F377000FC3FC /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9DF92EFC2630F377000FC3FC /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DF92EFD2630F377000FC3FC /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9DF92EFE2630F377000FC3FC /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9DF92EFF2630F377000FC3FC /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9DF92F002630F377000FC3FC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DF92F012630F377000FC3FC /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9DF92F022630F377000FC3FC /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9DF92F032630F377000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92F282630F3A0000FC3FC /* AdjustBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridge.m; sourceTree = ""; }; - 9DF92F7C2630F3A1000FC3FC /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; - 9DF92F7E2630F3A1000FC3FC /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = ""; }; - 9DF92F7F2630F3A1000FC3FC /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = ""; }; - 9DF92F802630F3A1000FC3FC /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = ""; }; - 9DF92F812630F3A1000FC3FC /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = ""; }; - 9DF92F822630F3A1000FC3FC /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = ""; }; - 9DF92F832630F3A1000FC3FC /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = ""; }; - 9DF92F892630F3A1000FC3FC /* AdjustBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridge.h; sourceTree = ""; }; - 9DF92F8A2630F3A1000FC3FC /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -174,7 +60,9 @@ buildActionMask = 2147483647; files = ( 9D9D1563212EB40D0081445E /* AdSupport.framework in Frameworks */, + 0A584DB62C3EA9070071A651 /* AdjustSigSdk.xcframework in Frameworks */, 9D9D1565212EB4130081445E /* WebKit.framework in Frameworks */, + 0A584DB82C3EA9070071A651 /* libAdjustBridge.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -211,8 +99,6 @@ 9D9D153F212EB3940081445E /* Info.plist */, 9D9D1540212EB3940081445E /* main.m */, 9D9D15E2212EB47C0081445E /* AdjustExample-FbPixel.html */, - 9DF92EB02630F377000FC3FC /* Adjust */, - 9DF92F272630F3A0000FC3FC /* AdjustBridge */, ); path = "AdjustExample-FbPixel"; sourceTree = ""; @@ -220,6 +106,8 @@ 9D9D155F212EB4080081445E /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584DB42C3EA9070071A651 /* AdjustSigSdk.xcframework */, + 0A584DB52C3EA9070071A651 /* libAdjustBridge.a */, 9D9D1564212EB4130081445E /* WebKit.framework */, 9D9D1562212EB40D0081445E /* AdSupport.framework */, 9D9D1560212EB4080081445E /* iAd.framework */, @@ -227,127 +115,6 @@ name = Frameworks; sourceTree = ""; }; - 9DF92EB02630F377000FC3FC /* Adjust */ = { - isa = PBXGroup; - children = ( - 9DF92EB12630F377000FC3FC /* ADJConfig.h */, - 9DF92EB22630F377000FC3FC /* ADJAdRevenue.m */, - 9DF92EB32630F377000FC3FC /* ADJTimerOnce.m */, - 9DF92EB42630F377000FC3FC /* ADJAttributionHandler.m */, - 9DF92EB52630F377000FC3FC /* Adjust.h */, - 9DF92EB62630F377000FC3FC /* ADJActivityPackage.h */, - 9DF92EB72630F377000FC3FC /* ADJRequestHandler.m */, - 9DF92EB82630F377000FC3FC /* ADJThirdPartySharing.h */, - 9DF92EB92630F377000FC3FC /* ADJAttribution.h */, - 9DF92EBA2630F377000FC3FC /* ADJSdkClickHandler.m */, - 9DF92EBB2630F377000FC3FC /* ADJActivityKind.h */, - 9DF92EBC2630F377000FC3FC /* ADJEvent.m */, - 9DF92EBD2630F377000FC3FC /* ADJPackageHandler.h */, - 9DF92EBE2630F377000FC3FC /* ADJSubscription.h */, - 9DF92EBF2630F377000FC3FC /* ADJPackageBuilder.h */, - 9DF92EC02630F377000FC3FC /* ADJResponseData.h */, - 9DF92EC12630F377000FC3FC /* ADJSessionSuccess.m */, - 9DF92EC22630F377000FC3FC /* ADJEventFailure.m */, - 9DF92EC32630F377000FC3FC /* ADJAdjustFactory.h */, - 9DF92ED02630F377000FC3FC /* ADJEventSuccess.m */, - 9DF92ED12630F377000FC3FC /* ADJActivityState.m */, - 9DF92ED22630F377000FC3FC /* ADJUrlStrategy.h */, - 9DF92ED32630F377000FC3FC /* ADJSessionFailure.m */, - 9DF92ED42630F377000FC3FC /* ADJUtil.h */, - 9DF92ED52630F377000FC3FC /* ADJPackageParams.h */, - 9DF92ED62630F377000FC3FC /* ADJActivityHandler.h */, - 9DF92ED72630F377000FC3FC /* ADJTimerCycle.m */, - 9DF92ED82630F377000FC3FC /* ADJSessionParameters.m */, - 9DF92ED92630F377000FC3FC /* ADJLogger.m */, - 9DF92EDA2630F377000FC3FC /* ADJBackoffStrategy.m */, - 9DF92EDB2630F377000FC3FC /* ADJUserDefaults.h */, - 9DF92EDC2630F377000FC3FC /* Adjust.m */, - 9DF92EDD2630F377000FC3FC /* ADJAttributionHandler.h */, - 9DF92EDE2630F377000FC3FC /* ADJTimerOnce.h */, - 9DF92EDF2630F377000FC3FC /* ADJAdRevenue.h */, - 9DF92EE02630F377000FC3FC /* ADJConfig.m */, - 9DF92EE12630F377000FC3FC /* ADJPackageHandler.m */, - 9DF92EE22630F377000FC3FC /* ADJEvent.h */, - 9DF92EE32630F377000FC3FC /* ADJSdkClickHandler.h */, - 9DF92EE42630F377000FC3FC /* ADJActivityKind.m */, - 9DF92EE52630F377000FC3FC /* ADJAdditions */, - 9DF92EEC2630F377000FC3FC /* ADJAttribution.m */, - 9DF92EED2630F377000FC3FC /* ADJThirdPartySharing.m */, - 9DF92EEE2630F377000FC3FC /* ADJRequestHandler.h */, - 9DF92EEF2630F377000FC3FC /* ADJActivityPackage.m */, - 9DF92EF02630F377000FC3FC /* ADJUtil.m */, - 9DF92EF12630F377000FC3FC /* ADJUrlStrategy.m */, - 9DF92EF22630F377000FC3FC /* ADJSessionFailure.h */, - 9DF92EF32630F377000FC3FC /* ADJActivityState.h */, - 9DF92EF42630F377000FC3FC /* ADJAdjustFactory.m */, - 9DF92EF52630F377000FC3FC /* ADJEventSuccess.h */, - 9DF92EF62630F377000FC3FC /* ADJEventFailure.h */, - 9DF92EF82630F377000FC3FC /* ADJResponseData.m */, - 9DF92EF92630F377000FC3FC /* ADJSessionSuccess.h */, - 9DF92EFA2630F377000FC3FC /* ADJPackageBuilder.m */, - 9DF92EFB2630F377000FC3FC /* ADJSubscription.m */, - 9DF92EFC2630F377000FC3FC /* ADJUserDefaults.m */, - 9DF92EFD2630F377000FC3FC /* ADJBackoffStrategy.h */, - 9DF92EFE2630F377000FC3FC /* ADJLogger.h */, - 9DF92EFF2630F377000FC3FC /* ADJSessionParameters.h */, - 9DF92F002630F377000FC3FC /* Info.plist */, - 9DF92F012630F377000FC3FC /* ADJTimerCycle.h */, - 9DF92F022630F377000FC3FC /* ADJActivityHandler.m */, - 9DF92F032630F377000FC3FC /* ADJPackageParams.m */, - 6FAB78C02636DDC400773869 /* ADJLinkResolution.h */, - 6FAB78BF2636DDC400773869 /* ADJLinkResolution.m */, - 9D49D178290FEC2E00042345 /* ADJSKAdNetwork.h */, - 9D49D179290FEC2E00042345 /* ADJSKAdNetwork.m */, - 0A4FE7A52AD6A11C0085338A /* ADJPurchase.h */, - 0A4FE7A92AD6A11C0085338A /* ADJPurchase.m */, - 0A4FE7A42AD6A11C0085338A /* ADJPurchaseVerificationHandler.h */, - 0A4FE7A62AD6A11C0085338A /* ADJPurchaseVerificationHandler.m */, - 0A4FE7A72AD6A11C0085338A /* ADJPurchaseVerificationResult.h */, - 0A4FE7A82AD6A11C0085338A /* ADJPurchaseVerificationResult.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 9DF92EE52630F377000FC3FC /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF92EE62630F377000FC3FC /* NSNumber+ADJAdditions.h */, - 9DF92EE72630F377000FC3FC /* NSString+ADJAdditions.m */, - 9DF92EE82630F377000FC3FC /* NSData+ADJAdditions.m */, - 9DF92EE92630F377000FC3FC /* NSNumber+ADJAdditions.m */, - 9DF92EEA2630F377000FC3FC /* NSData+ADJAdditions.h */, - 9DF92EEB2630F377000FC3FC /* NSString+ADJAdditions.h */, - ); - path = ADJAdditions; - sourceTree = ""; - }; - 9DF92F272630F3A0000FC3FC /* AdjustBridge */ = { - isa = PBXGroup; - children = ( - 9DF92F892630F3A1000FC3FC /* AdjustBridge.h */, - 9DF92F282630F3A0000FC3FC /* AdjustBridge.m */, - 9DF92F7C2630F3A1000FC3FC /* AdjustBridgeRegister.h */, - 9DF92F8A2630F3A1000FC3FC /* AdjustBridgeRegister.m */, - 9DF92F7D2630F3A1000FC3FC /* WebViewJavascriptBridge */, - ); - name = AdjustBridge; - path = ../../../AdjustBridge; - sourceTree = ""; - }; - 9DF92F7D2630F3A1000FC3FC /* WebViewJavascriptBridge */ = { - isa = PBXGroup; - children = ( - 9DF92F7E2630F3A1000FC3FC /* WebViewJavascriptBridgeBase.m */, - 9DF92F7F2630F3A1000FC3FC /* WKWebViewJavascriptBridge.m */, - 9DF92F802630F3A1000FC3FC /* WebViewJavascriptBridge_JS.h */, - 9DF92F812630F3A1000FC3FC /* WebViewJavascriptBridgeBase.h */, - 9DF92F822630F3A1000FC3FC /* WebViewJavascriptBridge_JS.m */, - 9DF92F832630F3A1000FC3FC /* WKWebViewJavascriptBridge.h */, - ); - path = WebViewJavascriptBridge; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -358,6 +125,7 @@ 9D9D152A212EB3920081445E /* Sources */, 9D9D152B212EB3920081445E /* Frameworks */, 9D9D152C212EB3920081445E /* Resources */, + 0A584DB92C3EA9070071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -374,7 +142,8 @@ 9D9D1526212EB3920081445E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 9D9D152D212EB3920081445E = { @@ -419,56 +188,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DF92FAF2630F3A1000FC3FC /* WebViewJavascriptBridgeBase.m in Sources */, 9D9D15E9212EB5230081445E /* WKWebViewController.m in Sources */, - 9DF92F1F2630F377000FC3FC /* ADJAdjustFactory.m in Sources */, - 9DF92F0B2630F377000FC3FC /* ADJEventFailure.m in Sources */, - 9DF92F152630F377000FC3FC /* ADJPackageHandler.m in Sources */, - 9DF92F202630F377000FC3FC /* ADJResponseData.m in Sources */, - 9DF92F1C2630F377000FC3FC /* ADJActivityPackage.m in Sources */, - 9DF92F0C2630F377000FC3FC /* ADJEventSuccess.m in Sources */, - 0A4FE7AB2AD6A11C0085338A /* ADJPurchaseVerificationResult.m in Sources */, - 9DF92FB02630F3A1000FC3FC /* WKWebViewJavascriptBridge.m in Sources */, - 0A4FE7AA2AD6A11C0085338A /* ADJPurchaseVerificationHandler.m in Sources */, - 9DF92F232630F377000FC3FC /* ADJUserDefaults.m in Sources */, - 9DF92F182630F377000FC3FC /* NSData+ADJAdditions.m in Sources */, - 9DF92F212630F377000FC3FC /* ADJPackageBuilder.m in Sources */, - 9DF92F132630F377000FC3FC /* Adjust.m in Sources */, - 9DF92F172630F377000FC3FC /* NSString+ADJAdditions.m in Sources */, - 9DF92F052630F377000FC3FC /* ADJTimerOnce.m in Sources */, - 0A4FE7AC2AD6A11C0085338A /* ADJPurchase.m in Sources */, - 9DF92F072630F377000FC3FC /* ADJRequestHandler.m in Sources */, - 9DF92F122630F377000FC3FC /* ADJBackoffStrategy.m in Sources */, - 9DF92F222630F377000FC3FC /* ADJSubscription.m in Sources */, - 9DF92F112630F377000FC3FC /* ADJLogger.m in Sources */, - 9DF92FB22630F3A1000FC3FC /* AdjustBridgeRegister.m in Sources */, - 9DF92F192630F377000FC3FC /* NSNumber+ADJAdditions.m in Sources */, - 9DF92F262630F377000FC3FC /* ADJPackageParams.m in Sources */, 9D9D1541212EB3940081445E /* main.m in Sources */, - 9DF92F082630F377000FC3FC /* ADJSdkClickHandler.m in Sources */, - 9DF92F8B2630F3A1000FC3FC /* AdjustBridge.m in Sources */, 9D9D1533212EB3920081445E /* AppDelegate.m in Sources */, - 9DF92F252630F377000FC3FC /* ADJActivityHandler.m in Sources */, - 9DF92F1D2630F377000FC3FC /* ADJUtil.m in Sources */, - 9DF92F102630F377000FC3FC /* ADJSessionParameters.m in Sources */, - 9DF92F062630F377000FC3FC /* ADJAttributionHandler.m in Sources */, - 9DF92F1A2630F377000FC3FC /* ADJAttribution.m in Sources */, - 9D49D17A290FEC2E00042345 /* ADJSKAdNetwork.m in Sources */, - 9DF92F0F2630F377000FC3FC /* ADJTimerCycle.m in Sources */, - 9DF92FB12630F3A1000FC3FC /* WebViewJavascriptBridge_JS.m in Sources */, - 9DF92F0E2630F377000FC3FC /* ADJSessionFailure.m in Sources */, - 07C8C7F22B8F447B006979A1 /* ADJPurchaseVerificationResult.m in Sources */, - 9DF92F1E2630F377000FC3FC /* ADJUrlStrategy.m in Sources */, - 6FAB78C12636DDC400773869 /* ADJLinkResolution.m in Sources */, - 9DF92F1B2630F377000FC3FC /* ADJThirdPartySharing.m in Sources */, - 07C8C7F42B8F447B006979A1 /* ADJPurchaseVerificationHandler.m in Sources */, - 9DF92F162630F377000FC3FC /* ADJActivityKind.m in Sources */, - 9DF92F092630F377000FC3FC /* ADJEvent.m in Sources */, - 9DF92F0D2630F377000FC3FC /* ADJActivityState.m in Sources */, - 9DF92F0A2630F377000FC3FC /* ADJSessionSuccess.m in Sources */, - 9DF92F042630F377000FC3FC /* ADJAdRevenue.m in Sources */, - 07C8C7F32B8F447B006979A1 /* ADJPurchase.m in Sources */, - 9DF92F142630F377000FC3FC /* ADJConfig.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -524,6 +246,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -538,7 +261,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -583,6 +306,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 = gnu11; GCC_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -592,7 +316,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -606,7 +330,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = "AdjustExample-FbPixel/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -624,7 +348,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = "AdjustExample-FbPixel/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AdjustExample-FbPixel.html b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AdjustExample-FbPixel.html index 6334dbb03..3ad910b7d 100644 --- a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AdjustExample-FbPixel.html +++ b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AdjustExample-FbPixel.html @@ -1,185 +1,116 @@ - + +
-
- - - -

Adjust Web View Demo

- + + +

Webview



+
+
+
+
+
+
+
+
+
+
+ +

+ -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
- + + + + + + diff --git a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AppDelegate.m b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AppDelegate.m index 2bf44baf0..47802b4b5 100644 --- a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AppDelegate.m +++ b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/AppDelegate.m @@ -6,9 +6,9 @@ // Copyright © 2018-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" #import "AppDelegate.h" #import "WKWebViewController.h" +#import @interface AppDelegate () @@ -29,13 +29,13 @@ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDiction // url object contains the deep link // Call the below method to send deep link to Adjust backend - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; return YES; } - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> *restorableObjects))restorationHandler { if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { - [Adjust appWillOpenUrl:[userActivity webpageURL]]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]]; } return YES; } diff --git a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.h b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.h index d0641caef..60920d31f 100644 --- a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.h +++ b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.h @@ -7,14 +7,7 @@ // #import -#import -#import - -#import "AdjustBridge.h" @interface WKWebViewController : UIViewController -@property AdjustBridge *adjustBridge; -@property JSContext *jsContext; - @end diff --git a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.m b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.m index 4b5dedd89..6388e56cf 100644 --- a/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.m +++ b/examples/AdjustExample-FbPixel/AdjustExample-FbPixel/WKWebViewController.m @@ -7,8 +7,12 @@ // #import "WKWebViewController.h" +#import +#import -@interface WKWebViewController () +@interface WKWebViewController () + +@property AdjustBridge *adjustBridge; @end @@ -29,15 +33,36 @@ - (void)didReceiveMemoryWarning { - (void)loadWKWebView { WKWebView *wkWebView = [[WKWebView alloc] initWithFrame:self.view.frame]; + wkWebView.UIDelegate = self; _adjustBridge = [[AdjustBridge alloc] init]; - [_adjustBridge loadWKWebViewBridge:wkWebView wkWebViewDelegate:self]; [_adjustBridge augmentHybridWebView]; - - NSString *path = [[NSBundle mainBundle] pathForResource:@"AdjustExample-FbPixel" ofType:@"html"]; + [_adjustBridge loadWKWebViewBridge:wkWebView]; + + if (@available(iOS 16.4, *)) { + [wkWebView setInspectable:YES]; + } else { + // Fallback on earlier versions + } + + NSString *path = [[NSBundle mainBundle] + pathForResource:@"AdjustExample-FbPixel" ofType:@"html"]; NSURL *url = [NSURL fileURLWithPath:path]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [wkWebView loadRequest:request]; [self.view addSubview:wkWebView]; } +- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message + initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler { + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message + message:nil + preferredStyle:UIAlertControllerStyleAlert]; + [alertController addAction:[UIAlertAction actionWithTitle:@"OK" + style:UIAlertActionStyleCancel + handler:^(UIAlertAction *action) { + completionHandler(); + }]]; + [self presentViewController:alertController animated:YES completion:^{}]; +} + @end diff --git a/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/project.pbxproj b/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/project.pbxproj index efa2deed0..852c2d1fa 100644 --- a/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/project.pbxproj @@ -3,69 +3,46 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 6F84513525B1B1850004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84513425B1B1840004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB78A72636DD4000773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78A52636DD4000773869 /* ADJLinkResolution.m */; }; - 6FBEE90B24E420FA00FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE90924E420FA00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584D8B2C3EA4020071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D892C3EA4020071A651 /* AdjustSigSdk.xcframework */; }; + 0A584D8C2C3EA4020071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D892C3EA4020071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584D8D2C3EA4020071A651 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D8A2C3EA4020071A651 /* libAdjust.a */; }; + 0A584D902C3EA4B60071A651 /* AppTrackingTransparency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D8F2C3EA4B60071A651 /* AppTrackingTransparency.framework */; }; + 0A584D922C3EA4C80071A651 /* AdServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D912C3EA4C80071A651 /* AdServices.framework */; }; + 0A584D942C3EA4D70071A651 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D932C3EA4D70071A651 /* StoreKit.framework */; }; 963909411BCBFCF300A2E8A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 963909401BCBFCF300A2E8A4 /* main.m */; }; 963909441BCBFCF300A2E8A4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 963909431BCBFCF300A2E8A4 /* AppDelegate.m */; }; 9639094A1BCBFCF300A2E8A4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 963909481BCBFCF300A2E8A4 /* Main.storyboard */; }; 9639094C1BCBFCF300A2E8A4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9639094B1BCBFCF300A2E8A4 /* Assets.xcassets */; }; 9639094F1BCBFCF300A2E8A4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9639094D1BCBFCF300A2E8A4 /* LaunchScreen.storyboard */; }; 963909611BCBFD4200A2E8A4 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 963909601BCBFD4200A2E8A4 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 9D2F240B2447DDE100B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F240A2447DDE100B7CA90 /* ADJSubscription.m */; }; - 9D3A2AD82626511800BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AD62626511800BD6E44 /* ADJAdRevenue.m */; }; - 9D449E131E6ED88F00E7E80B /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DD21E6ED88F00E7E80B /* NSString+ADJAdditions.m */; }; - 9D449E151E6ED88F00E7E80B /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DD61E6ED88F00E7E80B /* NSData+ADJAdditions.m */; }; - 9D449E161E6ED88F00E7E80B /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DD91E6ED88F00E7E80B /* Adjust.m */; }; - 9D449E171E6ED88F00E7E80B /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DDB1E6ED88F00E7E80B /* ADJActivityHandler.m */; }; - 9D449E181E6ED88F00E7E80B /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DDD1E6ED88F00E7E80B /* ADJActivityKind.m */; }; - 9D449E191E6ED88F00E7E80B /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DDF1E6ED88F00E7E80B /* ADJActivityPackage.m */; }; - 9D449E1A1E6ED88F00E7E80B /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DE11E6ED88F00E7E80B /* ADJActivityState.m */; }; - 9D449E1B1E6ED88F00E7E80B /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DE31E6ED88F00E7E80B /* ADJAdjustFactory.m */; }; - 9D449E1C1E6ED88F00E7E80B /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DE51E6ED88F00E7E80B /* ADJLogger.m */; }; - 9D449E1D1E6ED88F00E7E80B /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DE71E6ED88F00E7E80B /* ADJPackageBuilder.m */; }; - 9D449E1E1E6ED88F00E7E80B /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DE91E6ED88F00E7E80B /* ADJPackageHandler.m */; }; - 9D449E1F1E6ED88F00E7E80B /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DEB1E6ED88F00E7E80B /* ADJRequestHandler.m */; }; - 9D449E201E6ED88F00E7E80B /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DED1E6ED88F00E7E80B /* ADJUtil.m */; }; - 9D449E211E6ED88F00E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DEF1E6ED88F00E7E80B /* ADJEvent.m */; }; - 9D449E231E6ED88F00E7E80B /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DF31E6ED88F00E7E80B /* ADJAttributionHandler.m */; }; - 9D449E241E6ED88F00E7E80B /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DF51E6ED88F00E7E80B /* ADJAttribution.m */; }; - 9D449E251E6ED88F00E7E80B /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DF71E6ED88F00E7E80B /* ADJConfig.m */; }; - 9D449E261E6ED88F00E7E80B /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DF91E6ED88F00E7E80B /* ADJTimerOnce.m */; }; - 9D449E271E6ED88F00E7E80B /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DFB1E6ED88F00E7E80B /* ADJTimerCycle.m */; }; - 9D449E281E6ED88F00E7E80B /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DFD1E6ED88F00E7E80B /* ADJResponseData.m */; }; - 9D449E291E6ED88F00E7E80B /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449DFF1E6ED88F00E7E80B /* ADJSessionSuccess.m */; }; - 9D449E2A1E6ED88F00E7E80B /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E011E6ED88F00E7E80B /* ADJSessionFailure.m */; }; - 9D449E2B1E6ED88F00E7E80B /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E031E6ED88F00E7E80B /* ADJEventSuccess.m */; }; - 9D449E2C1E6ED88F00E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E051E6ED88F00E7E80B /* ADJEventFailure.m */; }; - 9D449E2E1E6ED88F00E7E80B /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E091E6ED88F00E7E80B /* ADJBackoffStrategy.m */; }; - 9D449E2F1E6ED88F00E7E80B /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E0B1E6ED88F00E7E80B /* ADJSdkClickHandler.m */; }; - 9D449E311E6ED88F00E7E80B /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E0F1E6ED88F00E7E80B /* ADJSessionParameters.m */; }; - 9D775B6D2A1FA6BC009D0BE8 /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B692A1FA6BC009D0BE8 /* ADJPurchase.m */; }; - 9D775B6E2A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B6A2A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.m */; }; - 9D775B6F2A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D775B6B2A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.m */; }; - 9DAA5C6725AFA4B600C718DD /* AdServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAA5C6625AFA4B600C718DD /* AdServices.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 9DC95F261C104CEF00138E4B /* ViewControllerObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC95F251C104CEF00138E4B /* ViewControllerObjC.m */; }; 9DC95F2A1C10515300138E4B /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC95F291C10515300138E4B /* Constants.m */; }; - 9DD0E9BE1F457EF800B2A759 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9BD1F457EF800B2A759 /* ADJUserDefaults.m */; }; - 9DD7199C290A9E8B00762C02 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DD7199B290A9E8B00762C02 /* StoreKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 9DD7199F290A9FF700762C02 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD7199D290A9FF700762C02 /* ADJSKAdNetwork.m */; }; - 9DF38231260E9DAD0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF38230260E9DAD0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92D992630EDCD000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D982630EDCD000FC3FC /* ADJPackageParams.m */; }; - D799022C24C093AA00C7D11C /* AppTrackingTransparency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D799022B24C093AA00C7D11C /* AppTrackingTransparency.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584D8E2C3EA4030071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584D8C2C3EA4020071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 6F84513325B1B1840004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6F84513425B1B1840004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6FAB78A52636DD4000773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78A62636DD4000773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FBEE90924E420FA00FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE90A24E420FA00FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; + 0A584D892C3EA4020071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584D8A2C3EA4020071A651 /* libAdjust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjust.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A584D8F2C3EA4B60071A651 /* AppTrackingTransparency.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppTrackingTransparency.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk/System/Library/Frameworks/AppTrackingTransparency.framework; sourceTree = DEVELOPER_DIR; }; + 0A584D912C3EA4C80071A651 /* AdServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk/System/Library/Frameworks/AdServices.framework; sourceTree = DEVELOPER_DIR; }; + 0A584D932C3EA4D70071A651 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk/System/iOSSupport/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; 9639093C1BCBFCF300A2E8A4 /* AdjustExample-ObjC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-ObjC.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 963909401BCBFCF300A2E8A4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 963909421BCBFCF300A2E8A4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -77,86 +54,11 @@ 9639095E1BCBFD3B00A2E8A4 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 963909601BCBFD4200A2E8A4 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 964E17FC1D50C6250097770B /* SafariServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SafariServices.framework; path = System/Library/Frameworks/SafariServices.framework; sourceTree = SDKROOT; }; - 9D2F24092447DDE100B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F240A2447DDE100B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D3A2AD62626511800BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2AD72626511800BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D449DD11E6ED88F00E7E80B /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9D449DD21E6ED88F00E7E80B /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9D449DD51E6ED88F00E7E80B /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9D449DD61E6ED88F00E7E80B /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9D449DD81E6ED88F00E7E80B /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9D449DD91E6ED88F00E7E80B /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9D449DDA1E6ED88F00E7E80B /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9D449DDB1E6ED88F00E7E80B /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9D449DDC1E6ED88F00E7E80B /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9D449DDD1E6ED88F00E7E80B /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9D449DDE1E6ED88F00E7E80B /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9D449DDF1E6ED88F00E7E80B /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9D449DE01E6ED88F00E7E80B /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9D449DE11E6ED88F00E7E80B /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9D449DE21E6ED88F00E7E80B /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9D449DE31E6ED88F00E7E80B /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9D449DE41E6ED88F00E7E80B /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9D449DE51E6ED88F00E7E80B /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9D449DE61E6ED88F00E7E80B /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9D449DE71E6ED88F00E7E80B /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9D449DE81E6ED88F00E7E80B /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9D449DE91E6ED88F00E7E80B /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9D449DEA1E6ED88F00E7E80B /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9D449DEB1E6ED88F00E7E80B /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9D449DEC1E6ED88F00E7E80B /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9D449DED1E6ED88F00E7E80B /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9D449DEE1E6ED88F00E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9D449DEF1E6ED88F00E7E80B /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9D449DF21E6ED88F00E7E80B /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9D449DF31E6ED88F00E7E80B /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9D449DF41E6ED88F00E7E80B /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9D449DF51E6ED88F00E7E80B /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9D449DF61E6ED88F00E7E80B /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9D449DF71E6ED88F00E7E80B /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D449DF81E6ED88F00E7E80B /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9D449DF91E6ED88F00E7E80B /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9D449DFA1E6ED88F00E7E80B /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9D449DFB1E6ED88F00E7E80B /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9D449DFC1E6ED88F00E7E80B /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9D449DFD1E6ED88F00E7E80B /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9D449DFE1E6ED88F00E7E80B /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9D449DFF1E6ED88F00E7E80B /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9D449E001E6ED88F00E7E80B /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9D449E011E6ED88F00E7E80B /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9D449E021E6ED88F00E7E80B /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9D449E031E6ED88F00E7E80B /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9D449E041E6ED88F00E7E80B /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9D449E051E6ED88F00E7E80B /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9D449E081E6ED88F00E7E80B /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9D449E091E6ED88F00E7E80B /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9D449E0A1E6ED88F00E7E80B /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9D449E0B1E6ED88F00E7E80B /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.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 = ""; }; - 9D775B672A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 9D775B682A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 9D775B692A1FA6BC009D0BE8 /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 9D775B6A2A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 9D775B6B2A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 9D775B6C2A1FA6BC009D0BE8 /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 9DAA5C6625AFA4B600C718DD /* AdServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/AdServices.framework; sourceTree = DEVELOPER_DIR; }; 9DC95F241C104CEF00138E4B /* ViewControllerObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewControllerObjC.h; sourceTree = ""; }; 9DC95F251C104CEF00138E4B /* ViewControllerObjC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewControllerObjC.m; sourceTree = ""; }; 9DC95F281C10515300138E4B /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = ""; }; 9DC95F291C10515300138E4B /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Constants.m; sourceTree = ""; }; 9DCA5CF01DD5B6BE000296B2 /* AdjustExample-ObjC.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "AdjustExample-ObjC.entitlements"; sourceTree = ""; }; - 9DD0E9BC1F457EF800B2A759 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9DD0E9BD1F457EF800B2A759 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DD7199B290A9E8B00762C02 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/iOSSupport/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; - 9DD7199D290A9FF700762C02 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9DD7199E290A9FF700762C02 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9DF3822F260E9DAD0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF38230260E9DAD0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF92D972630EDCD000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92D982630EDCD000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - D799022B24C093AA00C7D11C /* AppTrackingTransparency.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppTrackingTransparency.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.16.sdk/System/Library/Frameworks/AppTrackingTransparency.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -164,10 +66,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D799022C24C093AA00C7D11C /* AppTrackingTransparency.framework in Frameworks */, - 9DAA5C6725AFA4B600C718DD /* AdServices.framework in Frameworks */, - 9DD7199C290A9E8B00762C02 /* StoreKit.framework in Frameworks */, + 0A584D942C3EA4D70071A651 /* StoreKit.framework in Frameworks */, + 0A584D8B2C3EA4020071A651 /* AdjustSigSdk.xcframework in Frameworks */, + 0A584D8D2C3EA4020071A651 /* libAdjust.a in Frameworks */, + 0A584D902C3EA4B60071A651 /* AppTrackingTransparency.framework in Frameworks */, 963909611BCBFD4200A2E8A4 /* AdSupport.framework in Frameworks */, + 0A584D922C3EA4C80071A651 /* AdServices.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -213,107 +117,12 @@ 9639093F1BCBFCF300A2E8A4 /* Supporting Files */ = { isa = PBXGroup; children = ( - 9D449E121E6ED88F00E7E80B /* Adjust */, 9DF7ACCB1CB50DC800D3591F /* Frameworks */, 963909401BCBFCF300A2E8A4 /* main.m */, ); name = "Supporting Files"; sourceTree = ""; }; - 9D449DD71E6ED88F00E7E80B /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF3822F260E9DAD0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF38230260E9DAD0033F5A1 /* NSNumber+ADJAdditions.m */, - 9D449DD11E6ED88F00E7E80B /* NSString+ADJAdditions.h */, - 9D449DD21E6ED88F00E7E80B /* NSString+ADJAdditions.m */, - 9D449DD51E6ED88F00E7E80B /* NSData+ADJAdditions.h */, - 9D449DD61E6ED88F00E7E80B /* NSData+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; - }; - 9D449E121E6ED88F00E7E80B /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D449DD71E6ED88F00E7E80B /* ADJAdditions */, - 9D449DD81E6ED88F00E7E80B /* Adjust.h */, - 9D449DD91E6ED88F00E7E80B /* Adjust.m */, - 9D449DDA1E6ED88F00E7E80B /* ADJActivityHandler.h */, - 9D449DDB1E6ED88F00E7E80B /* ADJActivityHandler.m */, - 9D449DDC1E6ED88F00E7E80B /* ADJActivityKind.h */, - 9D449DDD1E6ED88F00E7E80B /* ADJActivityKind.m */, - 9D449DDE1E6ED88F00E7E80B /* ADJActivityPackage.h */, - 9D449DDF1E6ED88F00E7E80B /* ADJActivityPackage.m */, - 9D449DE01E6ED88F00E7E80B /* ADJActivityState.h */, - 9D449DE11E6ED88F00E7E80B /* ADJActivityState.m */, - 9D449DE21E6ED88F00E7E80B /* ADJAdjustFactory.h */, - 9D449DE31E6ED88F00E7E80B /* ADJAdjustFactory.m */, - 9D449DE41E6ED88F00E7E80B /* ADJLogger.h */, - 9D449DE51E6ED88F00E7E80B /* ADJLogger.m */, - 9D449DE61E6ED88F00E7E80B /* ADJPackageBuilder.h */, - 9D449DE71E6ED88F00E7E80B /* ADJPackageBuilder.m */, - 9DF92D972630EDCD000FC3FC /* ADJPackageParams.h */, - 9DF92D982630EDCD000FC3FC /* ADJPackageParams.m */, - 9D449DE81E6ED88F00E7E80B /* ADJPackageHandler.h */, - 9D449DE91E6ED88F00E7E80B /* ADJPackageHandler.m */, - 9D449DEA1E6ED88F00E7E80B /* ADJRequestHandler.h */, - 9D449DEB1E6ED88F00E7E80B /* ADJRequestHandler.m */, - 9D449DEC1E6ED88F00E7E80B /* ADJUtil.h */, - 9D449DED1E6ED88F00E7E80B /* ADJUtil.m */, - 9D449DEE1E6ED88F00E7E80B /* ADJEvent.h */, - 9D449DEF1E6ED88F00E7E80B /* ADJEvent.m */, - 9D449DF21E6ED88F00E7E80B /* ADJAttributionHandler.h */, - 9D449DF31E6ED88F00E7E80B /* ADJAttributionHandler.m */, - 9D449DF41E6ED88F00E7E80B /* ADJAttribution.h */, - 9D449DF51E6ED88F00E7E80B /* ADJAttribution.m */, - 9D449DF61E6ED88F00E7E80B /* ADJConfig.h */, - 9D449DF71E6ED88F00E7E80B /* ADJConfig.m */, - 9D449DF81E6ED88F00E7E80B /* ADJTimerOnce.h */, - 9D449DF91E6ED88F00E7E80B /* ADJTimerOnce.m */, - 9D449DFA1E6ED88F00E7E80B /* ADJTimerCycle.h */, - 9D449DFB1E6ED88F00E7E80B /* ADJTimerCycle.m */, - 9D449DFC1E6ED88F00E7E80B /* ADJResponseData.h */, - 9D449DFD1E6ED88F00E7E80B /* ADJResponseData.m */, - 9D449DFE1E6ED88F00E7E80B /* ADJSessionSuccess.h */, - 9D449DFF1E6ED88F00E7E80B /* ADJSessionSuccess.m */, - 9D449E001E6ED88F00E7E80B /* ADJSessionFailure.h */, - 9D449E011E6ED88F00E7E80B /* ADJSessionFailure.m */, - 9D449E021E6ED88F00E7E80B /* ADJEventSuccess.h */, - 9D449E031E6ED88F00E7E80B /* ADJEventSuccess.m */, - 9D449E041E6ED88F00E7E80B /* ADJEventFailure.h */, - 9D449E051E6ED88F00E7E80B /* ADJEventFailure.m */, - 9D449E081E6ED88F00E7E80B /* ADJBackoffStrategy.h */, - 9D449E091E6ED88F00E7E80B /* ADJBackoffStrategy.m */, - 9D449E0A1E6ED88F00E7E80B /* ADJSdkClickHandler.h */, - 9D449E0B1E6ED88F00E7E80B /* ADJSdkClickHandler.m */, - 9D449E0E1E6ED88F00E7E80B /* ADJSessionParameters.h */, - 9D449E0F1E6ED88F00E7E80B /* ADJSessionParameters.m */, - 9DD0E9BC1F457EF800B2A759 /* ADJUserDefaults.h */, - 9DD0E9BD1F457EF800B2A759 /* ADJUserDefaults.m */, - 9D2F24092447DDE100B7CA90 /* ADJSubscription.h */, - 9D2F240A2447DDE100B7CA90 /* ADJSubscription.m */, - 6FBEE90A24E420FA00FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE90924E420FA00FEF3F1 /* ADJUrlStrategy.m */, - 6F84513325B1B1840004C7C0 /* ADJThirdPartySharing.h */, - 6F84513425B1B1840004C7C0 /* ADJThirdPartySharing.m */, - 9D3A2AD72626511800BD6E44 /* ADJAdRevenue.h */, - 9D3A2AD62626511800BD6E44 /* ADJAdRevenue.m */, - 6FAB78A62636DD4000773869 /* ADJLinkResolution.h */, - 6FAB78A52636DD4000773869 /* ADJLinkResolution.m */, - 9DD7199E290A9FF700762C02 /* ADJSKAdNetwork.h */, - 9DD7199D290A9FF700762C02 /* ADJSKAdNetwork.m */, - 9D775B6C2A1FA6BC009D0BE8 /* ADJPurchase.h */, - 9D775B692A1FA6BC009D0BE8 /* ADJPurchase.m */, - 9D775B672A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.h */, - 9D775B6A2A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.m */, - 9D775B682A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.h */, - 9D775B6B2A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; 9DF7ACCB1CB50DC800D3591F /* Frameworks */ = { isa = PBXGroup; children = ( @@ -327,9 +136,11 @@ D799022A24C093AA00C7D11C /* Frameworks */ = { isa = PBXGroup; children = ( - 9DD7199B290A9E8B00762C02 /* StoreKit.framework */, - 9DAA5C6625AFA4B600C718DD /* AdServices.framework */, - D799022B24C093AA00C7D11C /* AppTrackingTransparency.framework */, + 0A584D932C3EA4D70071A651 /* StoreKit.framework */, + 0A584D912C3EA4C80071A651 /* AdServices.framework */, + 0A584D8F2C3EA4B60071A651 /* AppTrackingTransparency.framework */, + 0A584D892C3EA4020071A651 /* AdjustSigSdk.xcframework */, + 0A584D8A2C3EA4020071A651 /* libAdjust.a */, ); name = Frameworks; sourceTree = ""; @@ -344,6 +155,7 @@ 963909381BCBFCF300A2E8A4 /* Sources */, 963909391BCBFCF300A2E8A4 /* Frameworks */, 9639093A1BCBFCF300A2E8A4 /* Resources */, + 0A584D8E2C3EA4030071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -360,7 +172,8 @@ 963909341BCBFCF300A2E8A4 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 9639093B1BCBFCF300A2E8A4 = { @@ -411,49 +224,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D449E231E6ED88F00E7E80B /* ADJAttributionHandler.m in Sources */, - 9D449E1D1E6ED88F00E7E80B /* ADJPackageBuilder.m in Sources */, - 9D449E2A1E6ED88F00E7E80B /* ADJSessionFailure.m in Sources */, - 9D449E201E6ED88F00E7E80B /* ADJUtil.m in Sources */, - 9D3A2AD82626511800BD6E44 /* ADJAdRevenue.m in Sources */, - 9D449E241E6ED88F00E7E80B /* ADJAttribution.m in Sources */, 9DC95F2A1C10515300138E4B /* Constants.m in Sources */, - 9DF38231260E9DAD0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 9D2F240B2447DDE100B7CA90 /* ADJSubscription.m in Sources */, - 6F84513525B1B1850004C7C0 /* ADJThirdPartySharing.m in Sources */, 963909441BCBFCF300A2E8A4 /* AppDelegate.m in Sources */, - 9D449E311E6ED88F00E7E80B /* ADJSessionParameters.m in Sources */, - 9D449E171E6ED88F00E7E80B /* ADJActivityHandler.m in Sources */, - 9D449E181E6ED88F00E7E80B /* ADJActivityKind.m in Sources */, - 9D449E151E6ED88F00E7E80B /* NSData+ADJAdditions.m in Sources */, - 6FAB78A72636DD4000773869 /* ADJLinkResolution.m in Sources */, - 9DD0E9BE1F457EF800B2A759 /* ADJUserDefaults.m in Sources */, - 9D449E191E6ED88F00E7E80B /* ADJActivityPackage.m in Sources */, - 9D449E1E1E6ED88F00E7E80B /* ADJPackageHandler.m in Sources */, - 9D449E281E6ED88F00E7E80B /* ADJResponseData.m in Sources */, - 9D449E131E6ED88F00E7E80B /* NSString+ADJAdditions.m in Sources */, - 9D449E1C1E6ED88F00E7E80B /* ADJLogger.m in Sources */, - 9D449E261E6ED88F00E7E80B /* ADJTimerOnce.m in Sources */, 963909411BCBFCF300A2E8A4 /* main.m in Sources */, - 9DF92D992630EDCD000FC3FC /* ADJPackageParams.m in Sources */, - 9D775B6D2A1FA6BC009D0BE8 /* ADJPurchase.m in Sources */, - 6FBEE90B24E420FA00FEF3F1 /* ADJUrlStrategy.m in Sources */, - 9D449E2B1E6ED88F00E7E80B /* ADJEventSuccess.m in Sources */, - 9D449E211E6ED88F00E7E80B /* ADJEvent.m in Sources */, - 9D449E2E1E6ED88F00E7E80B /* ADJBackoffStrategy.m in Sources */, - 9D775B6E2A1FA6BC009D0BE8 /* ADJPurchaseVerificationHandler.m in Sources */, - 9D775B6F2A1FA6BC009D0BE8 /* ADJPurchaseVerificationResult.m in Sources */, - 9D449E2F1E6ED88F00E7E80B /* ADJSdkClickHandler.m in Sources */, - 9D449E1A1E6ED88F00E7E80B /* ADJActivityState.m in Sources */, - 9DD7199F290A9FF700762C02 /* ADJSKAdNetwork.m in Sources */, - 9D449E251E6ED88F00E7E80B /* ADJConfig.m in Sources */, - 9D449E161E6ED88F00E7E80B /* Adjust.m in Sources */, 9DC95F261C104CEF00138E4B /* ViewControllerObjC.m in Sources */, - 9D449E2C1E6ED88F00E7E80B /* ADJEventFailure.m in Sources */, - 9D449E1F1E6ED88F00E7E80B /* ADJRequestHandler.m in Sources */, - 9D449E271E6ED88F00E7E80B /* ADJTimerCycle.m in Sources */, - 9D449E291E6ED88F00E7E80B /* ADJSessionSuccess.m in Sources */, - 9D449E1B1E6ED88F00E7E80B /* ADJAdjustFactory.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -512,6 +286,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; @@ -526,7 +301,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -567,6 +342,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; @@ -575,7 +351,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -595,7 +371,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-ObjC/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_NO_PIE = NO; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -621,7 +397,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-ObjC/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_NO_PIE = NO; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/xcshareddata/xcschemes/AdjustExample-ObjC.xcscheme b/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/xcshareddata/xcschemes/AdjustExample-ObjC.xcscheme index ce288a595..2e863f593 100644 --- a/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/xcshareddata/xcschemes/AdjustExample-ObjC.xcscheme +++ b/examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/xcshareddata/xcschemes/AdjustExample-ObjC.xcscheme @@ -1,6 +1,6 @@ -#import "Adjust.h" +#import @interface AppDelegate : UIResponder diff --git a/examples/AdjustExample-ObjC/AdjustExample-ObjC/AppDelegate.m b/examples/AdjustExample-ObjC/AdjustExample-ObjC/AppDelegate.m index a2a16bf57..e937b6226 100644 --- a/examples/AdjustExample-ObjC/AdjustExample-ObjC/AppDelegate.m +++ b/examples/AdjustExample-ObjC/AdjustExample-ObjC/AppDelegate.m @@ -19,75 +19,41 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // Configure Adjust SDK. NSString *appToken = kAppToken; NSString *environment = ADJEnvironmentSandbox; - ADJConfig *adjustConfig = [ADJConfig configWithAppToken:appToken environment:environment]; - + ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken + environment:environment]; + // Change the log level. [adjustConfig setLogLevel:ADJLogLevelVerbose]; - // Enable event buffering. - // [adjustConfig setEventBufferingEnabled:YES]; - - // Set default tracker. - // [adjustConfig setDefaultTracker:@"{TrackerToken}"]; - - // Send in the background. - // [adjustConfig setSendInBackground:YES]; - - // Enable COPPA compliance. - // [adjustConfig setCoppaCompliantEnabled:YES]; - - // Enable LinkMe feature. - // [adjustConfig setLinkMeEnabled:YES]; - // Set an attribution delegate. [adjustConfig setDelegate:self]; - - // Delay the first session of the SDK. - // [adjustConfig setDelayStart:7]; - - // Add session callback parameters. - [Adjust addSessionCallbackParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionCallbackParameter:@"sp_key" value:@"sp_value"]; - - // Add session partner parameters. - [Adjust addSessionPartnerParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionPartnerParameter:@"sp_key" value:@"sp_value"]; - - // Remove session callback parameter. - [Adjust removeSessionCallbackParameter:@"sp_key"]; - - // Remove session partner parameter. - [Adjust removeSessionPartnerParameter:@"sp_foo"]; - - // Remove all session callback parameters. - // [Adjust resetSessionCallbackParameters]; - - // Remove all session partner parameters. - // [Adjust resetSessionPartnerParameters]; + + // Add global callback parameters. + [Adjust addGlobalCallbackParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalCallbackParameter:@"sp_value" forKey:@"sp_key"]; + + // Add global partner parameters. + [Adjust addGlobalPartnerParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalPartnerParameter:@"sp_value" forKey:@"sp_key"]; + + // Remove global callback parameter. + [Adjust removeGlobalCallbackParameterForKey:@"sp_key"]; + + // Remove global partner parameter. + [Adjust removeGlobalPartnerParameterForKey:@"sp_foo"]; // Initialise the SDK. - [Adjust appDidLaunch:adjustConfig]; - - // Put the SDK in offline mode. - // [Adjust setOfflineMode:YES]; - - // Disable the SDK. - // [Adjust setEnabled:NO]; - - // Interrupt delayed start set with setDelayStart: method. - // [Adjust sendFirstPackages]; + [Adjust initSdk:adjustConfig]; return YES; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { NSLog(@"Scheme based deep link opened an app: %@", url); - // add your code below to handle deep link - // (e.g., open deep link content) - // url object contains the deep link // Call the below method to send deep link to Adjust backend - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; + return YES; } @@ -95,8 +61,9 @@ - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserAct if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSLog(@"Universal link opened an app: %@", [userActivity webpageURL]); // Pass deep link to Adjust in order to potentially reattribute user. - [Adjust appWillOpenUrl:[userActivity webpageURL]]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]]; } + return YES; } @@ -125,7 +92,7 @@ - (void)adjustSessionTrackingFailed:(ADJSessionFailure *)sessionFailureResponseD NSLog(@"Session failure data: %@", sessionFailureResponseData); } -- (BOOL)adjustDeeplinkResponse:(NSURL *)deeplink { +- (BOOL)adjustDeferredDeeplinkReceived:(NSURL *)deeplink { NSLog(@"Deferred deep link callback called!"); NSLog(@"Deferred deep link URL: %@", [deeplink absoluteString]); @@ -134,9 +101,9 @@ - (BOOL)adjustDeeplinkResponse:(NSURL *)deeplink { return YES; } -- (void)adjustConversionValueUpdated:(NSNumber *)conversionValue { +- (void)adjustSkanUpdatedWithConversionData:(NSDictionary *)data { NSLog(@"Conversion value updated callback called!"); - NSLog(@"Conversion value: %@", conversionValue); + NSLog(@"Conversion value dictionary: \n%@", data.description); } - (void)applicationWillResignActive:(UIApplication *)application { @@ -151,7 +118,7 @@ - (void)applicationWillEnterForeground:(UIApplication *)application { - (void)applicationDidBecomeActive:(UIApplication *)application { // Show ATT dialog. if (@available(iOS 14, *)) { - [Adjust requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { + [Adjust requestAppTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { // Process user's response. }]; } diff --git a/examples/AdjustExample-ObjC/AdjustExample-ObjC/ViewControllerObjC.m b/examples/AdjustExample-ObjC/AdjustExample-ObjC/ViewControllerObjC.m index 82e59dfec..af02a7679 100644 --- a/examples/AdjustExample-ObjC/AdjustExample-ObjC/ViewControllerObjC.m +++ b/examples/AdjustExample-ObjC/AdjustExample-ObjC/ViewControllerObjC.m @@ -6,7 +6,7 @@ // Copyright © 2015-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" +#import #import "Constants.h" #import "ViewControllerObjC.h" @@ -35,12 +35,12 @@ - (void)didReceiveMemoryWarning { } - (IBAction)clickTrackSimpleEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken1]; + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken1]; [Adjust trackEvent:event]; } - (IBAction)clickTrackRevenueEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken2]; + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken2]; // Add revenue 1 cent of an EURO. [event setRevenue:0.01 currency:@"EUR"]; @@ -49,7 +49,7 @@ - (IBAction)clickTrackRevenueEvent:(UIButton *)sender { } - (IBAction)clickTrackCallbackEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken3]; + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken3]; // Add callback parameters to this event. [event addCallbackParameter:@"foo" value:@"bar"]; @@ -59,7 +59,7 @@ - (IBAction)clickTrackCallbackEvent:(UIButton *)sender { } - (IBAction)clickTrackPartnerEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken4]; + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken4]; // Add partner parameteres to this event. [event addPartnerParameter:@"foo" value:@"bar"]; @@ -69,36 +69,38 @@ - (IBAction)clickTrackPartnerEvent:(UIButton *)sender { } - (IBAction)clickEnableOfflineMode:(id)sender { - [Adjust setOfflineMode:YES]; + [Adjust switchToOfflineMode]; } - (IBAction)clickDisableOfflineMode:(id)sender { - [Adjust setOfflineMode:NO]; + [Adjust switchBackToOnlineMode]; } - (IBAction)clickEnableSdk:(id)sender { - [Adjust setEnabled:YES]; + [Adjust enable]; } - (IBAction)clickDisableSdk:(id)sender { - [Adjust setEnabled:NO]; + [Adjust disable]; } - (IBAction)clickIsSdkEnabled:(id)sender { - NSString *message; - if ([Adjust isEnabled]) { - message = @"SDK is ENABLED!"; - } else { - message = @"SDK is DISABLED!"; - } - - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Is SDK Enabled?" - message:message - preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) {}]; - [alert addAction:defaultAction]; - [self presentViewController:alert animated:YES completion:nil]; + [Adjust isEnabledWithCompletionHandler:^(BOOL isEnabled) { + NSString *message; + if (isEnabled) { + message = @"SDK is ENABLED!"; + } else { + message = @"SDK is DISABLED!"; + } + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Is SDK Enabled?" + message:message + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action) {}]; + [alert addAction:defaultAction]; + [self presentViewController:alert animated:YES completion:nil]; + }]; } @end diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj index 809657db5..47b2a8d9d 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj @@ -3,11 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 7254358CD9E958A7B4064280 /* Pods_AdjustExample_Swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EA5241F97D7A6AA93E0236A /* Pods_AdjustExample_Swift.framework */; }; + 0A584D972C3EA56F0071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D952C3EA56F0071A651 /* AdjustSigSdk.xcframework */; }; + 0A584D982C3EA56F0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D952C3EA56F0071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584D992C3EA56F0071A651 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D962C3EA56F0071A651 /* libAdjust.a */; }; 9DF7A9C61CB4ECA600D3591F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF7A9C51CB4ECA600D3591F /* AppDelegate.swift */; }; 9DF7A9C81CB4ECA600D3591F /* ViewControllerSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF7A9C71CB4ECA600D3591F /* ViewControllerSwift.swift */; }; 9DF7A9CB1CB4ECA600D3591F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9DF7A9C91CB4ECA600D3591F /* Main.storyboard */; }; @@ -18,10 +20,24 @@ D758F83A2567BD3700F885BD /* AdServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D758F8392567BD3700F885BD /* AdServices.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584D9A2C3EA56F0071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584D982C3EA56F0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 2EA5241F97D7A6AA93E0236A /* Pods_AdjustExample_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AdjustExample_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4D231C1D3A59B7580F09C08C /* Pods-AdjustExample-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AdjustExample-Swift.debug.xcconfig"; path = "Target Support Files/Pods-AdjustExample-Swift/Pods-AdjustExample-Swift.debug.xcconfig"; sourceTree = ""; }; - 640EC31EC6067AF0059E7F12 /* Pods-AdjustExample-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AdjustExample-Swift.release.xcconfig"; path = "Target Support Files/Pods-AdjustExample-Swift/Pods-AdjustExample-Swift.release.xcconfig"; sourceTree = ""; }; + 0A584D952C3EA56F0071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584D962C3EA56F0071A651 /* libAdjust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjust.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A584D9B2C3EA5980071A651 /* AdjustExample-Swift-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AdjustExample-Swift-Bridging-Header.h"; sourceTree = ""; }; 9D319B9823054502000E28A6 /* AdjustExample-Swift.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "AdjustExample-Swift.entitlements"; sourceTree = ""; }; 9DF7A9C21CB4ECA600D3591F /* AdjustExample-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9DF7A9C51CB4ECA600D3591F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -41,32 +57,23 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0A584D992C3EA56F0071A651 /* libAdjust.a in Frameworks */, D71BFB7024CAD74A00878F3E /* AppTrackingTransparency.framework in Frameworks */, D758F83A2567BD3700F885BD /* AdServices.framework in Frameworks */, 9DFB04C41D745B28006D48FC /* AdSupport.framework in Frameworks */, - 7254358CD9E958A7B4064280 /* Pods_AdjustExample_Swift.framework in Frameworks */, + 0A584D972C3EA56F0071A651 /* AdjustSigSdk.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 4D580BA3A190BFA2515CCAA1 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D231C1D3A59B7580F09C08C /* Pods-AdjustExample-Swift.debug.xcconfig */, - 640EC31EC6067AF0059E7F12 /* Pods-AdjustExample-Swift.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; 9DF7A9B91CB4ECA600D3591F = { isa = PBXGroup; children = ( 9DF7A9C41CB4ECA600D3591F /* AdjustExample-Swift */, 9DF7A9C31CB4ECA600D3591F /* Products */, D71BFB6E24CAD74A00878F3E /* Frameworks */, - 4D580BA3A190BFA2515CCAA1 /* Pods */, ); sourceTree = ""; }; @@ -89,6 +96,7 @@ 9DF7A9CC1CB4ECA600D3591F /* Assets.xcassets */, 9DF7A9D11CB4ECA600D3591F /* Info.plist */, 9DFB04C01D745B13006D48FC /* Frameworks */, + 0A584D9B2C3EA5980071A651 /* AdjustExample-Swift-Bridging-Header.h */, ); path = "AdjustExample-Swift"; sourceTree = ""; @@ -105,9 +113,10 @@ D71BFB6E24CAD74A00878F3E /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584D952C3EA56F0071A651 /* AdjustSigSdk.xcframework */, + 0A584D962C3EA56F0071A651 /* libAdjust.a */, D758F8392567BD3700F885BD /* AdServices.framework */, D71BFB6F24CAD74A00878F3E /* AppTrackingTransparency.framework */, - 2EA5241F97D7A6AA93E0236A /* Pods_AdjustExample_Swift.framework */, ); name = Frameworks; sourceTree = ""; @@ -119,11 +128,10 @@ isa = PBXNativeTarget; buildConfigurationList = 9DF7A9D41CB4ECA600D3591F /* Build configuration list for PBXNativeTarget "AdjustExample-Swift" */; buildPhases = ( - 3A4DD1243A06D0C6D389A4B4 /* [CP] Check Pods Manifest.lock */, 9DF7A9BE1CB4ECA600D3591F /* Sources */, 9DF7A9BF1CB4ECA600D3591F /* Frameworks */, 9DF7A9C01CB4ECA600D3591F /* Resources */, - 4F7E76993EEA2D24DDF5948A /* [CP] Embed Pods Frameworks */, + 0A584D9A2C3EA56F0071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -140,13 +148,14 @@ 9DF7A9BA1CB4ECA600D3591F /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 1250; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 9DF7A9C11CB4ECA600D3591F = { CreatedOnToolsVersion = 7.3; - LastSwiftMigration = 1030; + LastSwiftMigration = 1540; SystemCapabilities = { com.apple.SafariKeychain = { enabled = 1; @@ -186,48 +195,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 3A4DD1243A06D0C6D389A4B4 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AdjustExample-Swift-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 4F7E76993EEA2D24DDF5948A /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AdjustExample-Swift/Pods-AdjustExample-Swift-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AdjustExample-Swift/Pods-AdjustExample-Swift-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AdjustExample-Swift/Pods-AdjustExample-Swift-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 9DF7A9BE1CB4ECA600D3591F /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -294,6 +261,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 = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -308,7 +276,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -350,6 +318,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_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -359,7 +328,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; @@ -370,7 +339,6 @@ }; 9DF7A9D51CB4ECA600D3591F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4D231C1D3A59B7580F09C08C /* Pods-AdjustExample-Swift.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -378,9 +346,10 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-Swift/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -389,7 +358,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "AdjustExample-Swift/AdjustExample-Swift-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -398,7 +367,6 @@ }; 9DF7A9D61CB4ECA600D3591F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 640EC31EC6067AF0059E7F12 /* Pods-AdjustExample-Swift.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -406,9 +374,10 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; + ENABLE_USER_SCRIPT_SANDBOXING = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-Swift/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -417,7 +386,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "AdjustExample-Swift/AdjustExample-Swift-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/xcshareddata/xcschemes/AdjustExample-Swift.xcscheme b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/xcshareddata/xcschemes/AdjustExample-Swift.xcscheme index 14f657916..d301f43a5 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/xcshareddata/xcschemes/AdjustExample-Swift.xcscheme +++ b/examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/xcshareddata/xcschemes/AdjustExample-Swift.xcscheme @@ -1,6 +1,6 @@ - - - - - - diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/AdjustExample-Swift/AdjustExample-Swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/examples/AdjustExample-Swift/AdjustExample-Swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift/AdjustExample-Swift-Bridging-Header.h b/examples/AdjustExample-Swift/AdjustExample-Swift/AdjustExample-Swift-Bridging-Header.h new file mode 100644 index 000000000..843981f6b --- /dev/null +++ b/examples/AdjustExample-Swift/AdjustExample-Swift/AdjustExample-Swift-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift/AppDelegate.swift b/examples/AdjustExample-Swift/AdjustExample-Swift/AppDelegate.swift index 3e01497ed..59c40a7d5 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift/AppDelegate.swift +++ b/examples/AdjustExample-Swift/AdjustExample-Swift/AppDelegate.swift @@ -7,70 +7,38 @@ // import UIKit -import Adjust @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, AdjustDelegate { var window: UIWindow? - + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let appToken = "2fm9gkqubvpc" let environment = ADJEnvironmentSandbox let adjustConfig = ADJConfig(appToken: appToken, environment: environment) - + // Change the log level. - adjustConfig?.logLevel = ADJLogLevelVerbose - - // Enable event buffering. - // adjustConfig?.eventBufferingEnabled = true - - // Set default tracker. - // adjustConfig?.defaultTracker = "{TrackerToken}" - - // Send in the background. - // adjustConfig?.sendInBackground = true - - // Enable COPPA compliance - // adjustConfig?.coppaCompliantEnabled = true - + adjustConfig?.logLevel = ADJLogLevel.verbose + // Set delegate object. adjustConfig?.delegate = self - - // Delay the first session of the SDK. - // adjustConfig?.delayStart = 7 - - // Add session callback parameters. - Adjust.addSessionCallbackParameter("obi", value: "wan") - Adjust.addSessionCallbackParameter("master", value: "yoda") - - // Add session partner parameters. - Adjust.addSessionPartnerParameter("darth", value: "vader") - Adjust.addSessionPartnerParameter("han", value: "solo") - - // Remove session callback parameter. - Adjust.removeSessionCallbackParameter("obi") - - // Remove session partner parameter. - Adjust.removeSessionPartnerParameter("han") - - // Remove all session callback parameters. - // Adjust.resetSessionCallbackParameters() - - // Remove all session partner parameters. - // Adjust.resetSessionPartnerParameters() - + + // Add global callback parameters. + Adjust.addGlobalCallbackParameter("wan", forKey: "obi") + Adjust.addGlobalCallbackParameter("yoda", forKey: "master") + + // Add global partner parameters. + Adjust.addGlobalPartnerParameter("vader", forKey: "darth") + Adjust.addGlobalPartnerParameter("solo", forKey: "han") + + // Remove global callback parameter. + Adjust.removeGlobalCallbackParameter(forKey: "obi") + // Remove global partner parameter. + Adjust.removeGlobalPartnerParameter(forKey: "han") + // Initialise the SDK. - Adjust.appDidLaunch(adjustConfig!) - - // Put the SDK in offline mode. - // Adjust.setOfflineMode(true); - - // Disable the SDK - // Adjust.setEnabled(false); - - // Interrupt delayed start set with setDelayStart: method. - // Adjust.sendFirstPackages() - + Adjust.initSdk(adjustConfig!) + return true } @@ -81,7 +49,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, AdjustDelegate { // url object contains the deep link // Call the below method to send deep link to Adjust backend - Adjust.appWillOpen(url) + Adjust.processDeeplink(ADJDeeplink(deeplink: url)!) return true } @@ -89,54 +57,54 @@ class AppDelegate: UIResponder, UIApplicationDelegate, AdjustDelegate { if (userActivity.activityType == NSUserActivityTypeBrowsingWeb) { NSLog("Universal link opened an app: %@", userActivity.webpageURL!.absoluteString) // Pass deep link to Adjust in order to potentially reattribute user. - Adjust.appWillOpen(userActivity.webpageURL!) + Adjust.processDeeplink(ADJDeeplink(deeplink: userActivity.webpageURL!)!) } return true } - + func adjustAttributionChanged(_ attribution: ADJAttribution?) { NSLog("Attribution callback called!") NSLog("Attribution: %@", attribution ?? "") } - + func adjustEventTrackingSucceeded(_ eventSuccessResponseData: ADJEventSuccess?) { NSLog("Event success callback called!") NSLog("Event success data: %@", eventSuccessResponseData ?? "") } - + func adjustEventTrackingFailed(_ eventFailureResponseData: ADJEventFailure?) { NSLog("Event failure callback called!") NSLog("Event failure data: %@", eventFailureResponseData ?? "") } - + func adjustSessionTrackingSucceeded(_ sessionSuccessResponseData: ADJSessionSuccess?) { NSLog("Session success callback called!") NSLog("Session success data: %@", sessionSuccessResponseData ?? "") } - + func adjustSessionTrackingFailed(_ sessionFailureResponseData: ADJSessionFailure?) { NSLog("Session failure callback called!"); NSLog("Session failure data: %@", sessionFailureResponseData ?? "") } - - func adjustDeeplinkResponse(_ deeplink: URL?) -> Bool { + + func adjustDeferredDeeplinkReceived(_ deeplink: URL?) -> Bool { NSLog("Deferred deep link callback called!") NSLog("Deferred deep link URL: %@", deeplink?.absoluteString ?? "") return true } - + func applicationWillResignActive(_ application: UIApplication) { } - + func applicationDidEnterBackground(_ application: UIApplication) { } - + func applicationWillEnterForeground(_ application: UIApplication) { } - + func applicationDidBecomeActive(_ application: UIApplication) { // Show ATT dialog. - Adjust.requestTrackingAuthorization { status in + Adjust.requestAppTrackingAuthorization { status in switch status { case 0: // ATTrackingManagerAuthorizationStatusNotDetermined case @@ -155,7 +123,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, AdjustDelegate { } } } - + func applicationWillTerminate(_ application: UIApplication) { } } + diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift/Base.lproj/Main.storyboard b/examples/AdjustExample-Swift/AdjustExample-Swift/Base.lproj/Main.storyboard index e7bd9bc6f..6ffad55cd 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift/Base.lproj/Main.storyboard +++ b/examples/AdjustExample-Swift/AdjustExample-Swift/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -102,14 +102,14 @@ - @@ -128,7 +128,6 @@ - diff --git a/examples/AdjustExample-Swift/AdjustExample-Swift/ViewControllerSwift.swift b/examples/AdjustExample-Swift/AdjustExample-Swift/ViewControllerSwift.swift index 03a9be74b..9e60d2169 100644 --- a/examples/AdjustExample-Swift/AdjustExample-Swift/ViewControllerSwift.swift +++ b/examples/AdjustExample-Swift/AdjustExample-Swift/ViewControllerSwift.swift @@ -8,10 +8,10 @@ import AppTrackingTransparency import AdSupport -import Adjust import UIKit class ViewControllerSwift: UIViewController { + @IBOutlet weak var btnTrackEventSimple: UIButton? @IBOutlet weak var btnTrackEventRevenue: UIButton? @IBOutlet weak var btnTrackEventCallback: UIButton? @@ -21,22 +21,22 @@ class ViewControllerSwift: UIViewController { @IBOutlet weak var btnEnableSDK: UIButton? @IBOutlet weak var btnDisableSDK: UIButton? @IBOutlet weak var btnIsSDKEnabled: UIButton? - + // MARK: - View lifecycle methods override func viewDidLoad() { super.viewDidLoad() } - + override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } - + // MARK: - Actions @IBAction func btnTrackEventSimpleTapped(_sender: UIButton) { let event = ADJEvent(eventToken: "g3mfiw"); Adjust.trackEvent(event); } - + @IBAction func btnTrackEventRevenueTapped(_sender: UIButton) { let event = ADJEvent(eventToken: "a4fd35") @@ -45,49 +45,51 @@ class ViewControllerSwift: UIViewController { Adjust.trackEvent(event); } - + @IBAction func btnTrackEventCallbackTapped(_sender: UIButton) { let event = ADJEvent(eventToken: "34vgg9"); - + // Add callback parameters to this event. event?.addCallbackParameter("foo", value: "bar"); event?.addCallbackParameter("key", value: "value"); - + Adjust.trackEvent(event); } - + @IBAction func btnTrackEventPartnerTapped(_sender: UIButton) { let event = ADJEvent(eventToken: "w788qs"); - + // Add partner parameteres to this event. event?.addPartnerParameter("foo", value: "bar"); event?.addPartnerParameter("key", value: "value"); - + Adjust.trackEvent(event); } - + @IBAction func btnEnableOfflineModeTapped(_sender: UIButton) { - Adjust.setOfflineMode(true); + Adjust.switchToOfflineMode(); } - + @IBAction func btnDisableOfflineModeTapped(_sender: UIButton) { - Adjust.setOfflineMode(false); + Adjust.switchBackToOnlineMode(); } - + @IBAction func btnEnableSDKTapped(_sender: UIButton) { - Adjust.setEnabled(true); + Adjust.enable() } - + @IBAction func btnDisableSDKTapped(_sender: UIButton) { - Adjust.setEnabled(false); + Adjust.disable() } - + @IBAction func btnIsSDKEnabledTapped(_sender: UIButton) { - let isSDKEnabled = Adjust.isEnabled(); - if (isSDKEnabled) { - NSLog("SDK is enabled!"); - } else { - NSLog("SDK is disabled"); + Adjust.isEnabled { isSDKEnabled in + if (isSDKEnabled) { + NSLog("SDK is enabled!"); + } else { + NSLog("SDK is disabled"); + } } } } + diff --git a/examples/AdjustExample-Swift/Podfile b/examples/AdjustExample-Swift/Podfile deleted file mode 100644 index de61a0dc4..000000000 --- a/examples/AdjustExample-Swift/Podfile +++ /dev/null @@ -1,11 +0,0 @@ -# Uncomment the next line to define a global platform for your project -platform :ios, '9.0' - -target 'AdjustExample-Swift' do - # Comment the next line if you don't want to use dynamic frameworks - use_frameworks! - - # Pods for AdjustExample-Swift - pod 'Adjust', path: "../../" - -end diff --git a/examples/AdjustExample-Swift/Podfile.lock b/examples/AdjustExample-Swift/Podfile.lock deleted file mode 100644 index 4eaf23f76..000000000 --- a/examples/AdjustExample-Swift/Podfile.lock +++ /dev/null @@ -1,18 +0,0 @@ -PODS: - - Adjust (4.37.2): - - Adjust/Core (= 4.37.2) - - Adjust/Core (4.37.2) - -DEPENDENCIES: - - Adjust (from `../../`) - -EXTERNAL SOURCES: - Adjust: - :path: "../../" - -SPEC CHECKSUMS: - Adjust: 7034cf0249a9266fab2648286318b1b059645908 - -PODFILE CHECKSUM: 4c79da456db9adb90cdd42adc7f721c7bb6490cd - -COCOAPODS: 1.14.3 diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj index ee4c3b97b..87644a0cb 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj @@ -3,83 +3,47 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 0A4FE7CE2AD6A3340085338A /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7C92AD6A3340085338A /* ADJPurchase.m */; }; - 0A4FE7CF2AD6A3340085338A /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7CA2AD6A3340085338A /* ADJPurchaseVerificationResult.m */; }; - 0A4FE7D02AD6A3340085338A /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7CD2AD6A3340085338A /* ADJPurchaseVerificationHandler.m */; }; - 6F84513D25B1B1B40004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84513B25B1B1B40004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB78AF2636DD6B00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78AE2636DD6B00773869 /* ADJLinkResolution.m */; }; - 6FBEE91124E4213900FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE91024E4213800FEF3F1 /* ADJUrlStrategy.m */; }; - 968595F11D0B2E630011CA2B /* AdjustBridgeRegister.m in Sources */ = {isa = PBXBuildFile; fileRef = 968595F01D0B2E630011CA2B /* AdjustBridgeRegister.m */; }; + 07D5CB242C57E82700C112DC /* WKWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D5CB232C57E82700C112DC /* WKWebViewController.m */; }; + 0A584DA12C3EA6C40071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D9F2C3EA6C40071A651 /* AdjustSigSdk.xcframework */; }; + 0A584DA22C3EA6C40071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584D9F2C3EA6C40071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584DA32C3EA6C40071A651 /* libAdjustBridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DA02C3EA6C40071A651 /* libAdjustBridge.a */; }; 9D1082A91CFDAF8E0050568B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D1082A81CFDAF8E0050568B /* main.m */; }; 9D1082B41CFDAF8E0050568B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D1082B31CFDAF8E0050568B /* Assets.xcassets */; }; 9D1082C51CFDAFDA0050568B /* AdjustExample-WebView.html in Resources */ = {isa = PBXBuildFile; fileRef = 9D1082C41CFDAFDA0050568B /* AdjustExample-WebView.html */; }; 9D1082C81CFDAFF30050568B /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1082C71CFDAFF30050568B /* WebKit.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 9D1082CC1CFDAFFB0050568B /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1082CB1CFDAFFB0050568B /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 9D10833A1CFDBD9F0050568B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1083391CFDBD9F0050568B /* CoreGraphics.framework */; settings = {ATTRIBUTES = (Required, ); }; }; - 9D10833D1CFDD8F00050568B /* WKWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D10833C1CFDD8F00050568B /* WKWebViewController.m */; }; 9D10833F1CFDDBF50050568B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D10833E1CFDDBF50050568B /* Default-568h@2x.png */; }; 9D1083411CFDE2470050568B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1083401CFDE2470050568B /* UIKit.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 9D1083431CFDE29A0050568B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D1083421CFDE29A0050568B /* Foundation.framework */; settings = {ATTRIBUTES = (Required, ); }; }; - 9D2F24112447DE0A00B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F24102447DE0A00B7CA90 /* ADJSubscription.m */; }; - 9D3A2ADE2626514300BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2ADC2626514300BD6E44 /* ADJAdRevenue.m */; }; - 9D449EDA1E6EDD4100E7E80B /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E991E6EDD4100E7E80B /* ADJActivityHandler.m */; }; - 9D449EDB1E6EDD4100E7E80B /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E9B1E6EDD4100E7E80B /* ADJActivityKind.m */; }; - 9D449EDC1E6EDD4100E7E80B /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E9D1E6EDD4100E7E80B /* ADJActivityPackage.m */; }; - 9D449EDD1E6EDD4100E7E80B /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449E9F1E6EDD4100E7E80B /* ADJActivityState.m */; }; - 9D449EDE1E6EDD4100E7E80B /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EA21E6EDD4100E7E80B /* NSData+ADJAdditions.m */; }; - 9D449EDF1E6EDD4100E7E80B /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EA41E6EDD4100E7E80B /* NSString+ADJAdditions.m */; }; - 9D449EE11E6EDD4100E7E80B /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EA81E6EDD4100E7E80B /* ADJAdjustFactory.m */; }; - 9D449EE21E6EDD4100E7E80B /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EAA1E6EDD4100E7E80B /* ADJAttribution.m */; }; - 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 */; }; - 9D449EE81E6EDD4100E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB61E6EDD4100E7E80B /* ADJEvent.m */; }; - 9D449EE91E6EDD4100E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EB81E6EDD4100E7E80B /* ADJEventFailure.m */; }; - 9D449EEA1E6EDD4100E7E80B /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EBA1E6EDD4100E7E80B /* ADJEventSuccess.m */; }; - 9D449EEC1E6EDD4100E7E80B /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EBE1E6EDD4100E7E80B /* ADJLogger.m */; }; - 9D449EED1E6EDD4100E7E80B /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EC01E6EDD4100E7E80B /* ADJPackageBuilder.m */; }; - 9D449EEE1E6EDD4100E7E80B /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EC21E6EDD4100E7E80B /* ADJPackageHandler.m */; }; - 9D449EEF1E6EDD4100E7E80B /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EC41E6EDD4100E7E80B /* ADJRequestHandler.m */; }; - 9D449EF01E6EDD4100E7E80B /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EC61E6EDD4100E7E80B /* ADJResponseData.m */; }; - 9D449EF11E6EDD4100E7E80B /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EC81E6EDD4100E7E80B /* ADJSdkClickHandler.m */; }; - 9D449EF21E6EDD4100E7E80B /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ECA1E6EDD4100E7E80B /* ADJSessionFailure.m */; }; - 9D449EF31E6EDD4100E7E80B /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ECC1E6EDD4100E7E80B /* ADJSessionParameters.m */; }; - 9D449EF41E6EDD4100E7E80B /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ECE1E6EDD4100E7E80B /* ADJSessionSuccess.m */; }; - 9D449EF61E6EDD4100E7E80B /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ED21E6EDD4100E7E80B /* ADJTimerCycle.m */; }; - 9D449EF71E6EDD4100E7E80B /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ED41E6EDD4100E7E80B /* ADJTimerOnce.m */; }; - 9D449EF81E6EDD4100E7E80B /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ED61E6EDD4100E7E80B /* Adjust.m */; }; - 9D449EF91E6EDD4100E7E80B /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449ED81E6EDD4100E7E80B /* ADJUtil.m */; }; - 9D49D16E290FEBEB00042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D16D290FEBEB00042345 /* ADJSKAdNetwork.m */; }; - 9D75F1971D07463800E5D222 /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D75F18A1D07463800E5D222 /* WebViewJavascriptBridge_JS.m */; }; - 9D75F1981D07463800E5D222 /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D75F18C1D07463800E5D222 /* WebViewJavascriptBridgeBase.m */; }; - 9D75F1991D07463800E5D222 /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D75F18E1D07463800E5D222 /* WKWebViewJavascriptBridge.m */; }; - 9D75F19A1D07463800E5D222 /* AdjustBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D75F1911D07463800E5D222 /* AdjustBridge.m */; }; 9D9A99DA1D0B699A0022FFCE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9A99D91D0B699A0022FFCE /* AppDelegate.m */; }; - 9DD0E9C41F4587C600B2A759 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9C31F4587C600B2A759 /* ADJUserDefaults.m */; }; - 9DF38239260E9DDE0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF38237260E9DDE0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92D9F2630EE54000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92D9E2630EE54000FC3FC /* ADJPackageParams.m */; }; + 9DCA566E2C09D8F80043C3AF /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DCA566D2C09D8F80043C3AF /* StoreKit.framework */; }; D79970FA25B05A66008A17E1 /* AppTrackingTransparency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D79970F925B05A66008A17E1 /* AppTrackingTransparency.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + 0A584DA42C3EA6C50071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584DA22C3EA6C40071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 0A4FE7C82AD6A3340085338A /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0A4FE7C92AD6A3340085338A /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0A4FE7CA2AD6A3340085338A /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0A4FE7CB2AD6A3340085338A /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0A4FE7CC2AD6A3340085338A /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0A4FE7CD2AD6A3340085338A /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 6F84513B25B1B1B40004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6F84513C25B1B1B40004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6FAB78AD2636DD6B00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB78AE2636DD6B00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FBEE90F24E4213800FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE91024E4213800FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 968595EF1D0B2E630011CA2B /* AdjustBridgeRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridgeRegister.h; sourceTree = ""; }; - 968595F01D0B2E630011CA2B /* AdjustBridgeRegister.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridgeRegister.m; sourceTree = ""; }; + 07D5CB222C57E82700C112DC /* WKWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebViewController.h; sourceTree = ""; }; + 07D5CB232C57E82700C112DC /* WKWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WKWebViewController.m; sourceTree = ""; }; + 0A584D9F2C3EA6C40071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584DA02C3EA6C40071A651 /* libAdjustBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjustBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9D1082A41CFDAF8E0050568B /* AdjustExample-WebView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-WebView.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9D1082A81CFDAF8E0050568B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 9D1082B31CFDAF8E0050568B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -89,89 +53,12 @@ 9D1082C91CFDAFF60050568B /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 9D1082CB1CFDAFFB0050568B /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 9D1083391CFDBD9F0050568B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 9D10833B1CFDD8F00050568B /* WKWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewController.h; sourceTree = ""; }; - 9D10833C1CFDD8F00050568B /* WKWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewController.m; sourceTree = ""; }; 9D10833E1CFDDBF50050568B /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 9D1083401CFDE2470050568B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 9D1083421CFDE29A0050568B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 9D2F240F2447DE0A00B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F24102447DE0A00B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D3A2ADC2626514300BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D3A2ADD2626514300BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D449E981E6EDD4100E7E80B /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9D449E991E6EDD4100E7E80B /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9D449E9A1E6EDD4100E7E80B /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9D449E9B1E6EDD4100E7E80B /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9D449E9C1E6EDD4100E7E80B /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9D449E9D1E6EDD4100E7E80B /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9D449E9E1E6EDD4100E7E80B /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9D449E9F1E6EDD4100E7E80B /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9D449EA11E6EDD4100E7E80B /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9D449EA21E6EDD4100E7E80B /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9D449EA31E6EDD4100E7E80B /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9D449EA41E6EDD4100E7E80B /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9D449EA71E6EDD4100E7E80B /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9D449EA81E6EDD4100E7E80B /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9D449EA91E6EDD4100E7E80B /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9D449EAA1E6EDD4100E7E80B /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9D449EAB1E6EDD4100E7E80B /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9D449EAC1E6EDD4100E7E80B /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9D449EAD1E6EDD4100E7E80B /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 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 = ""; }; - 9D449EB51E6EDD4100E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9D449EB61E6EDD4100E7E80B /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9D449EB71E6EDD4100E7E80B /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9D449EB81E6EDD4100E7E80B /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9D449EB91E6EDD4100E7E80B /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9D449EBA1E6EDD4100E7E80B /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9D449EBD1E6EDD4100E7E80B /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9D449EBE1E6EDD4100E7E80B /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9D449EBF1E6EDD4100E7E80B /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9D449EC01E6EDD4100E7E80B /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9D449EC11E6EDD4100E7E80B /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9D449EC21E6EDD4100E7E80B /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9D449EC31E6EDD4100E7E80B /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9D449EC41E6EDD4100E7E80B /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9D449EC51E6EDD4100E7E80B /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9D449EC61E6EDD4100E7E80B /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9D449EC71E6EDD4100E7E80B /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9D449EC81E6EDD4100E7E80B /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9D449EC91E6EDD4100E7E80B /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9D449ECA1E6EDD4100E7E80B /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9D449ECB1E6EDD4100E7E80B /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9D449ECC1E6EDD4100E7E80B /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9D449ECD1E6EDD4100E7E80B /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9D449ECE1E6EDD4100E7E80B /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9D449ED11E6EDD4100E7E80B /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9D449ED21E6EDD4100E7E80B /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9D449ED31E6EDD4100E7E80B /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9D449ED41E6EDD4100E7E80B /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9D449ED51E6EDD4100E7E80B /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9D449ED61E6EDD4100E7E80B /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9D449ED71E6EDD4100E7E80B /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9D449ED81E6EDD4100E7E80B /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9D49D16C290FEBEB00042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D16D290FEBEB00042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9D75F1871D07463800E5D222 /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = ""; }; - 9D75F1881D07463800E5D222 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = ""; }; - 9D75F1891D07463800E5D222 /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = ""; }; - 9D75F18A1D07463800E5D222 /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = ""; }; - 9D75F18B1D07463800E5D222 /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = ""; }; - 9D75F18C1D07463800E5D222 /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = ""; }; - 9D75F18D1D07463800E5D222 /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = ""; }; - 9D75F18E1D07463800E5D222 /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = ""; }; - 9D75F1901D07463800E5D222 /* AdjustBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdjustBridge.h; sourceTree = ""; }; - 9D75F1911D07463800E5D222 /* AdjustBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdjustBridge.m; sourceTree = ""; }; 9D9A99D81D0B699A0022FFCE /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 9D9A99D91D0B699A0022FFCE /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 9DD0E9C21F4587C600B2A759 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9DD0E9C31F4587C600B2A759 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DF38237260E9DDE0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF38238260E9DDE0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF92D9D2630EE54000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92D9E2630EE54000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; + 9DCA566D2C09D8F80043C3AF /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; D79970F925B05A66008A17E1 /* AppTrackingTransparency.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppTrackingTransparency.framework; path = System/Library/Frameworks/AppTrackingTransparency.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -181,11 +68,14 @@ buildActionMask = 2147483647; files = ( 9D1082CC1CFDAFFB0050568B /* AdSupport.framework in Frameworks */, + 9DCA566E2C09D8F80043C3AF /* StoreKit.framework in Frameworks */, + 0A584DA32C3EA6C40071A651 /* libAdjustBridge.a in Frameworks */, D79970FA25B05A66008A17E1 /* AppTrackingTransparency.framework in Frameworks */, 9D1083411CFDE2470050568B /* UIKit.framework in Frameworks */, 9D1082C81CFDAFF30050568B /* WebKit.framework in Frameworks */, 9D1083431CFDE29A0050568B /* Foundation.framework in Frameworks */, 9D10833A1CFDBD9F0050568B /* CoreGraphics.framework in Frameworks */, + 0A584DA12C3EA6C40071A651 /* AdjustSigSdk.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -214,8 +104,8 @@ children = ( 9D9A99D81D0B699A0022FFCE /* AppDelegate.h */, 9D9A99D91D0B699A0022FFCE /* AppDelegate.m */, - 9D10833B1CFDD8F00050568B /* WKWebViewController.h */, - 9D10833C1CFDD8F00050568B /* WKWebViewController.m */, + 07D5CB222C57E82700C112DC /* WKWebViewController.h */, + 07D5CB232C57E82700C112DC /* WKWebViewController.m */, 9D1082B31CFDAF8E0050568B /* Assets.xcassets */, 9D1082B81CFDAF8E0050568B /* Info.plist */, 9D1082C41CFDAFDA0050568B /* AdjustExample-WebView.html */, @@ -227,8 +117,6 @@ 9D1082A71CFDAF8E0050568B /* Supporting Files */ = { isa = PBXGroup; children = ( - 9D449E971E6EDD4100E7E80B /* Adjust */, - 9D75F1951D07463800E5D222 /* AdjustBridge */, 9D1082C61CFDAFE30050568B /* Frameworks */, 9D1082A81CFDAF8E0050568B /* main.m */, 9D10833E1CFDDBF50050568B /* Default-568h@2x.png */, @@ -249,131 +137,12 @@ name = Frameworks; sourceTree = ""; }; - 9D449E971E6EDD4100E7E80B /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D449EA01E6EDD4100E7E80B /* ADJAdditions */, - 9D449E981E6EDD4100E7E80B /* ADJActivityHandler.h */, - 9D449E991E6EDD4100E7E80B /* ADJActivityHandler.m */, - 9D449E9A1E6EDD4100E7E80B /* ADJActivityKind.h */, - 9D449E9B1E6EDD4100E7E80B /* ADJActivityKind.m */, - 9D449E9C1E6EDD4100E7E80B /* ADJActivityPackage.h */, - 9D449E9D1E6EDD4100E7E80B /* ADJActivityPackage.m */, - 9D449E9E1E6EDD4100E7E80B /* ADJActivityState.h */, - 9D449E9F1E6EDD4100E7E80B /* ADJActivityState.m */, - 9D449EA71E6EDD4100E7E80B /* ADJAdjustFactory.h */, - 9D449EA81E6EDD4100E7E80B /* ADJAdjustFactory.m */, - 9D449EA91E6EDD4100E7E80B /* ADJAttribution.h */, - 9D449EAA1E6EDD4100E7E80B /* ADJAttribution.m */, - 9D449EAB1E6EDD4100E7E80B /* ADJAttributionHandler.h */, - 9D449EAC1E6EDD4100E7E80B /* ADJAttributionHandler.m */, - 9D449EAD1E6EDD4100E7E80B /* ADJBackoffStrategy.h */, - 9D449EAE1E6EDD4100E7E80B /* ADJBackoffStrategy.m */, - 9D449EAF1E6EDD4100E7E80B /* ADJConfig.h */, - 9D449EB01E6EDD4100E7E80B /* ADJConfig.m */, - 9D449EB51E6EDD4100E7E80B /* ADJEvent.h */, - 9D449EB61E6EDD4100E7E80B /* ADJEvent.m */, - 9D449EB71E6EDD4100E7E80B /* ADJEventFailure.h */, - 9D449EB81E6EDD4100E7E80B /* ADJEventFailure.m */, - 9D449EB91E6EDD4100E7E80B /* ADJEventSuccess.h */, - 9D449EBA1E6EDD4100E7E80B /* ADJEventSuccess.m */, - 9D449EBD1E6EDD4100E7E80B /* ADJLogger.h */, - 9D449EBE1E6EDD4100E7E80B /* ADJLogger.m */, - 9D449EBF1E6EDD4100E7E80B /* ADJPackageBuilder.h */, - 9D449EC01E6EDD4100E7E80B /* ADJPackageBuilder.m */, - 9DF92D9D2630EE54000FC3FC /* ADJPackageParams.h */, - 9DF92D9E2630EE54000FC3FC /* ADJPackageParams.m */, - 9D449EC11E6EDD4100E7E80B /* ADJPackageHandler.h */, - 9D449EC21E6EDD4100E7E80B /* ADJPackageHandler.m */, - 9D449EC31E6EDD4100E7E80B /* ADJRequestHandler.h */, - 9D449EC41E6EDD4100E7E80B /* ADJRequestHandler.m */, - 9D449EC51E6EDD4100E7E80B /* ADJResponseData.h */, - 9D449EC61E6EDD4100E7E80B /* ADJResponseData.m */, - 9D449EC71E6EDD4100E7E80B /* ADJSdkClickHandler.h */, - 9D449EC81E6EDD4100E7E80B /* ADJSdkClickHandler.m */, - 9D449EC91E6EDD4100E7E80B /* ADJSessionFailure.h */, - 9D449ECA1E6EDD4100E7E80B /* ADJSessionFailure.m */, - 9D449ECB1E6EDD4100E7E80B /* ADJSessionParameters.h */, - 9D449ECC1E6EDD4100E7E80B /* ADJSessionParameters.m */, - 9D449ECD1E6EDD4100E7E80B /* ADJSessionSuccess.h */, - 9D449ECE1E6EDD4100E7E80B /* ADJSessionSuccess.m */, - 9D449ED11E6EDD4100E7E80B /* ADJTimerCycle.h */, - 9D449ED21E6EDD4100E7E80B /* ADJTimerCycle.m */, - 9D449ED31E6EDD4100E7E80B /* ADJTimerOnce.h */, - 9D449ED41E6EDD4100E7E80B /* ADJTimerOnce.m */, - 9D449ED51E6EDD4100E7E80B /* Adjust.h */, - 9D449ED61E6EDD4100E7E80B /* Adjust.m */, - 9D449ED71E6EDD4100E7E80B /* ADJUtil.h */, - 9D449ED81E6EDD4100E7E80B /* ADJUtil.m */, - 9DD0E9C21F4587C600B2A759 /* ADJUserDefaults.h */, - 9DD0E9C31F4587C600B2A759 /* ADJUserDefaults.m */, - 9D2F240F2447DE0A00B7CA90 /* ADJSubscription.h */, - 9D2F24102447DE0A00B7CA90 /* ADJSubscription.m */, - 6FBEE90F24E4213800FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE91024E4213800FEF3F1 /* ADJUrlStrategy.m */, - 6F84513C25B1B1B40004C7C0 /* ADJThirdPartySharing.h */, - 6F84513B25B1B1B40004C7C0 /* ADJThirdPartySharing.m */, - 9D3A2ADD2626514300BD6E44 /* ADJAdRevenue.h */, - 9D3A2ADC2626514300BD6E44 /* ADJAdRevenue.m */, - 6FAB78AD2636DD6B00773869 /* ADJLinkResolution.h */, - 6FAB78AE2636DD6B00773869 /* ADJLinkResolution.m */, - 9D49D16C290FEBEB00042345 /* ADJSKAdNetwork.h */, - 9D49D16D290FEBEB00042345 /* ADJSKAdNetwork.m */, - 0A4FE7CC2AD6A3340085338A /* ADJPurchase.h */, - 0A4FE7C92AD6A3340085338A /* ADJPurchase.m */, - 0A4FE7CB2AD6A3340085338A /* ADJPurchaseVerificationHandler.h */, - 0A4FE7CD2AD6A3340085338A /* ADJPurchaseVerificationHandler.m */, - 0A4FE7C82AD6A3340085338A /* ADJPurchaseVerificationResult.h */, - 0A4FE7CA2AD6A3340085338A /* ADJPurchaseVerificationResult.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 9D449EA01E6EDD4100E7E80B /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF38238260E9DDE0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF38237260E9DDE0033F5A1 /* NSNumber+ADJAdditions.m */, - 9D449EA11E6EDD4100E7E80B /* NSData+ADJAdditions.h */, - 9D449EA21E6EDD4100E7E80B /* NSData+ADJAdditions.m */, - 9D449EA31E6EDD4100E7E80B /* NSString+ADJAdditions.h */, - 9D449EA41E6EDD4100E7E80B /* NSString+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; - }; - 9D75F18F1D07463800E5D222 /* WebViewJavascriptBridge */ = { - isa = PBXGroup; - children = ( - 9D75F1871D07463800E5D222 /* WebViewJavascriptBridge.h */, - 9D75F1881D07463800E5D222 /* WebViewJavascriptBridge.m */, - 9D75F1891D07463800E5D222 /* WebViewJavascriptBridge_JS.h */, - 9D75F18A1D07463800E5D222 /* WebViewJavascriptBridge_JS.m */, - 9D75F18B1D07463800E5D222 /* WebViewJavascriptBridgeBase.h */, - 9D75F18C1D07463800E5D222 /* WebViewJavascriptBridgeBase.m */, - 9D75F18D1D07463800E5D222 /* WKWebViewJavascriptBridge.h */, - 9D75F18E1D07463800E5D222 /* WKWebViewJavascriptBridge.m */, - ); - path = WebViewJavascriptBridge; - sourceTree = ""; - }; - 9D75F1951D07463800E5D222 /* AdjustBridge */ = { - isa = PBXGroup; - children = ( - 9D75F1901D07463800E5D222 /* AdjustBridge.h */, - 9D75F1911D07463800E5D222 /* AdjustBridge.m */, - 968595EF1D0B2E630011CA2B /* AdjustBridgeRegister.h */, - 968595F01D0B2E630011CA2B /* AdjustBridgeRegister.m */, - 9D75F18F1D07463800E5D222 /* WebViewJavascriptBridge */, - ); - name = AdjustBridge; - path = ../../../AdjustBridge; - sourceTree = ""; - }; D79970F825B05A66008A17E1 /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584D9F2C3EA6C40071A651 /* AdjustSigSdk.xcframework */, + 0A584DA02C3EA6C40071A651 /* libAdjustBridge.a */, + 9DCA566D2C09D8F80043C3AF /* StoreKit.framework */, D79970F925B05A66008A17E1 /* AppTrackingTransparency.framework */, ); name = Frameworks; @@ -389,6 +158,7 @@ 9D1082A01CFDAF8E0050568B /* Sources */, 9D1082A11CFDAF8E0050568B /* Frameworks */, 9D1082A21CFDAF8E0050568B /* Resources */, + 0A584DA42C3EA6C50071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -405,8 +175,9 @@ 9D10829C1CFDAF8E0050568B /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; CLASSPREFIX = ""; - LastUpgradeCheck = 1250; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 9D1082A31CFDAF8E0050568B = { @@ -451,56 +222,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D449EE31E6EDD4100E7E80B /* ADJAttributionHandler.m in Sources */, - 6FBEE91124E4213900FEF3F1 /* ADJUrlStrategy.m in Sources */, 9D9A99DA1D0B699A0022FFCE /* AppDelegate.m in Sources */, - 9D449EE41E6EDD4100E7E80B /* ADJBackoffStrategy.m in Sources */, - 9D449EDA1E6EDD4100E7E80B /* ADJActivityHandler.m in Sources */, - 9D449EEF1E6EDD4100E7E80B /* ADJRequestHandler.m in Sources */, - 9D449EDC1E6EDD4100E7E80B /* ADJActivityPackage.m in Sources */, - 9D449EF71E6EDD4100E7E80B /* ADJTimerOnce.m in Sources */, - 0A4FE7CF2AD6A3340085338A /* ADJPurchaseVerificationResult.m in Sources */, - 9DF92D9F2630EE54000FC3FC /* ADJPackageParams.m in Sources */, - 07C8C7E92B8F4404006979A1 /* ADJPurchaseVerificationHandler.m in Sources */, - 9D449EF81E6EDD4100E7E80B /* Adjust.m in Sources */, - 9D449EDF1E6EDD4100E7E80B /* NSString+ADJAdditions.m in Sources */, - 9D449EF31E6EDD4100E7E80B /* ADJSessionParameters.m in Sources */, - 9D449EEC1E6EDD4100E7E80B /* ADJLogger.m in Sources */, - 9D449EEA1E6EDD4100E7E80B /* ADJEventSuccess.m in Sources */, - 6F84513D25B1B1B40004C7C0 /* ADJThirdPartySharing.m in Sources */, - 9DD0E9C41F4587C600B2A759 /* ADJUserDefaults.m in Sources */, - 9D75F1991D07463800E5D222 /* WKWebViewJavascriptBridge.m in Sources */, - 9D10833D1CFDD8F00050568B /* WKWebViewController.m in Sources */, - 9D449EE51E6EDD4100E7E80B /* ADJConfig.m in Sources */, - 9DF38239260E9DDE0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 9D3A2ADE2626514300BD6E44 /* ADJAdRevenue.m in Sources */, - 9D75F19A1D07463800E5D222 /* AdjustBridge.m in Sources */, - 9D449EF21E6EDD4100E7E80B /* ADJSessionFailure.m in Sources */, - 9D449EDD1E6EDD4100E7E80B /* ADJActivityState.m in Sources */, - 9D449EE11E6EDD4100E7E80B /* ADJAdjustFactory.m in Sources */, - 9D75F1971D07463800E5D222 /* WebViewJavascriptBridge_JS.m in Sources */, - 968595F11D0B2E630011CA2B /* AdjustBridgeRegister.m in Sources */, - 9D449EF61E6EDD4100E7E80B /* ADJTimerCycle.m in Sources */, - 07C8C7EB2B8F4404006979A1 /* ADJPurchaseVerificationResult.m in Sources */, - 9D75F1981D07463800E5D222 /* WebViewJavascriptBridgeBase.m in Sources */, - 9D449EE21E6EDD4100E7E80B /* ADJAttribution.m in Sources */, - 9D449EE81E6EDD4100E7E80B /* ADJEvent.m in Sources */, - 9D49D16E290FEBEB00042345 /* ADJSKAdNetwork.m in Sources */, - 0A4FE7CE2AD6A3340085338A /* ADJPurchase.m in Sources */, - 9D449EF11E6EDD4100E7E80B /* ADJSdkClickHandler.m in Sources */, - 9D449EDB1E6EDD4100E7E80B /* ADJActivityKind.m in Sources */, - 9D449EDE1E6EDD4100E7E80B /* NSData+ADJAdditions.m in Sources */, - 9D449EED1E6EDD4100E7E80B /* ADJPackageBuilder.m in Sources */, - 6FAB78AF2636DD6B00773869 /* ADJLinkResolution.m in Sources */, - 0A4FE7D02AD6A3340085338A /* ADJPurchaseVerificationHandler.m in Sources */, - 9D449EF01E6EDD4100E7E80B /* ADJResponseData.m in Sources */, 9D1082A91CFDAF8E0050568B /* main.m in Sources */, - 9D449EF91E6EDD4100E7E80B /* ADJUtil.m in Sources */, - 9D2F24112447DE0A00B7CA90 /* ADJSubscription.m in Sources */, - 9D449EEE1E6EDD4100E7E80B /* ADJPackageHandler.m in Sources */, - 9D449EE91E6EDD4100E7E80B /* ADJEventFailure.m in Sources */, - 07C8C7EA2B8F4404006979A1 /* ADJPurchase.m in Sources */, - 9D449EF41E6EDD4100E7E80B /* ADJSessionSuccess.m in Sources */, + 07D5CB242C57E82700C112DC /* WKWebViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -541,6 +265,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 = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -555,7 +280,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; @@ -597,6 +322,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_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -606,7 +332,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; @@ -621,7 +347,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-WebView/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -640,7 +366,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "AdjustExample-WebView/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/xcshareddata/xcschemes/AdjustExample-WebView.xcscheme b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/xcshareddata/xcschemes/AdjustExample-WebView.xcscheme index b5b940c44..aed0c21bb 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/xcshareddata/xcschemes/AdjustExample-WebView.xcscheme +++ b/examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/xcshareddata/xcschemes/AdjustExample-WebView.xcscheme @@ -1,6 +1,6 @@ - - - - -

Adjust Web View Demo

- - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- + +
+ + + + + +

Webview



+
+
+
+
+
+
+
+
+
+
+
+
+
+ +

+ + + + + + + + diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView/AppDelegate.m b/examples/AdjustExample-WebView/AdjustExample-WebView/AppDelegate.m index 3ac9c1f8d..71f02d30c 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView/AppDelegate.m +++ b/examples/AdjustExample-WebView/AdjustExample-WebView/AppDelegate.m @@ -6,9 +6,9 @@ // Copyright © 2016-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" #import "AppDelegate.h" #import "WKWebViewController.h" +#import @interface AppDelegate () @@ -36,13 +36,13 @@ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDiction // url object contains the deep link // Call the below method to send deep link to Adjust backend - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; return YES; } - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> *restorableObjects))restorationHandler { if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { - [Adjust appWillOpenUrl:[userActivity webpageURL]]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]]; } return YES; } diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.h b/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.h index 48d3a4a54..6caaa971a 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.h +++ b/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.h @@ -8,11 +8,14 @@ #import #import +#import -#import "AdjustBridge.h" +NS_ASSUME_NONNULL_BEGIN @interface WKWebViewController : UINavigationController @property AdjustBridge *adjustBridge; @end + +NS_ASSUME_NONNULL_END diff --git a/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.m b/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.m index ff9a11cbf..506a7e9c7 100644 --- a/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.m +++ b/examples/AdjustExample-WebView/AdjustExample-WebView/WKWebViewController.m @@ -16,34 +16,34 @@ @implementation WKWebViewController - (void)viewDidLoad { [super viewDidLoad]; -} - -- (void)viewWillAppear:(BOOL)animated { + // Do any additional setup after loading the view. [self loadWKWebView]; } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} - - (void)loadWKWebView { WKWebView *webView = [[NSClassFromString(@"WKWebView") alloc] initWithFrame:self.view.bounds]; webView.navigationDelegate = self; webView.UIDelegate = self; [self.view addSubview:webView]; - + _adjustBridge = [[AdjustBridge alloc] init]; - [_adjustBridge loadWKWebViewBridge:webView wkWebViewDelegate:self]; + [_adjustBridge loadWKWebViewBridge:webView]; + + if (@available(iOS 16.4, *)) { + [webView setInspectable: YES]; + } else { + // Fallback on earlier versions + } // load remote web page - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://adjustweb.neocities.org"]]; - [webView loadRequest:request]; + // NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://adjustweb.neocities.org"]]; + // [webView loadRequest:request]; // alternative to load web page from local HTML resource - // NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"AdjustExample-WebView" ofType:@"html"]; - // NSString *appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; - // NSURL *baseURL = [NSURL fileURLWithPath:htmlPath]; - // [webView loadHTMLString:appHtml baseURL:baseURL]; + NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"AdjustExample-WebView" ofType:@"html"]; + NSString *appHtml = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; + NSURL *baseURL = [NSURL fileURLWithPath:htmlPath]; + [webView loadHTMLString:appHtml baseURL:baseURL]; } - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler { @@ -58,4 +58,16 @@ - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSStrin [self presentViewController:alertController animated:YES completion:^{}]; } +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + @end + + diff --git a/examples/AdjustExample-iMessage/AdjustExample-iMessage MessagesExtension/MessagesViewController.m b/examples/AdjustExample-iMessage/AdjustExample-iMessage MessagesExtension/MessagesViewController.m index b819b7f27..d4dd18412 100644 --- a/examples/AdjustExample-iMessage/AdjustExample-iMessage MessagesExtension/MessagesViewController.m +++ b/examples/AdjustExample-iMessage/AdjustExample-iMessage MessagesExtension/MessagesViewController.m @@ -6,7 +6,7 @@ // Copyright © 2018-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" +#import #import "MessagesViewController.h" @interface MessagesViewController () @@ -25,27 +25,28 @@ - (void)viewDidLoad { // Configure adjust SDK. NSString *yourAppToken = @"2fm9gkqubvpc"; NSString *environment = ADJEnvironmentSandbox; - ADJConfig *adjustConfig = [ADJConfig configWithAppToken:yourAppToken environment:environment]; - + ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:yourAppToken + environment:environment]; + // Change the log level. [adjustConfig setLogLevel:ADJLogLevelVerbose]; - // Add session callback parameters. - [Adjust addSessionCallbackParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionCallbackParameter:@"sp_key" value:@"sp_value"]; - - // Add session partner parameters. - [Adjust addSessionPartnerParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionPartnerParameter:@"sp_key" value:@"sp_value"]; - - // Remove session callback parameter. - [Adjust removeSessionCallbackParameter:@"sp_key"]; - - // Remove session partner parameter. - [Adjust removeSessionPartnerParameter:@"sp_foo"]; - + // Add global callback parameters. + [Adjust addGlobalCallbackParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalCallbackParameter:@"sp_value" forKey:@"sp_key"]; + + // Add global partner parameters. + [Adjust addGlobalPartnerParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalPartnerParameter:@"sp_value" forKey:@"sp_key"]; + + // Remove global callback parameter. + [Adjust removeGlobalCallbackParameterForKey:@"sp_key"]; + + // Remove global partner parameter. + [Adjust removeGlobalPartnerParameterForKey:@"sp_foo"]; + // Initialise the SDK. - [Adjust appDidLaunch:adjustConfig]; + [Adjust initSdk:adjustConfig]; }); } @@ -106,7 +107,7 @@ -(void)didTransitionToPresentationStyle:(MSMessagesAppPresentationStyle)presenta } - (IBAction)clickTrackSimpleEvent:(id)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:@"g3mfiw"]; + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:@"g3mfiw"]; [Adjust trackEvent:event]; } diff --git a/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/project.pbxproj b/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/project.pbxproj index e1c25160b..89d32d1b9 100644 --- a/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/project.pbxproj @@ -3,55 +3,19 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 0A4FE7B32AD6A14C0085338A /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7AD2AD6A14C0085338A /* ADJPurchase.m */; }; - 0A4FE7B42AD6A14C0085338A /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7B12AD6A14C0085338A /* ADJPurchaseVerificationHandler.m */; }; - 0A4FE7B52AD6A14C0085338A /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7B22AD6A14C0085338A /* ADJPurchaseVerificationResult.m */; }; - 6F84514A25B1B1F40004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84514825B1B1F40004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB78BC2636DDAF00773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78BA2636DDAE00773869 /* ADJLinkResolution.m */; }; - 6FBEE91A24E4218C00FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE91824E4218B00FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584DB02C3EA8AE0071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DAE2C3EA8AE0071A651 /* AdjustSigSdk.xcframework */; }; + 0A584DB12C3EA8AE0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DAE2C3EA8AE0071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0A584DB22C3EA8AE0071A651 /* libAdjust.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DAF2C3EA8AE0071A651 /* libAdjust.a */; }; 9D01676920FF812B0029CFFF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D01676820FF812B0029CFFF /* Assets.xcassets */; }; - 9D01677020FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 9D01676F20FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 9D01677020FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 9D01676F20FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 9D01677520FF812B0029CFFF /* Messages.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D01677420FF812B0029CFFF /* Messages.framework */; }; 9D01677920FF812B0029CFFF /* MessagesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01677820FF812B0029CFFF /* MessagesViewController.m */; }; 9D01677C20FF812B0029CFFF /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D01677A20FF812B0029CFFF /* MainInterface.storyboard */; }; 9D01677E20FF812C0029CFFF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9D01677D20FF812C0029CFFF /* Assets.xcassets */; }; - 9D01685720FF88F60029CFFF /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01681420FF88F60029CFFF /* ADJTimerOnce.m */; }; - 9D01685820FF88F60029CFFF /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01681520FF88F60029CFFF /* ADJAttributionHandler.m */; }; - 9D01685920FF88F60029CFFF /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01681820FF88F60029CFFF /* ADJRequestHandler.m */; }; - 9D01685B20FF88F60029CFFF /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01681C20FF88F60029CFFF /* ADJSdkClickHandler.m */; }; - 9D01685C20FF88F60029CFFF /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01681E20FF88F60029CFFF /* ADJEvent.m */; }; - 9D01685D20FF88F60029CFFF /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682220FF88F60029CFFF /* ADJSessionSuccess.m */; }; - 9D01685E20FF88F60029CFFF /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682320FF88F60029CFFF /* ADJEventFailure.m */; }; - 9D01685F20FF88F60029CFFF /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682520FF88F60029CFFF /* ADJEventSuccess.m */; }; - 9D01686020FF88F60029CFFF /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682620FF88F60029CFFF /* ADJActivityState.m */; }; - 9D01686120FF88F60029CFFF /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682720FF88F60029CFFF /* ADJSessionFailure.m */; }; - 9D01686220FF88F60029CFFF /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682B20FF88F60029CFFF /* ADJTimerCycle.m */; }; - 9D01686320FF88F60029CFFF /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682C20FF88F60029CFFF /* ADJSessionParameters.m */; }; - 9D01686420FF88F60029CFFF /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682D20FF88F60029CFFF /* ADJLogger.m */; }; - 9D01686520FF88F60029CFFF /* ADJBackoffStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01682E20FF88F60029CFFF /* ADJBackoffStrategy.m */; }; - 9D01686620FF88F60029CFFF /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683020FF88F60029CFFF /* Adjust.m */; }; - 9D01686720FF88F60029CFFF /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683420FF88F60029CFFF /* ADJConfig.m */; }; - 9D01686820FF88F60029CFFF /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683520FF88F60029CFFF /* ADJPackageHandler.m */; }; - 9D01686920FF88F60029CFFF /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683820FF88F60029CFFF /* ADJActivityKind.m */; }; - 9D01686A20FF88F60029CFFF /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683B20FF88F60029CFFF /* NSString+ADJAdditions.m */; }; - 9D01686B20FF88F60029CFFF /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01683D20FF88F60029CFFF /* NSData+ADJAdditions.m */; }; - 9D01686D20FF88F60029CFFF /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684120FF88F60029CFFF /* ADJAttribution.m */; }; - 9D01686F20FF88F60029CFFF /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684420FF88F60029CFFF /* ADJActivityPackage.m */; }; - 9D01687020FF88F60029CFFF /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684520FF88F60029CFFF /* ADJUtil.m */; }; - 9D01687120FF88F60029CFFF /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684820FF88F60029CFFF /* ADJAdjustFactory.m */; }; - 9D01687220FF88F60029CFFF /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684B20FF88F60029CFFF /* ADJResponseData.m */; }; - 9D01687320FF88F60029CFFF /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684D20FF88F60029CFFF /* ADJPackageBuilder.m */; }; - 9D01687420FF88F60029CFFF /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01684E20FF88F60029CFFF /* ADJUserDefaults.m */; }; - 9D01687620FF88F60029CFFF /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D01685420FF88F60029CFFF /* ADJActivityHandler.m */; }; - 9D2F241A2447DE4700B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F24192447DE4700B7CA90 /* ADJSubscription.m */; }; - 9D3A2AE72626518E00BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AE62626518E00BD6E44 /* ADJAdRevenue.m */; }; - 9D49D177290FEC2000042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D176290FEC2000042345 /* ADJSKAdNetwork.m */; }; - 9DF38246260E9E2A0033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF38245260E9E2A0033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92DA82630EFC1000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92DA62630EFC0000FC3FC /* ADJPackageParams.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -65,32 +29,33 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 9D01678520FF812C0029CFFF /* Embed App Extensions */ = { + 0A584DB32C3EA8AE0071A651 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0A584DB12C3EA8AE0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 9D01678520FF812C0029CFFF /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( - 9D01677020FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex in Embed App Extensions */, + 9D01677020FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension.appex in Embed Foundation Extensions */, ); - name = "Embed App Extensions"; + name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A4FE7AD2AD6A14C0085338A /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 0A4FE7AE2AD6A14C0085338A /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0A4FE7AF2AD6A14C0085338A /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0A4FE7B02AD6A14C0085338A /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0A4FE7B12AD6A14C0085338A /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0A4FE7B22AD6A14C0085338A /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 6F84514825B1B1F40004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6F84514925B1B1F40004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6FAB78BA2636DDAE00773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FAB78BB2636DDAE00773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FBEE91824E4218B00FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; - 6FBEE91924E4218B00FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; + 0A584DAE2C3EA8AE0071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; + 0A584DAF2C3EA8AE0071A651 /* libAdjust.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjust.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9D01676520FF81280029CFFF /* AdjustExample-iMessage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-iMessage.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 9D01676820FF812B0029CFFF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 9D01676A20FF812B0029CFFF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -101,72 +66,6 @@ 9D01677B20FF812B0029CFFF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 9D01677D20FF812C0029CFFF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 9D01677F20FF812C0029CFFF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9D01681220FF88F60029CFFF /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; - 9D01681420FF88F60029CFFF /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9D01681520FF88F60029CFFF /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9D01681620FF88F60029CFFF /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9D01681720FF88F60029CFFF /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9D01681820FF88F60029CFFF /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9D01681A20FF88F60029CFFF /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9D01681C20FF88F60029CFFF /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9D01681D20FF88F60029CFFF /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9D01681E20FF88F60029CFFF /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9D01681F20FF88F60029CFFF /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9D01682020FF88F60029CFFF /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9D01682120FF88F60029CFFF /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9D01682220FF88F60029CFFF /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9D01682320FF88F60029CFFF /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9D01682420FF88F60029CFFF /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9D01682520FF88F60029CFFF /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9D01682620FF88F60029CFFF /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9D01682720FF88F60029CFFF /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9D01682820FF88F60029CFFF /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9D01682A20FF88F60029CFFF /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9D01682B20FF88F60029CFFF /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9D01682C20FF88F60029CFFF /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9D01682D20FF88F60029CFFF /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9D01682E20FF88F60029CFFF /* ADJBackoffStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJBackoffStrategy.m; sourceTree = ""; }; - 9D01682F20FF88F60029CFFF /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9D01683020FF88F60029CFFF /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9D01683120FF88F60029CFFF /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9D01683220FF88F60029CFFF /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9D01683420FF88F60029CFFF /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; - 9D01683520FF88F60029CFFF /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9D01683620FF88F60029CFFF /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9D01683720FF88F60029CFFF /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9D01683820FF88F60029CFFF /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9D01683B20FF88F60029CFFF /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9D01683D20FF88F60029CFFF /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9D01683E20FF88F60029CFFF /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9D01684020FF88F60029CFFF /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9D01684120FF88F60029CFFF /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9D01684320FF88F60029CFFF /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9D01684420FF88F60029CFFF /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9D01684520FF88F60029CFFF /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9D01684620FF88F60029CFFF /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9D01684720FF88F60029CFFF /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9D01684820FF88F60029CFFF /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9D01684920FF88F60029CFFF /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9D01684A20FF88F60029CFFF /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9D01684B20FF88F60029CFFF /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9D01684C20FF88F60029CFFF /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9D01684D20FF88F60029CFFF /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9D01684E20FF88F60029CFFF /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9D01684F20FF88F60029CFFF /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 9D01685020FF88F60029CFFF /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9D01685120FF88F60029CFFF /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9D01685320FF88F60029CFFF /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9D01685420FF88F60029CFFF /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9D2F24182447DE4700B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D2F24192447DE4700B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D3A2AE52626518E00BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AE62626518E00BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D49D175290FEC2000042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D176290FEC2000042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; - 9DF38244260E9E2A0033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF38245260E9E2A0033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF92DA62630EFC0000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; - 9DF92DA72630EFC0000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -175,6 +74,8 @@ buildActionMask = 2147483647; files = ( 9D01677520FF812B0029CFFF /* Messages.framework in Frameworks */, + 0A584DB22C3EA8AE0071A651 /* libAdjust.a in Frameworks */, + 0A584DB02C3EA8AE0071A651 /* AdjustSigSdk.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -212,6 +113,8 @@ 9D01677320FF812B0029CFFF /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584DAE2C3EA8AE0071A651 /* AdjustSigSdk.xcframework */, + 0A584DAF2C3EA8AE0071A651 /* libAdjust.a */, 9D01677420FF812B0029CFFF /* Messages.framework */, ); name = Frameworks; @@ -220,7 +123,6 @@ 9D01677620FF812B0029CFFF /* AdjustExample-iMessage MessagesExtension */ = { isa = PBXGroup; children = ( - 9D01681120FF88F60029CFFF /* Adjust */, 9D01677720FF812B0029CFFF /* MessagesViewController.h */, 9D01677820FF812B0029CFFF /* MessagesViewController.m */, 9D01677A20FF812B0029CFFF /* MainInterface.storyboard */, @@ -230,100 +132,6 @@ path = "AdjustExample-iMessage MessagesExtension"; sourceTree = ""; }; - 9D01681120FF88F60029CFFF /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D01681220FF88F60029CFFF /* ADJConfig.h */, - 9D01681420FF88F60029CFFF /* ADJTimerOnce.m */, - 9D01681520FF88F60029CFFF /* ADJAttributionHandler.m */, - 9D01681620FF88F60029CFFF /* Adjust.h */, - 9D01681720FF88F60029CFFF /* ADJActivityPackage.h */, - 9D01681820FF88F60029CFFF /* ADJRequestHandler.m */, - 9D01681A20FF88F60029CFFF /* ADJAttribution.h */, - 9D01681C20FF88F60029CFFF /* ADJSdkClickHandler.m */, - 9D01681D20FF88F60029CFFF /* ADJActivityKind.h */, - 9D01681E20FF88F60029CFFF /* ADJEvent.m */, - 9D01681F20FF88F60029CFFF /* ADJPackageHandler.h */, - 9D01682020FF88F60029CFFF /* ADJPackageBuilder.h */, - 9D01682120FF88F60029CFFF /* ADJResponseData.h */, - 9D01682220FF88F60029CFFF /* ADJSessionSuccess.m */, - 9D01682320FF88F60029CFFF /* ADJEventFailure.m */, - 9D01682420FF88F60029CFFF /* ADJAdjustFactory.h */, - 9D01682520FF88F60029CFFF /* ADJEventSuccess.m */, - 9D01682620FF88F60029CFFF /* ADJActivityState.m */, - 9D01682720FF88F60029CFFF /* ADJSessionFailure.m */, - 9D01682820FF88F60029CFFF /* ADJUtil.h */, - 9D01682A20FF88F60029CFFF /* ADJActivityHandler.h */, - 9D01682B20FF88F60029CFFF /* ADJTimerCycle.m */, - 9D01682C20FF88F60029CFFF /* ADJSessionParameters.m */, - 9D01682D20FF88F60029CFFF /* ADJLogger.m */, - 9D01682E20FF88F60029CFFF /* ADJBackoffStrategy.m */, - 9D01682F20FF88F60029CFFF /* ADJUserDefaults.h */, - 9D01683020FF88F60029CFFF /* Adjust.m */, - 9D01683120FF88F60029CFFF /* ADJAttributionHandler.h */, - 9D01683220FF88F60029CFFF /* ADJTimerOnce.h */, - 9D01683420FF88F60029CFFF /* ADJConfig.m */, - 9D01683520FF88F60029CFFF /* ADJPackageHandler.m */, - 9D01683620FF88F60029CFFF /* ADJEvent.h */, - 9D01683720FF88F60029CFFF /* ADJSdkClickHandler.h */, - 9D01683820FF88F60029CFFF /* ADJActivityKind.m */, - 9D01683A20FF88F60029CFFF /* ADJAdditions */, - 9D01684120FF88F60029CFFF /* ADJAttribution.m */, - 9D01684320FF88F60029CFFF /* ADJRequestHandler.h */, - 9D01684420FF88F60029CFFF /* ADJActivityPackage.m */, - 9D01684520FF88F60029CFFF /* ADJUtil.m */, - 9D01684620FF88F60029CFFF /* ADJSessionFailure.h */, - 9D01684720FF88F60029CFFF /* ADJActivityState.h */, - 9D01684820FF88F60029CFFF /* ADJAdjustFactory.m */, - 9D01684920FF88F60029CFFF /* ADJEventSuccess.h */, - 9D01684A20FF88F60029CFFF /* ADJEventFailure.h */, - 9D01684B20FF88F60029CFFF /* ADJResponseData.m */, - 9D01684C20FF88F60029CFFF /* ADJSessionSuccess.h */, - 9D01684D20FF88F60029CFFF /* ADJPackageBuilder.m */, - 9D01684E20FF88F60029CFFF /* ADJUserDefaults.m */, - 9D01684F20FF88F60029CFFF /* ADJBackoffStrategy.h */, - 9D01685020FF88F60029CFFF /* ADJLogger.h */, - 9D01685120FF88F60029CFFF /* ADJSessionParameters.h */, - 9D01685320FF88F60029CFFF /* ADJTimerCycle.h */, - 9D01685420FF88F60029CFFF /* ADJActivityHandler.m */, - 9D2F24182447DE4700B7CA90 /* ADJSubscription.h */, - 9D2F24192447DE4700B7CA90 /* ADJSubscription.m */, - 6FBEE91924E4218B00FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE91824E4218B00FEF3F1 /* ADJUrlStrategy.m */, - 6F84514925B1B1F40004C7C0 /* ADJThirdPartySharing.h */, - 6F84514825B1B1F40004C7C0 /* ADJThirdPartySharing.m */, - 9D3A2AE52626518E00BD6E44 /* ADJAdRevenue.h */, - 9D3A2AE62626518E00BD6E44 /* ADJAdRevenue.m */, - 9DF92DA72630EFC0000FC3FC /* ADJPackageParams.h */, - 9DF92DA62630EFC0000FC3FC /* ADJPackageParams.m */, - 6FAB78BB2636DDAE00773869 /* ADJLinkResolution.h */, - 6FAB78BA2636DDAE00773869 /* ADJLinkResolution.m */, - 9D49D175290FEC2000042345 /* ADJSKAdNetwork.h */, - 9D49D176290FEC2000042345 /* ADJSKAdNetwork.m */, - 0A4FE7AE2AD6A14C0085338A /* ADJPurchase.h */, - 0A4FE7AD2AD6A14C0085338A /* ADJPurchase.m */, - 0A4FE7AF2AD6A14C0085338A /* ADJPurchaseVerificationHandler.h */, - 0A4FE7B12AD6A14C0085338A /* ADJPurchaseVerificationHandler.m */, - 0A4FE7B02AD6A14C0085338A /* ADJPurchaseVerificationResult.h */, - 0A4FE7B22AD6A14C0085338A /* ADJPurchaseVerificationResult.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 9D01683A20FF88F60029CFFF /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF38244260E9E2A0033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF38245260E9E2A0033F5A1 /* NSNumber+ADJAdditions.m */, - 9D01683B20FF88F60029CFFF /* NSString+ADJAdditions.m */, - 9D01683D20FF88F60029CFFF /* NSData+ADJAdditions.m */, - 9D01683E20FF88F60029CFFF /* NSData+ADJAdditions.h */, - 9D01684020FF88F60029CFFF /* NSString+ADJAdditions.h */, - ); - path = ADJAdditions; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -332,7 +140,7 @@ buildConfigurationList = 9D01678620FF812C0029CFFF /* Build configuration list for PBXNativeTarget "AdjustExample-iMessage" */; buildPhases = ( 9D01676320FF81280029CFFF /* Resources */, - 9D01678520FF812C0029CFFF /* Embed App Extensions */, + 9D01678520FF812C0029CFFF /* Embed Foundation Extensions */, ); buildRules = ( ); @@ -351,6 +159,7 @@ 9D01676B20FF812B0029CFFF /* Sources */, 9D01676C20FF812B0029CFFF /* Frameworks */, 9D01676D20FF812B0029CFFF /* Resources */, + 0A584DB32C3EA8AE0071A651 /* Embed Frameworks */, ); buildRules = ( ); @@ -367,7 +176,8 @@ 9D01675F20FF81280029CFFF /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 9D01676420FF81280029CFFF = { @@ -422,46 +232,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DF92DA82630EFC1000FC3FC /* ADJPackageParams.m in Sources */, - 9D01685820FF88F60029CFFF /* ADJAttributionHandler.m in Sources */, - 9D01686120FF88F60029CFFF /* ADJSessionFailure.m in Sources */, - 9D01686520FF88F60029CFFF /* ADJBackoffStrategy.m in Sources */, 9D01677920FF812B0029CFFF /* MessagesViewController.m in Sources */, - 9D01686F20FF88F60029CFFF /* ADJActivityPackage.m in Sources */, - 9D01686920FF88F60029CFFF /* ADJActivityKind.m in Sources */, - 9D01685F20FF88F60029CFFF /* ADJEventSuccess.m in Sources */, - 9D01685920FF88F60029CFFF /* ADJRequestHandler.m in Sources */, - 0A4FE7B42AD6A14C0085338A /* ADJPurchaseVerificationHandler.m in Sources */, - 9D01686420FF88F60029CFFF /* ADJLogger.m in Sources */, - 9D01687020FF88F60029CFFF /* ADJUtil.m in Sources */, - 9D01685B20FF88F60029CFFF /* ADJSdkClickHandler.m in Sources */, - 9D01687620FF88F60029CFFF /* ADJActivityHandler.m in Sources */, - 9D01686720FF88F60029CFFF /* ADJConfig.m in Sources */, - 6FBEE91A24E4218C00FEF3F1 /* ADJUrlStrategy.m in Sources */, - 6FAB78BC2636DDAF00773869 /* ADJLinkResolution.m in Sources */, - 9D01686A20FF88F60029CFFF /* NSString+ADJAdditions.m in Sources */, - 6F84514A25B1B1F40004C7C0 /* ADJThirdPartySharing.m in Sources */, - 9D01687120FF88F60029CFFF /* ADJAdjustFactory.m in Sources */, - 9D01687220FF88F60029CFFF /* ADJResponseData.m in Sources */, - 9D01686020FF88F60029CFFF /* ADJActivityState.m in Sources */, - 9D01687420FF88F60029CFFF /* ADJUserDefaults.m in Sources */, - 9D01686820FF88F60029CFFF /* ADJPackageHandler.m in Sources */, - 9D01685E20FF88F60029CFFF /* ADJEventFailure.m in Sources */, - 9D3A2AE72626518E00BD6E44 /* ADJAdRevenue.m in Sources */, - 9D01685720FF88F60029CFFF /* ADJTimerOnce.m in Sources */, - 0A4FE7B32AD6A14C0085338A /* ADJPurchase.m in Sources */, - 9D01686220FF88F60029CFFF /* ADJTimerCycle.m in Sources */, - 9D01686D20FF88F60029CFFF /* ADJAttribution.m in Sources */, - 0A4FE7B52AD6A14C0085338A /* ADJPurchaseVerificationResult.m in Sources */, - 9D01686320FF88F60029CFFF /* ADJSessionParameters.m in Sources */, - 9D01686B20FF88F60029CFFF /* NSData+ADJAdditions.m in Sources */, - 9D01685C20FF88F60029CFFF /* ADJEvent.m in Sources */, - 9D01687320FF88F60029CFFF /* ADJPackageBuilder.m in Sources */, - 9D2F241A2447DE4700B7CA90 /* ADJSubscription.m in Sources */, - 9DF38246260E9E2A0033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 9D01686620FF88F60029CFFF /* Adjust.m in Sources */, - 9D49D177290FEC2000042345 /* ADJSKAdNetwork.m in Sources */, - 9D01685D20FF88F60029CFFF /* ADJSessionSuccess.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -525,6 +296,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -539,7 +311,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -584,6 +356,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 = gnu11; GCC_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -593,7 +366,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -612,7 +385,7 @@ "ADJUST_IM=1", ); INFOPLIST_FILE = "AdjustExample-iMessage MessagesExtension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -634,7 +407,7 @@ DEVELOPMENT_TEAM = QGUGW9AUMK; GCC_PREPROCESSOR_DEFINITIONS = "ADJUST_IM=1"; INFOPLIST_FILE = "AdjustExample-iMessage MessagesExtension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -655,6 +428,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = "AdjustExample-iMessage/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -669,6 +443,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QGUGW9AUMK; INFOPLIST_FILE = "AdjustExample-iMessage/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/xcshareddata/xcschemes/AdjustExample-iMessage MessagesExtension.xcscheme b/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/xcshareddata/xcschemes/AdjustExample-iMessage MessagesExtension.xcscheme index aa5f2bfcb..e40047fbd 100644 --- a/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/xcshareddata/xcschemes/AdjustExample-iMessage MessagesExtension.xcscheme +++ b/examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/xcshareddata/xcschemes/AdjustExample-iMessage MessagesExtension.xcscheme @@ -1,6 +1,6 @@ -@class AdjustDelegate; +@protocol AdjustDelegate; @interface AdjustTrackingHelper : NSObject diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AdjustTrackingHelper.m b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AdjustTrackingHelper.m index d154508ae..5b6a85278 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AdjustTrackingHelper.m +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AdjustTrackingHelper.m @@ -7,9 +7,8 @@ // #import - -#import "Adjust.h" #import "AdjustTrackingHelper.h" +#import @implementation AdjustTrackingHelper @@ -25,40 +24,29 @@ + (id)sharedInstance { } - (void)initialize:(NSObject *)delegate { - NSString *yourAppToken = @"{YourAppToken}"; + NSString *yourAppToken = @"2fm9gkqubvpc"; NSString *environment = ADJEnvironmentSandbox; - ADJConfig *adjustConfig = [ADJConfig configWithAppToken:yourAppToken environment:environment]; - + ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:yourAppToken + environment:environment]; + // Change the log level. [adjustConfig setLogLevel:ADJLogLevelVerbose]; - // Enable event buffering. - // [adjustConfig setEventBufferingEnabled:YES]; - - // Set default tracker. - // [adjustConfig setDefaultTracker:@"{TrackerToken}"]; - // Set an attribution delegate. [adjustConfig setDelegate:delegate]; - [Adjust appDidLaunch:adjustConfig]; - - // Put the SDK in offline mode. - // [Adjust setOfflineMode:YES]; - - // Disable the SDK. - // [Adjust setEnabled:NO]; + [Adjust initSdk:adjustConfig]; } - (void)trackSimpleEvent { - ADJEvent *event = [ADJEvent eventWithEventToken:@"{YourEventToken}"]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:@"g3mfiw"]; + [Adjust trackEvent:event]; } - (void)trackRevenueEvent { - ADJEvent *event = [ADJEvent eventWithEventToken:@"{YourEventToken}"]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:@"a4fd35"]; + // Add revenue 15 cent of an euro. [event setRevenue:0.015 currency:@"EUR"]; @@ -66,8 +54,8 @@ - (void)trackRevenueEvent { } - (void)trackCallbackEvent { - ADJEvent *event = [ADJEvent eventWithEventToken:@"{YourEventToken}"]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:@"34vgg9"]; + // Add callback parameters to this event. [event addCallbackParameter:@"key" value:@"value"]; @@ -75,8 +63,8 @@ - (void)trackCallbackEvent { } - (void)trackPartnerEvent { - ADJEvent *event = [ADJEvent eventWithEventToken:@"{YourEventToken}"]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:@"w788qs"]; + // Add partner parameteres to this event. [event addPartnerParameter:@"foo" value:@"bar"]; diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.h b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.h index 5311957de..5cdb008f3 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.h +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.h @@ -7,8 +7,7 @@ // #import - -#import "Adjust.h" +#import @interface AppDelegate : UIResponder diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.m b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.m index 999882cb1..7484cb800 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.m +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch/AppDelegate.m @@ -37,7 +37,7 @@ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDiction // url object contains the deep link // Call the below method to send deep link to Adjust backend - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; return YES; } diff --git a/examples/AdjustExample-iWatch/AdjustExample-iWatch/ViewControllerWatch.m b/examples/AdjustExample-iWatch/AdjustExample-iWatch/ViewControllerWatch.m index 7e6bb3fe1..6a03c44b6 100644 --- a/examples/AdjustExample-iWatch/AdjustExample-iWatch/ViewControllerWatch.m +++ b/examples/AdjustExample-iWatch/AdjustExample-iWatch/ViewControllerWatch.m @@ -6,7 +6,6 @@ // Copyright © 2016-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" #import "ViewControllerWatch.h" #import "AdjustTrackingHelper.h" diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj index 9a1c21c68..47b12f6b7 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj @@ -3,57 +3,21 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - 0A4FE7C52AD6A2750085338A /* ADJPurchaseVerificationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7C22AD6A2750085338A /* ADJPurchaseVerificationResult.m */; }; - 0A4FE7C62AD6A2750085338A /* ADJPurchaseVerificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7C32AD6A2750085338A /* ADJPurchaseVerificationHandler.m */; }; - 0A4FE7C72AD6A2750085338A /* ADJPurchase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A4FE7C42AD6A2750085338A /* ADJPurchase.m */; }; - 6F84514125B1B1C80004C7C0 /* ADJThirdPartySharing.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F84513F25B1B1C70004C7C0 /* ADJThirdPartySharing.m */; }; - 6FAB78B32636DD8200773869 /* ADJLinkResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAB78B22636DD8200773869 /* ADJLinkResolution.m */; }; - 6FBEE91424E4214800FEF3F1 /* ADJUrlStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FBEE91324E4214800FEF3F1 /* ADJUrlStrategy.m */; }; + 0A584DA62C3EA7AA0071A651 /* libAdjustSdk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DA52C3EA7AA0071A651 /* libAdjustSdk.a */; }; + 0A584DBB2C3FAB1C0071A651 /* AdjustSigSdk.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DBA2C3FAB1C0071A651 /* AdjustSigSdk.xcframework */; }; + 0A584DBC2C3FAB1C0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0A584DBA2C3FAB1C0071A651 /* AdjustSigSdk.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 963909B71BCC0D8300A2E8A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 963909B61BCC0D8300A2E8A4 /* main.m */; }; 963909BA1BCC0D8300A2E8A4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 963909B91BCC0D8300A2E8A4 /* AppDelegate.m */; }; 963909BD1BCC0D8300A2E8A4 /* ViewControllertvOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 963909BC1BCC0D8300A2E8A4 /* ViewControllertvOS.m */; }; 963909C01BCC0D8300A2E8A4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 963909BE1BCC0D8300A2E8A4 /* Main.storyboard */; }; 963909C21BCC0D8300A2E8A4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 963909C11BCC0D8300A2E8A4 /* Assets.xcassets */; }; 963909D01BCC0DA600A2E8A4 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 963909CF1BCC0DA600A2E8A4 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 9D2F24142447DE1F00B7CA90 /* ADJSubscription.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F24122447DE1E00B7CA90 /* ADJSubscription.m */; }; - 9D3A2AE12626515900BD6E44 /* ADJAdRevenue.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A2AE02626515900BD6E44 /* ADJAdRevenue.m */; }; - 9D449F3F1E6EE6C500E7E80B /* ADJActivityHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449EFE1E6EE6C500E7E80B /* ADJActivityHandler.m */; }; - 9D449F401E6EE6C500E7E80B /* ADJActivityKind.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F001E6EE6C500E7E80B /* ADJActivityKind.m */; }; - 9D449F411E6EE6C500E7E80B /* ADJActivityPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F021E6EE6C500E7E80B /* ADJActivityPackage.m */; }; - 9D449F421E6EE6C500E7E80B /* ADJActivityState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F041E6EE6C500E7E80B /* ADJActivityState.m */; }; - 9D449F431E6EE6C500E7E80B /* NSData+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F071E6EE6C500E7E80B /* NSData+ADJAdditions.m */; }; - 9D449F441E6EE6C500E7E80B /* NSString+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F091E6EE6C500E7E80B /* NSString+ADJAdditions.m */; }; - 9D449F461E6EE6C500E7E80B /* ADJAdjustFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F0D1E6EE6C500E7E80B /* ADJAdjustFactory.m */; }; - 9D449F471E6EE6C500E7E80B /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F0F1E6EE6C500E7E80B /* ADJAttribution.m */; }; - 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 */; }; - 9D449F4D1E6EE6C500E7E80B /* ADJEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F1B1E6EE6C500E7E80B /* ADJEvent.m */; }; - 9D449F4E1E6EE6C500E7E80B /* ADJEventFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F1D1E6EE6C500E7E80B /* ADJEventFailure.m */; }; - 9D449F4F1E6EE6C500E7E80B /* ADJEventSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F1F1E6EE6C500E7E80B /* ADJEventSuccess.m */; }; - 9D449F511E6EE6C500E7E80B /* ADJLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F231E6EE6C500E7E80B /* ADJLogger.m */; }; - 9D449F521E6EE6C500E7E80B /* ADJPackageBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F251E6EE6C500E7E80B /* ADJPackageBuilder.m */; }; - 9D449F531E6EE6C500E7E80B /* ADJPackageHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F271E6EE6C500E7E80B /* ADJPackageHandler.m */; }; - 9D449F541E6EE6C500E7E80B /* ADJRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F291E6EE6C500E7E80B /* ADJRequestHandler.m */; }; - 9D449F551E6EE6C500E7E80B /* ADJResponseData.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F2B1E6EE6C500E7E80B /* ADJResponseData.m */; }; - 9D449F561E6EE6C500E7E80B /* ADJSdkClickHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F2D1E6EE6C500E7E80B /* ADJSdkClickHandler.m */; }; - 9D449F571E6EE6C500E7E80B /* ADJSessionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F2F1E6EE6C500E7E80B /* ADJSessionFailure.m */; }; - 9D449F581E6EE6C500E7E80B /* ADJSessionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F311E6EE6C500E7E80B /* ADJSessionParameters.m */; }; - 9D449F591E6EE6C500E7E80B /* ADJSessionSuccess.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F331E6EE6C500E7E80B /* ADJSessionSuccess.m */; }; - 9D449F5B1E6EE6C500E7E80B /* ADJTimerCycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F371E6EE6C500E7E80B /* ADJTimerCycle.m */; }; - 9D449F5C1E6EE6C500E7E80B /* ADJTimerOnce.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F391E6EE6C500E7E80B /* ADJTimerOnce.m */; }; - 9D449F5D1E6EE6C500E7E80B /* Adjust.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F3B1E6EE6C500E7E80B /* Adjust.m */; }; - 9D449F5E1E6EE6C500E7E80B /* ADJUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D449F3D1E6EE6C500E7E80B /* ADJUtil.m */; }; - 9D49D171290FEBFC00042345 /* ADJSKAdNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D49D170290FEBFC00042345 /* ADJSKAdNetwork.m */; }; 9D5C9632295D96260021602B /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D5C9631295D96260021602B /* StoreKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 9DC95F2F1C10596500138E4B /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC95F2E1C10596500138E4B /* Constants.m */; }; - 9DD0E9CF1F459ECE00B2A759 /* ADJUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0E9CE1F459ECE00B2A759 /* ADJUserDefaults.m */; }; - 9DF3823D260E9E000033F5A1 /* NSNumber+ADJAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF3823C260E9E000033F5A1 /* NSNumber+ADJAdditions.m */; }; - 9DF92DA22630EE75000FC3FC /* ADJPackageParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DF92DA12630EE74000FC3FC /* ADJPackageParams.m */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -63,6 +27,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 0A584DBC2C3FAB1C0071A651 /* AdjustSigSdk.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -70,18 +35,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A4FE7BF2AD6A2750085338A /* ADJPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchase.h; sourceTree = ""; }; - 0A4FE7C02AD6A2750085338A /* ADJPurchaseVerificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationHandler.h; sourceTree = ""; }; - 0A4FE7C12AD6A2750085338A /* ADJPurchaseVerificationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPurchaseVerificationResult.h; sourceTree = ""; }; - 0A4FE7C22AD6A2750085338A /* ADJPurchaseVerificationResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationResult.m; sourceTree = ""; }; - 0A4FE7C32AD6A2750085338A /* ADJPurchaseVerificationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchaseVerificationHandler.m; sourceTree = ""; }; - 0A4FE7C42AD6A2750085338A /* ADJPurchase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPurchase.m; sourceTree = ""; }; - 6F84513F25B1B1C70004C7C0 /* ADJThirdPartySharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJThirdPartySharing.m; sourceTree = ""; }; - 6F84514025B1B1C80004C7C0 /* ADJThirdPartySharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJThirdPartySharing.h; sourceTree = ""; }; - 6FAB78B12636DD8200773869 /* ADJLinkResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLinkResolution.h; sourceTree = ""; }; - 6FAB78B22636DD8200773869 /* ADJLinkResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLinkResolution.m; sourceTree = ""; }; - 6FBEE91224E4214800FEF3F1 /* ADJUrlStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUrlStrategy.h; sourceTree = ""; }; - 6FBEE91324E4214800FEF3F1 /* ADJUrlStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUrlStrategy.m; sourceTree = ""; }; + 0A584DA52C3EA7AA0071A651 /* libAdjustSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libAdjustSdk.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A584DBA2C3FAB1C0071A651 /* AdjustSigSdk.xcframework */ = {isa = PBXFileReference; expectedSignature = "AppleDeveloperProgram:QGUGW9AUMK:adeven GmbH"; lastKnownFileType = wrapper.xcframework; name = AdjustSigSdk.xcframework; path = ../../AdjustSignature/AdjustSigSdk.xcframework; sourceTree = ""; }; 963909B21BCC0D8300A2E8A4 /* AdjustExample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AdjustExample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 963909B61BCC0D8300A2E8A4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 963909B81BCC0D8300A2E8A4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -92,75 +47,9 @@ 963909C11BCC0D8300A2E8A4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 963909C31BCC0D8300A2E8A4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 963909CF1BCC0DA600A2E8A4 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; - 9D2F24122447DE1E00B7CA90 /* ADJSubscription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSubscription.m; sourceTree = ""; }; - 9D2F24132447DE1F00B7CA90 /* ADJSubscription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSubscription.h; sourceTree = ""; }; - 9D3A2ADF2626515900BD6E44 /* ADJAdRevenue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdRevenue.h; sourceTree = ""; }; - 9D3A2AE02626515900BD6E44 /* ADJAdRevenue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdRevenue.m; sourceTree = ""; }; - 9D449EFD1E6EE6C400E7E80B /* ADJActivityHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityHandler.h; sourceTree = ""; }; - 9D449EFE1E6EE6C500E7E80B /* ADJActivityHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityHandler.m; sourceTree = ""; }; - 9D449EFF1E6EE6C500E7E80B /* ADJActivityKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityKind.h; sourceTree = ""; }; - 9D449F001E6EE6C500E7E80B /* ADJActivityKind.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityKind.m; sourceTree = ""; }; - 9D449F011E6EE6C500E7E80B /* ADJActivityPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityPackage.h; sourceTree = ""; }; - 9D449F021E6EE6C500E7E80B /* ADJActivityPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityPackage.m; sourceTree = ""; }; - 9D449F031E6EE6C500E7E80B /* ADJActivityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJActivityState.h; sourceTree = ""; }; - 9D449F041E6EE6C500E7E80B /* ADJActivityState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJActivityState.m; sourceTree = ""; }; - 9D449F061E6EE6C500E7E80B /* NSData+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ADJAdditions.h"; sourceTree = ""; }; - 9D449F071E6EE6C500E7E80B /* NSData+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ADJAdditions.m"; sourceTree = ""; }; - 9D449F081E6EE6C500E7E80B /* NSString+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ADJAdditions.h"; sourceTree = ""; }; - 9D449F091E6EE6C500E7E80B /* NSString+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ADJAdditions.m"; sourceTree = ""; }; - 9D449F0C1E6EE6C500E7E80B /* ADJAdjustFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAdjustFactory.h; sourceTree = ""; }; - 9D449F0D1E6EE6C500E7E80B /* ADJAdjustFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAdjustFactory.m; sourceTree = ""; }; - 9D449F0E1E6EE6C500E7E80B /* ADJAttribution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttribution.h; sourceTree = ""; }; - 9D449F0F1E6EE6C500E7E80B /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; - 9D449F101E6EE6C500E7E80B /* ADJAttributionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJAttributionHandler.h; sourceTree = ""; }; - 9D449F111E6EE6C500E7E80B /* ADJAttributionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttributionHandler.m; sourceTree = ""; }; - 9D449F121E6EE6C500E7E80B /* ADJBackoffStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJBackoffStrategy.h; sourceTree = ""; }; - 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 = ""; }; - 9D449F1A1E6EE6C500E7E80B /* ADJEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEvent.h; sourceTree = ""; }; - 9D449F1B1E6EE6C500E7E80B /* ADJEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEvent.m; sourceTree = ""; }; - 9D449F1C1E6EE6C500E7E80B /* ADJEventFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventFailure.h; sourceTree = ""; }; - 9D449F1D1E6EE6C500E7E80B /* ADJEventFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventFailure.m; sourceTree = ""; }; - 9D449F1E1E6EE6C500E7E80B /* ADJEventSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJEventSuccess.h; sourceTree = ""; }; - 9D449F1F1E6EE6C500E7E80B /* ADJEventSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJEventSuccess.m; sourceTree = ""; }; - 9D449F221E6EE6C500E7E80B /* ADJLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJLogger.h; sourceTree = ""; }; - 9D449F231E6EE6C500E7E80B /* ADJLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJLogger.m; sourceTree = ""; }; - 9D449F241E6EE6C500E7E80B /* ADJPackageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageBuilder.h; sourceTree = ""; }; - 9D449F251E6EE6C500E7E80B /* ADJPackageBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageBuilder.m; sourceTree = ""; }; - 9D449F261E6EE6C500E7E80B /* ADJPackageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageHandler.h; sourceTree = ""; }; - 9D449F271E6EE6C500E7E80B /* ADJPackageHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageHandler.m; sourceTree = ""; }; - 9D449F281E6EE6C500E7E80B /* ADJRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJRequestHandler.h; sourceTree = ""; }; - 9D449F291E6EE6C500E7E80B /* ADJRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJRequestHandler.m; sourceTree = ""; }; - 9D449F2A1E6EE6C500E7E80B /* ADJResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJResponseData.h; sourceTree = ""; }; - 9D449F2B1E6EE6C500E7E80B /* ADJResponseData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJResponseData.m; sourceTree = ""; }; - 9D449F2C1E6EE6C500E7E80B /* ADJSdkClickHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSdkClickHandler.h; sourceTree = ""; }; - 9D449F2D1E6EE6C500E7E80B /* ADJSdkClickHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSdkClickHandler.m; sourceTree = ""; }; - 9D449F2E1E6EE6C500E7E80B /* ADJSessionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionFailure.h; sourceTree = ""; }; - 9D449F2F1E6EE6C500E7E80B /* ADJSessionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionFailure.m; sourceTree = ""; }; - 9D449F301E6EE6C500E7E80B /* ADJSessionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionParameters.h; sourceTree = ""; }; - 9D449F311E6EE6C500E7E80B /* ADJSessionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionParameters.m; sourceTree = ""; }; - 9D449F321E6EE6C500E7E80B /* ADJSessionSuccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSessionSuccess.h; sourceTree = ""; }; - 9D449F331E6EE6C500E7E80B /* ADJSessionSuccess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSessionSuccess.m; sourceTree = ""; }; - 9D449F361E6EE6C500E7E80B /* ADJTimerCycle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerCycle.h; sourceTree = ""; }; - 9D449F371E6EE6C500E7E80B /* ADJTimerCycle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerCycle.m; sourceTree = ""; }; - 9D449F381E6EE6C500E7E80B /* ADJTimerOnce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJTimerOnce.h; sourceTree = ""; }; - 9D449F391E6EE6C500E7E80B /* ADJTimerOnce.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJTimerOnce.m; sourceTree = ""; }; - 9D449F3A1E6EE6C500E7E80B /* Adjust.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adjust.h; sourceTree = ""; }; - 9D449F3B1E6EE6C500E7E80B /* Adjust.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Adjust.m; sourceTree = ""; }; - 9D449F3C1E6EE6C500E7E80B /* ADJUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUtil.h; sourceTree = ""; }; - 9D449F3D1E6EE6C500E7E80B /* ADJUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUtil.m; sourceTree = ""; }; - 9D49D16F290FEBFC00042345 /* ADJSKAdNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJSKAdNetwork.h; sourceTree = ""; }; - 9D49D170290FEBFC00042345 /* ADJSKAdNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJSKAdNetwork.m; sourceTree = ""; }; 9D5C9631295D96260021602B /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 9DC95F2D1C10596500138E4B /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = ""; }; 9DC95F2E1C10596500138E4B /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Constants.m; sourceTree = ""; }; - 9DD0E9CD1F459ECE00B2A759 /* ADJUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJUserDefaults.h; sourceTree = ""; }; - 9DD0E9CE1F459ECE00B2A759 /* ADJUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJUserDefaults.m; sourceTree = ""; }; - 9DF3823B260E9E000033F5A1 /* NSNumber+ADJAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+ADJAdditions.h"; sourceTree = ""; }; - 9DF3823C260E9E000033F5A1 /* NSNumber+ADJAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+ADJAdditions.m"; sourceTree = ""; }; - 9DF92DA02630EE74000FC3FC /* ADJPackageParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJPackageParams.h; sourceTree = ""; }; - 9DF92DA12630EE74000FC3FC /* ADJPackageParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJPackageParams.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -170,6 +59,8 @@ files = ( 963909D01BCC0DA600A2E8A4 /* AdSupport.framework in Frameworks */, 9D5C9632295D96260021602B /* StoreKit.framework in Frameworks */, + 0A584DA62C3EA7AA0071A651 /* libAdjustSdk.a in Frameworks */, + 0A584DBB2C3FAB1C0071A651 /* AdjustSigSdk.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -213,110 +104,17 @@ 963909B51BCC0D8300A2E8A4 /* Supporting Files */ = { isa = PBXGroup; children = ( - 9D449EFC1E6EE6C400E7E80B /* Adjust */, 9DF7ACCA1CB50DB700D3591F /* Frameworks */, 963909B61BCC0D8300A2E8A4 /* main.m */, ); name = "Supporting Files"; sourceTree = ""; }; - 9D449EFC1E6EE6C400E7E80B /* Adjust */ = { - isa = PBXGroup; - children = ( - 9D449F051E6EE6C500E7E80B /* ADJAdditions */, - 9D449EFD1E6EE6C400E7E80B /* ADJActivityHandler.h */, - 9D449EFE1E6EE6C500E7E80B /* ADJActivityHandler.m */, - 9D449EFF1E6EE6C500E7E80B /* ADJActivityKind.h */, - 9D449F001E6EE6C500E7E80B /* ADJActivityKind.m */, - 9D449F011E6EE6C500E7E80B /* ADJActivityPackage.h */, - 9D449F021E6EE6C500E7E80B /* ADJActivityPackage.m */, - 9D449F031E6EE6C500E7E80B /* ADJActivityState.h */, - 9D449F041E6EE6C500E7E80B /* ADJActivityState.m */, - 9D449F0C1E6EE6C500E7E80B /* ADJAdjustFactory.h */, - 9D449F0D1E6EE6C500E7E80B /* ADJAdjustFactory.m */, - 9D3A2ADF2626515900BD6E44 /* ADJAdRevenue.h */, - 9D3A2AE02626515900BD6E44 /* ADJAdRevenue.m */, - 9D449F0E1E6EE6C500E7E80B /* ADJAttribution.h */, - 9D449F0F1E6EE6C500E7E80B /* ADJAttribution.m */, - 9D449F101E6EE6C500E7E80B /* ADJAttributionHandler.h */, - 9D449F111E6EE6C500E7E80B /* ADJAttributionHandler.m */, - 9D449F121E6EE6C500E7E80B /* ADJBackoffStrategy.h */, - 9D449F131E6EE6C500E7E80B /* ADJBackoffStrategy.m */, - 9D449F141E6EE6C500E7E80B /* ADJConfig.h */, - 9D449F151E6EE6C500E7E80B /* ADJConfig.m */, - 9D449F1A1E6EE6C500E7E80B /* ADJEvent.h */, - 9D449F1B1E6EE6C500E7E80B /* ADJEvent.m */, - 9D449F1C1E6EE6C500E7E80B /* ADJEventFailure.h */, - 9D449F1D1E6EE6C500E7E80B /* ADJEventFailure.m */, - 9D449F1E1E6EE6C500E7E80B /* ADJEventSuccess.h */, - 9D449F1F1E6EE6C500E7E80B /* ADJEventSuccess.m */, - 6FAB78B12636DD8200773869 /* ADJLinkResolution.h */, - 6FAB78B22636DD8200773869 /* ADJLinkResolution.m */, - 9D449F221E6EE6C500E7E80B /* ADJLogger.h */, - 9D449F231E6EE6C500E7E80B /* ADJLogger.m */, - 9D449F241E6EE6C500E7E80B /* ADJPackageBuilder.h */, - 9D449F251E6EE6C500E7E80B /* ADJPackageBuilder.m */, - 9DF92DA02630EE74000FC3FC /* ADJPackageParams.h */, - 9DF92DA12630EE74000FC3FC /* ADJPackageParams.m */, - 9D449F261E6EE6C500E7E80B /* ADJPackageHandler.h */, - 9D449F271E6EE6C500E7E80B /* ADJPackageHandler.m */, - 0A4FE7BF2AD6A2750085338A /* ADJPurchase.h */, - 0A4FE7C42AD6A2750085338A /* ADJPurchase.m */, - 0A4FE7C02AD6A2750085338A /* ADJPurchaseVerificationHandler.h */, - 0A4FE7C32AD6A2750085338A /* ADJPurchaseVerificationHandler.m */, - 0A4FE7C12AD6A2750085338A /* ADJPurchaseVerificationResult.h */, - 0A4FE7C22AD6A2750085338A /* ADJPurchaseVerificationResult.m */, - 9D449F281E6EE6C500E7E80B /* ADJRequestHandler.h */, - 9D449F291E6EE6C500E7E80B /* ADJRequestHandler.m */, - 9D449F2A1E6EE6C500E7E80B /* ADJResponseData.h */, - 9D449F2B1E6EE6C500E7E80B /* ADJResponseData.m */, - 9D449F2C1E6EE6C500E7E80B /* ADJSdkClickHandler.h */, - 9D449F2D1E6EE6C500E7E80B /* ADJSdkClickHandler.m */, - 9D449F2E1E6EE6C500E7E80B /* ADJSessionFailure.h */, - 9D449F2F1E6EE6C500E7E80B /* ADJSessionFailure.m */, - 9D449F301E6EE6C500E7E80B /* ADJSessionParameters.h */, - 9D449F311E6EE6C500E7E80B /* ADJSessionParameters.m */, - 9D449F321E6EE6C500E7E80B /* ADJSessionSuccess.h */, - 9D449F331E6EE6C500E7E80B /* ADJSessionSuccess.m */, - 9D49D16F290FEBFC00042345 /* ADJSKAdNetwork.h */, - 9D49D170290FEBFC00042345 /* ADJSKAdNetwork.m */, - 9D2F24132447DE1F00B7CA90 /* ADJSubscription.h */, - 9D2F24122447DE1E00B7CA90 /* ADJSubscription.m */, - 6F84514025B1B1C80004C7C0 /* ADJThirdPartySharing.h */, - 6F84513F25B1B1C70004C7C0 /* ADJThirdPartySharing.m */, - 9D449F361E6EE6C500E7E80B /* ADJTimerCycle.h */, - 9D449F371E6EE6C500E7E80B /* ADJTimerCycle.m */, - 9D449F381E6EE6C500E7E80B /* ADJTimerOnce.h */, - 9D449F391E6EE6C500E7E80B /* ADJTimerOnce.m */, - 9D449F3A1E6EE6C500E7E80B /* Adjust.h */, - 9D449F3B1E6EE6C500E7E80B /* Adjust.m */, - 6FBEE91224E4214800FEF3F1 /* ADJUrlStrategy.h */, - 6FBEE91324E4214800FEF3F1 /* ADJUrlStrategy.m */, - 9DD0E9CD1F459ECE00B2A759 /* ADJUserDefaults.h */, - 9DD0E9CE1F459ECE00B2A759 /* ADJUserDefaults.m */, - 9D449F3C1E6EE6C500E7E80B /* ADJUtil.h */, - 9D449F3D1E6EE6C500E7E80B /* ADJUtil.m */, - ); - name = Adjust; - path = ../../../Adjust; - sourceTree = ""; - }; - 9D449F051E6EE6C500E7E80B /* ADJAdditions */ = { - isa = PBXGroup; - children = ( - 9DF3823B260E9E000033F5A1 /* NSNumber+ADJAdditions.h */, - 9DF3823C260E9E000033F5A1 /* NSNumber+ADJAdditions.m */, - 9D449F061E6EE6C500E7E80B /* NSData+ADJAdditions.h */, - 9D449F071E6EE6C500E7E80B /* NSData+ADJAdditions.m */, - 9D449F081E6EE6C500E7E80B /* NSString+ADJAdditions.h */, - 9D449F091E6EE6C500E7E80B /* NSString+ADJAdditions.m */, - ); - path = ADJAdditions; - sourceTree = ""; - }; 9D5C9630295D96250021602B /* Frameworks */ = { isa = PBXGroup; children = ( + 0A584DBA2C3FAB1C0071A651 /* AdjustSigSdk.xcframework */, + 0A584DA52C3EA7AA0071A651 /* libAdjustSdk.a */, 9D5C9631295D96260021602B /* StoreKit.framework */, ); name = Frameworks; @@ -357,7 +155,8 @@ 963909AA1BCC0D8300A2E8A4 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1250; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1540; ORGANIZATIONNAME = "Adjust GmbH"; TargetAttributes = { 963909B11BCC0D8300A2E8A4 = { @@ -407,51 +206,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D449F561E6EE6C500E7E80B /* ADJSdkClickHandler.m in Sources */, - 9D449F441E6EE6C500E7E80B /* NSString+ADJAdditions.m in Sources */, - 9D449F4F1E6EE6C500E7E80B /* ADJEventSuccess.m in Sources */, - 9D3A2AE12626515900BD6E44 /* ADJAdRevenue.m in Sources */, - 9D449F5B1E6EE6C500E7E80B /* ADJTimerCycle.m in Sources */, - 9D449F471E6EE6C500E7E80B /* ADJAttribution.m in Sources */, - 9DF3823D260E9E000033F5A1 /* NSNumber+ADJAdditions.m in Sources */, - 9D2F24142447DE1F00B7CA90 /* ADJSubscription.m in Sources */, - 6F84514125B1B1C80004C7C0 /* ADJThirdPartySharing.m in Sources */, - 9D449F421E6EE6C500E7E80B /* ADJActivityState.m in Sources */, 9DC95F2F1C10596500138E4B /* Constants.m in Sources */, 963909BD1BCC0D8300A2E8A4 /* ViewControllertvOS.m in Sources */, 963909BA1BCC0D8300A2E8A4 /* AppDelegate.m in Sources */, - 9D449F4A1E6EE6C500E7E80B /* ADJConfig.m in Sources */, - 9D449F571E6EE6C500E7E80B /* ADJSessionFailure.m in Sources */, - 6FAB78B32636DD8200773869 /* ADJLinkResolution.m in Sources */, - 9DD0E9CF1F459ECE00B2A759 /* ADJUserDefaults.m in Sources */, - 9D449F5E1E6EE6C500E7E80B /* ADJUtil.m in Sources */, - 9D449F4E1E6EE6C500E7E80B /* ADJEventFailure.m in Sources */, - 9D449F461E6EE6C500E7E80B /* ADJAdjustFactory.m in Sources */, - 07C8C7D82B8F428F006979A1 /* ADJPurchase.m in Sources */, - 07C8C7D92B8F428F006979A1 /* ADJPurchaseVerificationHandler.m in Sources */, - 9D449F3F1E6EE6C500E7E80B /* ADJActivityHandler.m in Sources */, - 9D449F5C1E6EE6C500E7E80B /* ADJTimerOnce.m in Sources */, - 9D449F401E6EE6C500E7E80B /* ADJActivityKind.m in Sources */, - 9D449F481E6EE6C500E7E80B /* ADJAttributionHandler.m in Sources */, - 0A4FE7C72AD6A2750085338A /* ADJPurchase.m in Sources */, - 9D449F541E6EE6C500E7E80B /* ADJRequestHandler.m in Sources */, - 9DF92DA22630EE75000FC3FC /* ADJPackageParams.m in Sources */, - 9D449F4D1E6EE6C500E7E80B /* ADJEvent.m in Sources */, 963909B71BCC0D8300A2E8A4 /* main.m in Sources */, - 6FBEE91424E4214800FEF3F1 /* ADJUrlStrategy.m in Sources */, - 0A4FE7C52AD6A2750085338A /* ADJPurchaseVerificationResult.m in Sources */, - 0A4FE7C62AD6A2750085338A /* ADJPurchaseVerificationHandler.m in Sources */, - 9D449F491E6EE6C500E7E80B /* ADJBackoffStrategy.m in Sources */, - 9D449F581E6EE6C500E7E80B /* ADJSessionParameters.m in Sources */, - 9D49D171290FEBFC00042345 /* ADJSKAdNetwork.m in Sources */, - 9D449F521E6EE6C500E7E80B /* ADJPackageBuilder.m in Sources */, - 9D449F591E6EE6C500E7E80B /* ADJSessionSuccess.m in Sources */, - 9D449F511E6EE6C500E7E80B /* ADJLogger.m in Sources */, - 9D449F551E6EE6C500E7E80B /* ADJResponseData.m in Sources */, - 9D449F531E6EE6C500E7E80B /* ADJPackageHandler.m in Sources */, - 9D449F431E6EE6C500E7E80B /* NSData+ADJAdditions.m in Sources */, - 9D449F5D1E6EE6C500E7E80B /* Adjust.m in Sources */, - 9D449F411E6EE6C500E7E80B /* ADJActivityPackage.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -502,6 +260,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 = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -521,7 +280,7 @@ OTHER_LDFLAGS = "-ObjC"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; @@ -558,6 +317,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_DYNAMIC_NO_PIC = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -571,7 +331,7 @@ OTHER_LDFLAGS = "-ObjC"; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -592,7 +352,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; @@ -612,7 +372,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.adjust.examples; PRODUCT_NAME = "$(TARGET_NAME)"; - TVOS_DEPLOYMENT_TARGET = 9.0; + TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Release; }; diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.h b/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.h index 85f466d03..2b22f3b8e 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.h +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.h @@ -7,8 +7,7 @@ // #import - -#import "Adjust.h" +#import @interface AppDelegate : UIResponder diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.m b/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.m index 7b31e3a4c..b9378415d 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.m +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS/AppDelegate.m @@ -19,77 +19,55 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // Configure adjust SDK. NSString *yourAppToken = kAppToken; NSString *environment = ADJEnvironmentSandbox; - ADJConfig *adjustConfig = [ADJConfig configWithAppToken:yourAppToken environment:environment]; - + ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:yourAppToken + environment:environment]; + // Change the log level. [adjustConfig setLogLevel:ADJLogLevelVerbose]; - // Enable event buffering. - // [adjustConfig setEventBufferingEnabled:YES]; - // Set default tracker. // [adjustConfig setDefaultTracker:@"{TrackerToken}"]; // Send in the background. - [adjustConfig setSendInBackground:YES]; - - // Add session callback parameters. - [Adjust addSessionCallbackParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionCallbackParameter:@"sp_key" value:@"sp_value"]; - - // Add session partner parameters. - [Adjust addSessionPartnerParameter:@"sp_foo" value:@"sp_bar"]; - [Adjust addSessionPartnerParameter:@"sp_key" value:@"sp_value"]; - - // Remove session callback parameter. - [Adjust removeSessionCallbackParameter:@"sp_key"]; - - // Remove session partner parameter. - [Adjust removeSessionPartnerParameter:@"sp_foo"]; - - // Remove all session callback parameters. - // [Adjust resetSessionCallbackParameters]; - - // Remove all session partner parameters. - // [Adjust resetSessionPartnerParameters]; - + [adjustConfig enableSendingInBackground]; + + // Add global callback parameters. + [Adjust addGlobalCallbackParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalCallbackParameter:@"sp_value" forKey:@"sp_key"]; + + // Add global partner parameters. + [Adjust addGlobalPartnerParameter:@"sp_bar" forKey:@"sp_foo"]; + [Adjust addGlobalPartnerParameter:@"sp_value" forKey:@"sp_key"]; + + // Remove global callback parameter. + [Adjust removeGlobalCallbackParameterForKey:@"sp_key"]; + + // Remove global partner parameter. + [Adjust removeGlobalPartnerParameterForKey:@"sp_foo"]; + // Set an attribution delegate. [adjustConfig setDelegate:self]; - // Delay the first session of the SDK. - // [adjustConfig setDelayStart:7]; - // Initialise the SDK. - [Adjust appDidLaunch:adjustConfig]; - - // Put the SDK in offline mode. - // [Adjust setOfflineMode:YES]; - - // Disable the SDK. - // [Adjust setEnabled:NO]; - - // Interrupt delayed start set with setDelayStart: method. - // [Adjust sendFirstPackages]; + [Adjust initSdk:adjustConfig]; return YES; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { NSLog(@"Scheme based deep link opened an app: %@", url); - // add your code below to handle deep link - // (e.g., open deep link content) - // url object contains the deep link // Call the below method to send deep link to Adjust backend - [Adjust appWillOpenUrl:url]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:url]]; + return YES; } - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> *restorableObjects))restorationHandler { if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSLog(@"continueUserActivity method called with URL: %@", [userActivity webpageURL]); - [Adjust convertUniversalLink:[userActivity webpageURL] scheme:@"adjustExample"]; - [Adjust appWillOpenUrl:[userActivity webpageURL]]; + [Adjust convertUniversalLink:[userActivity webpageURL] withScheme:@"adjustExample"]; + [Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]]; } return YES; @@ -121,7 +99,7 @@ - (void)adjustSessionTrackingFailed:(ADJSessionFailure *)sessionFailureResponseD } // Evaluate deeplink to be launched. -- (BOOL)adjustDeeplinkResponse:(NSURL *)deeplink { +- (BOOL)adjustDeferredDeeplinkReceived:(NSURL *)deeplink { NSLog(@"Deferred deep link callback called!"); NSLog(@"Deferred deep link URL: %@", [deeplink absoluteString]); diff --git a/examples/AdjustExample-tvOS/AdjustExample-tvOS/ViewControllertvOS.m b/examples/AdjustExample-tvOS/AdjustExample-tvOS/ViewControllertvOS.m index 2b2da109c..5af03c17b 100644 --- a/examples/AdjustExample-tvOS/AdjustExample-tvOS/ViewControllertvOS.m +++ b/examples/AdjustExample-tvOS/AdjustExample-tvOS/ViewControllertvOS.m @@ -6,9 +6,9 @@ // Copyright © 2015-Present Adjust GmbH. All rights reserved. // -#import "Adjust.h" -#import "Constants.h" #import "ViewControllertvOS.h" +#import "Constants.h" +#import @interface ViewControllertvOS () @@ -35,14 +35,12 @@ - (void)didReceiveMemoryWarning { } - (IBAction)clickTrackSimpleEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken1]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken1]; [Adjust trackEvent:event]; } - (IBAction)clickTrackRevenueEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken2]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken2]; // Add revenue 1 cent of an euro. [event setRevenue:0.01 currency:@"EUR"]; @@ -50,8 +48,7 @@ - (IBAction)clickTrackRevenueEvent:(UIButton *)sender { } - (IBAction)clickTrackCallbackEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken3]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken3]; // Add callback parameters to this event. [event addCallbackParameter:@"a" value:@"b"]; [event addCallbackParameter:@"key" value:@"value"]; @@ -61,8 +58,7 @@ - (IBAction)clickTrackCallbackEvent:(UIButton *)sender { } - (IBAction)clickTrackPartnerEvent:(UIButton *)sender { - ADJEvent *event = [ADJEvent eventWithEventToken:kEventToken4]; - + ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken4]; // Add partner parameteres to this event. [event addPartnerParameter:@"x" value:@"y"]; [event addPartnerParameter:@"foo" value:@"bar"]; @@ -72,35 +68,38 @@ - (IBAction)clickTrackPartnerEvent:(UIButton *)sender { } - (IBAction)clickEnableOfflineMode:(id)sender { - [Adjust setOfflineMode:YES]; + [Adjust switchToOfflineMode]; } - (IBAction)clickDisableOfflineMode:(id)sender { - [Adjust setOfflineMode:NO]; + [Adjust switchBackToOnlineMode]; } - (IBAction)clickEnableSdk:(id)sender { - [Adjust setEnabled:YES]; + [Adjust enable]; } - (IBAction)clickDisableSdk:(id)sender { - [Adjust setEnabled:NO]; + [Adjust disable]; } - (IBAction)clickIsSdkEnabled:(id)sender { - NSString *message; - if ([Adjust isEnabled]) { - message = @"SDK is ENABLED!"; - } else { - message = @"SDK is DISABLED!"; - } - - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Is SDK Enabled?" - message:message preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) {}]; - [alert addAction:defaultAction]; - [self presentViewController:alert animated:YES completion:nil]; + [Adjust isEnabledWithCompletionHandler:^(BOOL isEnabled) { + NSString *message; + if (isEnabled) { + message = @"SDK is ENABLED!"; + } else { + message = @"SDK is DISABLED!"; + } + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Is SDK Enabled?" + message:message + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action) {}]; + [alert addAction:defaultAction]; + [self presentViewController:alert animated:YES completion:nil]; + }]; } @end diff --git a/plugin/Criteo/ADJCriteo.h b/plugin/Criteo/ADJCriteo.h deleted file mode 100644 index ed6a1137a..000000000 --- a/plugin/Criteo/ADJCriteo.h +++ /dev/null @@ -1,62 +0,0 @@ -// -// ADJCriteoEvents.h -// -// -// Created by Pedro Filipe on 06/02/15. -// -// - -#import - -#import "ADJEvent.h" - -@interface ADJCriteoProduct : NSObject - -@property (nonatomic, assign) float criteoPrice; - -@property (nonatomic, assign) NSUInteger criteoQuantity; - -@property (nonatomic, copy, nullable) NSString *criteoProductID; - -- (nullable id)initWithId:(nullable NSString *)productId price:(float)price quantity:(NSUInteger)quantity; - -+ (nullable ADJCriteoProduct *)productWithId:(nullable NSString *)productId price:(float)price quantity:(NSUInteger)quantity; - -@end - -@interface ADJCriteo : NSObject - -+ (void)injectPartnerIdIntoCriteoEvents:(nullable NSString *)partnerId; - -+ (void)injectCustomerIdIntoCriteoEvents:(nullable NSString *)customerId; - -+ (void)injectHashedEmailIntoCriteoEvents:(nullable NSString *)hashEmail; - -+ (void)injectUserSegmentIntoCriteoEvents:(nullable NSString *)userSegment; - -+ (void)injectDeeplinkIntoEvent:(nullable ADJEvent *)event url:(nullable NSURL *)url; - -+ (void)injectCartIntoEvent:(nullable ADJEvent *)event products:(nullable NSArray *)products; - -+ (void)injectUserLevelIntoEvent:(nullable ADJEvent *)event uiLevel:(NSUInteger)uiLevel; - -+ (void)injectCustomEventIntoEvent:(nullable ADJEvent *)event uiData:(nullable NSString *)uiData; - -+ (void)injectUserStatusIntoEvent:(nullable ADJEvent *)event uiStatus:(nullable NSString *)uiStatus; - -+ (void)injectViewProductIntoEvent:(nullable ADJEvent *)event productId:(nullable NSString *)productId; - -+ (void)injectViewListingIntoEvent:(nullable ADJEvent *)event productIds:(nullable NSArray *)productIds; - -+ (void)injectAchievementUnlockedIntoEvent:(nullable ADJEvent *)event uiAchievement:(nullable NSString *)uiAchievement; - -+ (void)injectViewSearchDatesIntoCriteoEvents:(nullable NSString *)checkInDate checkOutDate:(nullable NSString *)checkOutDate; - -+ (void)injectCustomEvent2IntoEvent:(nullable ADJEvent *)event uiData2:(nullable NSString *)uiData2 uiData3:(NSUInteger)uiData3; - -+ (void)injectTransactionConfirmedIntoEvent:(nullable ADJEvent *)event - products:(nullable NSArray *)products - transactionId:(nullable NSString *)transactionId - newCustomer:(nullable NSString *)newCustomer; - -@end diff --git a/plugin/Criteo/ADJCriteo.m b/plugin/Criteo/ADJCriteo.m deleted file mode 100644 index cd7f3a789..000000000 --- a/plugin/Criteo/ADJCriteo.m +++ /dev/null @@ -1,290 +0,0 @@ -// -// ADJCriteoEvents.m -// -// -// Created by Pedro Filipe on 06/02/15. -// -// - -#import "Adjust.h" -#import "ADJCriteo.h" -#import "ADJAdjustFactory.h" - -static const NSUInteger MAX_VIEW_LISTING_PRODUCTS = 3; - -@implementation ADJCriteoProduct - -- (id)initWithId:(NSString *)productId price:(float)price quantity:(NSUInteger)quantity { - self = [super init]; - - if (self == nil) { - return nil; - } - - self.criteoPrice = price; - self.criteoQuantity = quantity; - self.criteoProductID = productId; - - return self; -} - -+ (ADJCriteoProduct *)productWithId:(NSString *)productId price:(float)price quantity:(NSUInteger)quantity { - return [[ADJCriteoProduct alloc] initWithId:productId price:price quantity:quantity]; -} - -@end - -@implementation ADJCriteo - -static NSString * hashEmailInternal; -static NSString * partnerIdInternal; -static NSString * customerIdInternal; -static NSString * userSegmentInternal; -static NSString * checkInDateInternal; -static NSString * checkOutDateInternal; - -+ (id)logger { - return ADJAdjustFactory.logger; -} - -+ (void)injectViewSearchIntoEvent:(ADJEvent *)event checkInDate:(NSString *)din checkOutDate:(NSString *)dout { - [event addPartnerParameter:@"din" value:din]; - [event addPartnerParameter:@"dout" value:dout]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectViewListingIntoEvent:(ADJEvent *)event productIds:(NSArray *)productIds { - NSString *jsonProductsIds = [ADJCriteo createCriteoVLFromProducts:productIds]; - [event addPartnerParameter:@"criteo_p" value:jsonProductsIds]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectViewProductIntoEvent:(ADJEvent *)event productId:(NSString *)productId { - [event addPartnerParameter:@"criteo_p" value:productId]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectCartIntoEvent:(ADJEvent *)event products:(NSArray *)products { - NSString *jsonProducts = [ADJCriteo createCriteoVBFromProducts:products]; - [event addPartnerParameter:@"criteo_p" value:jsonProducts]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectTransactionConfirmedIntoEvent:(ADJEvent *)event - products:(NSArray *)products - transactionId:(NSString *)transactionId - newCustomer:(NSString *)newCustomer { - [event addPartnerParameter:@"transaction_id" value:transactionId]; - - NSString *jsonProducts = [ADJCriteo createCriteoVBFromProducts:products]; - [event addPartnerParameter:@"criteo_p" value:jsonProducts]; - [event addPartnerParameter:@"new_customer" value:newCustomer]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectUserLevelIntoEvent:(ADJEvent *)event uiLevel:(NSUInteger)uiLevel { - NSString *uiLevelString = [NSString stringWithFormat:@"%lu",(unsigned long)uiLevel]; - [event addPartnerParameter:@"ui_level" value:uiLevelString]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectUserStatusIntoEvent:(ADJEvent *)event uiStatus:(NSString *)uiStatus { - [event addPartnerParameter:@"ui_status" value:uiStatus]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectAchievementUnlockedIntoEvent:(ADJEvent *)event uiAchievement:(NSString *)uiAchievement { - [event addPartnerParameter:@"ui_achievmnt" value:uiAchievement]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectCustomEventIntoEvent:(ADJEvent *)event uiData:(NSString *)uiData { - [event addPartnerParameter:@"ui_data" value:uiData]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectCustomEvent2IntoEvent:(ADJEvent *)event uiData2:(NSString *)uiData2 uiData3:(NSUInteger)uiData3 { - [event addPartnerParameter:@"ui_data2" value:uiData2]; - - NSString *uiData3String = [NSString stringWithFormat:@"%lu",(unsigned long)uiData3]; - [event addPartnerParameter:@"ui_data3" value:uiData3String]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectDeeplinkIntoEvent:(ADJEvent *)event url:(NSURL *)url { - if (url == nil) { - return; - } - - [event addPartnerParameter:@"criteo_deeplink" value:[url absoluteString]]; - - [ADJCriteo injectOptionalParams:event]; -} - -+ (void)injectHashedEmailIntoCriteoEvents:(NSString *)hashEmail { - hashEmailInternal = hashEmail; -} - -+ (void)injectViewSearchDatesIntoCriteoEvents:(NSString *)checkInDate checkOutDate:(NSString *)checkOutDate { - checkInDateInternal = checkInDate; - checkOutDateInternal = checkOutDate; -} - -+ (void)injectPartnerIdIntoCriteoEvents:(NSString *)partnerId { - partnerIdInternal = partnerId; -} - -+ (void)injectUserSegmentIntoCriteoEvents:(NSString *)userSegment { - userSegmentInternal = userSegment; -} - -+ (void)injectCustomerIdIntoCriteoEvents:(NSString *)customerId { - customerIdInternal = customerId; -} - -+ (void)injectOptionalParams:(ADJEvent *)event { - [ADJCriteo injectHashEmail:event]; - [ADJCriteo injectSearchDates:event]; - [ADJCriteo injectPartnerId:event]; - [ADJCriteo injectUserSegment:event]; - [ADJCriteo injectCustomerId:event]; -} - -+ (void)injectHashEmail:(ADJEvent *)event { - if (hashEmailInternal == nil) { - return; - } - - [event addPartnerParameter:@"criteo_email_hash" value:hashEmailInternal]; -} - -+ (void)injectSearchDates:(ADJEvent *)event { - if (checkInDateInternal == nil || checkOutDateInternal == nil) { - return; - } - - [event addPartnerParameter:@"din" value:checkInDateInternal]; - [event addPartnerParameter:@"dout" value:checkOutDateInternal]; -} - -+ (void)injectPartnerId:(ADJEvent *)event { - if (partnerIdInternal == nil) { - return; - } - - [event addPartnerParameter:@"criteo_partner_id" value:partnerIdInternal]; -} - -+ (void)injectUserSegment:(ADJEvent *)event { - if (userSegmentInternal == nil) { - return; - } - - [event addPartnerParameter:@"user_segment" value:userSegmentInternal]; -} - -+ (void)injectCustomerId:(ADJEvent *)event { - if (customerIdInternal == nil) { - return; - } - - [event addPartnerParameter:@"customer_id" value:customerIdInternal]; -} - -+ (NSString *)createCriteoVBFromProducts:(NSArray *)products { - if (products == nil) { - [self.logger warn:@"Criteo Event product list is nil. It will sent as empty."]; - products = @[]; - } - - NSUInteger productsCount = [products count]; - NSMutableString *criteoVBValue = [NSMutableString stringWithString:@"["]; - - for (NSUInteger i = 0; i < productsCount;) { - id productAtIndex = [products objectAtIndex:i]; - - if (![productAtIndex isKindOfClass:[ADJCriteoProduct class]]) { - [self.logger error:@"Criteo Event should contain a list of ADJCriteoProduct"]; - return nil; - } - - ADJCriteoProduct *product = (ADJCriteoProduct *)productAtIndex; - NSString *productString = [NSString stringWithFormat:@"{\"i\":\"%@\",\"pr\":%f,\"q\":%lu}", - [product criteoProductID], - [product criteoPrice], - (unsigned long)[product criteoQuantity]]; - - [criteoVBValue appendString:productString]; - - i++; - - if (i == productsCount) { - break; - } - - [criteoVBValue appendString:@","]; - } - - [criteoVBValue appendString:@"]"]; - - return [criteoVBValue stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; -} - -+ (NSString *)createCriteoVLFromProducts:(NSArray *)productIds { - if (productIds == nil) { - [self.logger warn:@"Criteo View Listing product ids list is nil. It will sent as empty."]; - productIds = @[]; - } - - NSUInteger productsIdCount = [productIds count]; - - if (productsIdCount > MAX_VIEW_LISTING_PRODUCTS) { - [self.logger warn:@"Criteo View Listing should only have at most 3 product ids. The rest will be discarded."]; - } - - NSMutableString *criteoVLValue = [NSMutableString stringWithString:@"["]; - - for (NSUInteger i = 0; i < productsIdCount;) { - id productAtIndex = [productIds objectAtIndex:i]; - NSString *productId; - - if ([productAtIndex isKindOfClass:[NSString class]]) { - productId = productAtIndex; - } else if ([productAtIndex isKindOfClass:[ADJCriteoProduct class]]) { - ADJCriteoProduct *criteoProduct = (ADJCriteoProduct *)productAtIndex; - productId = [criteoProduct criteoProductID]; - - [self.logger warn:@"Criteo View Listing should contain a list of product ids, not of ADJCriteoProduct. Reading the product id of the ADJCriteoProduct."]; - } else { - return nil; - } - - NSString *productIdEscaped = [NSString stringWithFormat:@"\"%@\"", productId]; - - [criteoVLValue appendString:productIdEscaped]; - - i++; - - if (i == productsIdCount || i >= MAX_VIEW_LISTING_PRODUCTS) { - break; - } - - [criteoVLValue appendString:@","]; - } - - [criteoVLValue appendString:@"]"]; - - return [criteoVLValue stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; -} - -@end diff --git a/plugin/Criteo/Adjust b/plugin/Criteo/Adjust deleted file mode 120000 index 9a4029b12..000000000 --- a/plugin/Criteo/Adjust +++ /dev/null @@ -1 +0,0 @@ -../../Adjust \ No newline at end of file diff --git a/plugin/Sociomantic/ADJSociomantic.h b/plugin/Sociomantic/ADJSociomantic.h deleted file mode 100644 index 97e0b3f52..000000000 --- a/plugin/Sociomantic/ADJSociomantic.h +++ /dev/null @@ -1,257 +0,0 @@ -/** - * ADJSociomantic.m - * Adjust - * - * Created by Nicolas Brugneaux on 17/02/15. - * Copyright (c) 2015 Sociomantic Labs. All rights reserved. - */ - -#import - -#import "Adjust.h" - -///---------------------------- -/// @name Sociomantic Aliases -///---------------------------- - -extern NSString * __nonnull const SCMCategory; -extern NSString * __nonnull const SCMProductName; -extern NSString * __nonnull const SCMSalePrice; -extern NSString * __nonnull const SCMAmount; -extern NSString * __nonnull const SCMCurrency; -extern NSString * __nonnull const SCMProductURL; -extern NSString * __nonnull const SCMProductImageURL; -extern NSString * __nonnull const SCMBrand; -extern NSString * __nonnull const SCMDescription; -extern NSString * __nonnull const SCMTimestamp; -extern NSString * __nonnull const SCMValidityTimestamp; -extern NSString * __nonnull const SCMQuantity; -extern NSString * __nonnull const SCMScore; -extern NSString * __nonnull const SCMProductID; -extern NSString * __nonnull const SCMAmount; -extern NSString * __nonnull const SCMCurrency; -extern NSString * __nonnull const SCMQuantity; -extern NSString * __nonnull const SCMAmount; -extern NSString * __nonnull const SCMCurrency; -extern NSString * __nonnull const SCMActionConfirmed; -extern NSString * __nonnull const SCMActionConfirmed; -extern NSString * __nonnull const SCMCustomerAgeGroup; -extern NSString * __nonnull const SCMCustomerEducation; -extern NSString * __nonnull const SCMCustomerGender; -extern NSString * __nonnull const SCMCustomerID; -extern NSString * __nonnull const SCMCustomerMHash; -extern NSString * __nonnull const SCMCustomerSegment; -extern NSString * __nonnull const SCMCustomerTargeting; - -///-------------------------------- -/// @name Adjust Sociomantic Events -///-------------------------------- - -/** - * Object exposing the different methods of the Sociomantic plugin for Adjust. - */ -@interface ADJSociomantic : NSObject - -/** - * Methods uses the given string, stores it into a singleton, it'll be injected into every - * further sociomantic event. - * - * @param adpanId `NSString` - * - */ -+ (void)injectPartnerIdIntoSociomanticEvents:(nullable NSString *)adpanId; - -/** - * Methods uses the given dictionary, filters it and injects it into the event. - * - * @param event `ADJEvent` - * @param data `NSDictionary` - * - */ -+ (void)injectCustomerDataIntoEvent:(nullable ADJEvent *)event - withData:(nullable NSDictionary *)data; - - -/** - * Method makes sure the event has the adpanId into the event. - * - * @param event `ADJEvent` - * - */ -+ (void)addPartnerParameter:(nullable ADJEvent *)event; - - -/** - * Method makes sure the event has the adpanId into the event and injects the json - * value into the partner parameter. - * - * @param event `ADJEvent` - * - */ -+ (void)addPartnerParameter:(nullable ADJEvent *)event - parameter:(nullable NSString *)parameterName - value:(nullable NSString *)jsonValue; - -/** - * Method injects a home page view into an Adjust event. - * - * @param event `ADJEvent` - * - */ -+ (void)injectHomePageIntoEvent:(nullable ADJEvent *)event; - - -/** - * Method injects a category page view into an Adjust event. - * - * Note: the category array will be filtered to only contain strings. - * - * @param event `ADJEvent` - * @param categories `NSArray` - * - */ -+ (void)injectViewListingIntoEvent:(nullable ADJEvent *)event - withCategories:(nullable NSArray *)categories; - -/** - * Method injects a category page view into an Adjust event. - * - * Note: the category array will be filtered to only contain strings. - * - * @param event `ADJEvent` - * @param categories `NSArray` - * @param date `NSString` - * - */ -+ (void)injectViewListingIntoEvent:(nullable ADJEvent *)event - withCategories:(nullable NSArray *)categories - withDate:(nullable NSString *)date; - -/** - * Method injects a product page view into an Adjust event. - * - * @param event `ADJEvent` - * @param productId `NSString` - * - */ -+ (void)injectViewProductIntoEvent:(nullable ADJEvent *)event - productId:(nullable NSString *)productId; - -/** - * Method injects a product page view into an Adjust event. - * Parameters dictionary will be filtered by keys and only keep the key-value - * pairs where the key can be found in the - * `SCMSingleton.properties[@"product"]` dictionary. These keys can be also - * found in the file `SCMAliases.h`. - * - * @param event `ADJEvent` - * @param productId `NSString` - * @param parameters `NSDictionary` - * - */ -+ (void)injectViewProductIntoEvent:(nullable ADJEvent *)event - productId:(nullable NSString *)productId - withParameters:(nullable NSDictionary *)parameters; - -/** - * Method injects a basket page view. The basket into an Adjust event. - * used to create the request is the given array of products. - * The array will be filtered according to the keys of - * `SCMSingleton.properties[@"basket"]`. - * - * @param event `ADJEvent` - * @param products `NSArray` - * - */ -+ (void)injectCartIntoEvent:(nullable ADJEvent *)event - cart:(nullable NSArray *)products; - - -/** - * Method injects a confirmed sale page view into an Adjust event. - * The array will be filtered according to the keys of - * `SCMSingleton.properties[@"basket"]`. - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * @param products `NSArray` - * - */ -+ (void)injectConfirmedTransactionIntoEvent:(nullable ADJEvent *)event - transactionId:(nullable NSString *)transactionID - withProducts:(nullable NSArray *)products; - -/** - * Method injects a confirmed sale page view into an Adjust event. - * The array will be filtered according to the keys of - * `SCMSingleton.properties[@"basket"]`. - * The same thing for the transaction option parameters, they are filtered - * according to SCMSingleton.properties[@"sale"]` - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * @param products `NSArray` - * @param parameters `NSDictionary` - * - */ -+ (void)injectConfirmedTransactionIntoEvent:(nullable ADJEvent *)event - transactionId:(nullable NSString *)transactionID - withProducts:(nullable NSArray *)products - withParameters:(nullable NSDictionary *)parameters; - -/** - * Method injects a non-confirmed sale page view into an Adjust event. - * The array will be filtered according to the keys of - * `SCMSingleton.properties[@"basket"]`. - * The same thing for the transaction option parameters, they are filtered - * according to SCMSingleton.properties[@"sale"]` - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * @param products `NSArray` - * - */ -+ (void)injectTransactionIntoEvent:(nullable ADJEvent *)event - transactionId:(nullable NSString *)transactionID - withProducts:(nullable NSArray *)products; -/** - * Method injects a sale page view into an Adjust event. - * The array will be filtered according to the keys of - * `SCMSingleton.properties[@"basket"]`. - * The same thing for the transaction option parameters, they are filtered - * according to SCMSingleton.properties[@"sale"]` - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * @param products `NSArray` - * @param parameters `NSDictionary` - * - */ -+ (void)injectTransactionIntoEvent:(nullable ADJEvent *)event - transactionId:(nullable NSString *)transactionID - withProducts:(nullable NSArray *)products - withParameters:(nullable NSDictionary *)parameters; - -/** - * Method injects a lead page into an Adjust event. - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * - */ -+ (void)injectLeadIntoEvent:(nullable ADJEvent *)event - leadID:(nullable NSString *)transactionID; - -/** - * Method injects a lead page into an Adjust event. - * It can be confirmed or not. - * - * @param event `ADJEvent` - * @param transactionID `NSString` - * - */ -+ (void)injectLeadIntoEvent:(nullable ADJEvent *)event - leadID:(nullable NSString *)transactionID - andConfirmed:(BOOL)confirmed; - -@end diff --git a/plugin/Sociomantic/ADJSociomantic.m b/plugin/Sociomantic/ADJSociomantic.m deleted file mode 100644 index 260c46180..000000000 --- a/plugin/Sociomantic/ADJSociomantic.m +++ /dev/null @@ -1,421 +0,0 @@ -/** - * ADJSociomantic.m - * Adjust - * - * Created by Nicolas Brugneaux on 17/02/15. - * Copyright (c) 2015 Sociomantic Labs. All rights reserved. - */ - -#import "Adjust.h" -#import "ADJLogger.h" -#import "ADJSociomantic.h" -#import "ADJAdjustFactory.h" - -///---------------------------- -/// @name Sociomantic Aliases -///---------------------------- - -NSString * const SCMCategory = @"category"; -NSString * const SCMProductName = @"fn"; -NSString * const SCMSalePrice = @"price"; -NSString * const SCMAmount = @"amount"; -NSString * const SCMCurrency = @"currency"; -NSString * const SCMProductURL = @"url"; -NSString * const SCMProductImageURL = @"photo"; -NSString * const SCMBrand = @"brand"; -NSString * const SCMDescription = @"description"; -NSString * const SCMTimestamp = @"date"; -NSString * const SCMValidityTimestamp = @"valid"; -NSString * const SCMQuantity = @"quantity"; -NSString * const SCMScore = @"score"; -NSString * const SCMProductID = @"identifier"; -NSString * const SCMActionConfirmed = @"confirmed"; -NSString * const SCMCustomerAgeGroup = @"agegroup"; -NSString * const SCMCustomerEducation = @"education"; -NSString * const SCMCustomerGender = @"gender"; -NSString * const SCMCustomerID = @"identifier"; -NSString * const SCMCustomerMHash = @"mhash"; -NSString * const SCMCustomerSegment = @"segment"; -NSString * const SCMCustomerTargeting = @"targeting"; - - -///---------------------------- -/// @name Sociomantic Singleton -///---------------------------- - -/** - * Object storing the state of the application and aliases for the sociomantic - * events. - */ -@interface SCMSingleton : NSObject - -/** - * Immutable `NSDictionary` storing the aliases for stringification of the - * tracking objects (product, basket, etc..). - */ -@property (nonatomic, strong) NSDictionary *properties; - -/** - * `NSString` storing the adpanId. - */ -@property (nonatomic, strong) NSString *adpanId; - -/** - * As the purpose of a Singleton is to be stateful, there is no `init` function - * exposed. You can only get the existing instance of it (init is implicitly - * called if the instance wasn't created). - * - * @return `SCMSingleton` - */ -+ (SCMSingleton*)sharedClient; - -@end - -@implementation SCMSingleton - -@synthesize properties; - -+ (id)sharedClient { - static SCMSingleton *_sharedClient = nil; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - _sharedClient = [[self alloc] init]; - }); - - return _sharedClient; -} - -- (id)init { - if (self = [super init]) { - properties = - @{ - @"product" : - @[ - SCMCategory, - SCMProductName, - SCMSalePrice, - SCMAmount, - SCMCurrency, - SCMProductURL, - SCMProductImageURL, - SCMBrand, - SCMDescription, - SCMTimestamp, - SCMValidityTimestamp, - SCMQuantity, - SCMScore - ], - @"basket" : - @[ - SCMProductID, - SCMAmount, - SCMCurrency, - SCMQuantity - ], - @"sale" : - @[ - SCMAmount, - SCMCurrency, - SCMActionConfirmed - ], - @"lead" : - @[ - SCMActionConfirmed - ], - @"customer" : - @[ - SCMCustomerAgeGroup, - SCMCustomerEducation, - SCMCustomerGender, - SCMCustomerID, - SCMCustomerMHash, - SCMCustomerSegment, - SCMCustomerTargeting - ] - }; - - } - - return self; -} -@end - -///-------------------------------- -/// @name Adjust Sociomantic Events -///-------------------------------- - -@implementation ADJSociomantic - -+ (void)injectPartnerIdIntoSociomanticEvents:(NSString *)adpanId { - [SCMSingleton sharedClient].adpanId = adpanId; -} - -+ (void)injectCustomerDataIntoEvent:(ADJEvent *)event - withData:(NSDictionary *)data { - NSArray *aliases = [SCMSingleton sharedClient].properties[@"customer"]; - NSMutableDictionary *_data = [NSMutableDictionary dictionary]; - id logger = [ADJAdjustFactory logger]; - - [data enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL* stop) { - if (![aliases containsObject:key]) { - [logger error:@"Key must correspond to a Sociomantic alias => [%@] see SCMAliases.h", key]; - return; - } - - if (![value isKindOfClass:[NSString class]]) { - [logger error:@"Customer Data must be NSString=> [%@] [%@]", value, [value class]]; - } - - _data[key] = value; - }]; - - NSString *dob = [ADJSociomantic stringifyAndEncode:_data]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_dob" value:dob]; -} - -+ (void)addPartnerParameter:(ADJEvent *)event { - [ADJSociomantic addPartnerParameter:event parameter:nil value:nil]; -} - -+ (void)addPartnerParameter:(ADJEvent *)event - parameter:(NSString *)parameterName - value:(NSString *)jsonValue { - if (nil == [SCMSingleton sharedClient].adpanId) { - id logger = [ADJAdjustFactory logger]; - [logger error:@"The adpanId must be set before sending any sociomantic event. No parameter has been added"]; - return; - } - - if (nil != parameterName && nil != jsonValue) { - [event addPartnerParameter:parameterName value:jsonValue]; - } - - [event addPartnerParameter:@"socio_aid" value:[SCMSingleton sharedClient].adpanId]; -} - -+ (void)injectHomePageIntoEvent:(ADJEvent *)event { - [ADJSociomantic addPartnerParameter:event]; -} - -+ (void)injectViewListingIntoEvent:(ADJEvent *)event - withCategories:(NSArray *)categories { - [ADJSociomantic injectViewListingIntoEvent:event withCategories:categories withDate:nil]; -} - -+ (void)injectViewListingIntoEvent:(ADJEvent *)event - withCategories:(NSArray *)categories - withDate:(NSString *)date { - NSMutableDictionary *co = [NSMutableDictionary dictionary]; - co[SCMCategory] = [ADJSociomantic filterCategories:categories]; - - if (nil != date) { - co[SCMTimestamp] = date; - } - - NSString *jsonCo = [ADJSociomantic stringifyAndEncode:@{@"category":co}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_co" value:jsonCo]; -} - -+ (void)injectViewProductIntoEvent:(ADJEvent *)event - productId:(NSString *)productId { - [ADJSociomantic injectViewProductIntoEvent:event productId:productId withParameters:nil]; -} - -+ (void)injectViewProductIntoEvent:(ADJEvent *)event - productId:(NSString *)productId - withParameters:(NSDictionary *)parameters { - NSArray *aliases = [SCMSingleton sharedClient].properties[@"product"]; - NSMutableDictionary *product = [NSMutableDictionary dictionary]; - - product[SCMProductID] = productId; - - if (nil != parameters) { - [ADJSociomantic filter:parameters withAliases:aliases modifies:product ]; - } - - NSString *jsonPo = [ADJSociomantic stringifyAndEncode:@{@"products": @[product]}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_po" value:jsonPo]; -} - - -+ (void)injectCartIntoEvent:(ADJEvent *)event - cart:(NSArray *)products { - NSArray *aliases = [SCMSingleton sharedClient].properties[@"basket"]; - NSMutableArray *po = [NSMutableArray array]; - - [products enumerateObjectsUsingBlock:^(id product, NSUInteger idx, BOOL *stop) { - NSMutableDictionary *_product = [NSMutableDictionary dictionary]; - - if ([product isKindOfClass:[NSString class]]) { - _product[SCMProductID] = product; - } else if ([product isKindOfClass:[NSDictionary class]]) { - [ADJSociomantic filter:product withAliases:aliases modifies:_product]; - } - - if (0 < _product.count) { - [po addObject:_product]; - } - }]; - - if (0 < po.count) { - NSString *jsonPo = [ADJSociomantic stringifyAndEncode:@{@"products":po}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_po" value:jsonPo]; - } -} - -+ (void)injectConfirmedTransactionIntoEvent:(ADJEvent *)event - transactionId:(NSString *)transactionID - withProducts:(NSArray *)products { - [ADJSociomantic injectConfirmedTransactionIntoEvent:event transactionId:transactionID withProducts:products withParameters:nil]; -} - -+ (void)injectConfirmedTransactionIntoEvent:(ADJEvent *)event - transactionId:(NSString *)transactionID - withProducts:(NSArray *)products - withParameters:(NSDictionary *)parameters { - [ADJSociomantic injectTransactionIntoEvent:event transactionId:transactionID withProducts:products withParameters:parameters andConfirmed:YES]; -} - -+ (void)injectTransactionIntoEvent:(ADJEvent *)event - transactionId:(NSString *)transactionID - withProducts:(NSArray *)products { - [ADJSociomantic injectTransactionIntoEvent:event transactionId:transactionID withProducts:products withParameters:nil andConfirmed:NO]; -} - -+ (void)injectTransactionIntoEvent:(ADJEvent *)event - transactionId:(NSString *)transactionID - withProducts:(NSArray *)products - withParameters:(NSDictionary *)parameters { - [ADJSociomantic injectTransactionIntoEvent:event transactionId:transactionID withProducts:products withParameters:parameters andConfirmed:NO]; -} - -+ (void)injectTransactionIntoEvent:(ADJEvent *)event - transactionId:(NSString *)transactionID - withProducts:(NSArray *)products - withParameters:(NSDictionary *)parameters - andConfirmed:(BOOL)confirmed { - NSArray *saleAliases = [SCMSingleton sharedClient].properties[@"sale"]; - NSArray *basketAliases = [SCMSingleton sharedClient].properties[@"basket"]; - - NSMutableArray *po = [NSMutableArray array]; - NSMutableDictionary *to = [NSMutableDictionary dictionary]; - - if (nil != products) { - [products enumerateObjectsUsingBlock:^(id product, NSUInteger idx, BOOL *stop) { - NSMutableDictionary *_product = [NSMutableDictionary dictionary]; - - if ([product isKindOfClass:[NSString class]]) { - _product[SCMProductID] = product; - } else if ([product isKindOfClass:[NSDictionary class]]) { - [ADJSociomantic filter:product withAliases:basketAliases modifies:_product]; - } - - if (0 < _product.count) { - [po addObject:_product]; - } - }]; - - NSString *jsonPo = [ADJSociomantic stringifyAndEncode:@{@"products":po}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_po" value:jsonPo]; - } - - if (nil != parameters) { - [ADJSociomantic filter:parameters withAliases:saleAliases modifies:to]; - } - - if (YES == confirmed) { - to[SCMActionConfirmed] = @"true"; - } - - to[@"transaction"] = transactionID; - NSString *jsonTo = [ADJSociomantic stringifyAndEncode:@{@"transaction":to}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_to" value:jsonTo]; -} - -+ (void)injectLeadIntoEvent:(ADJEvent *)event - leadID:(NSString *)leadId { - [ADJSociomantic injectLeadIntoEvent:event leadID:leadId andConfirmed:NO]; -} - -+ (void)injectLeadIntoEvent:(ADJEvent *)event - leadID:(NSString *)leadID - andConfirmed:(BOOL)confirmed { - NSMutableDictionary *to = [NSMutableDictionary dictionary]; - - if (YES == confirmed) { - to[SCMActionConfirmed] = @"true"; - } - - to[@"transaction"] = leadID; - NSString *jsonTo = [ADJSociomantic stringifyAndEncode:@{@"transaction":to}]; - [ADJSociomantic addPartnerParameter:event parameter:@"socio_to" value:jsonTo]; -} - -+ (NSArray *)filterCategories:(NSArray *)categories { - return [categories filteredArrayUsingPredicate:[NSPredicate predicateWithBlock: ^BOOL(id category, NSDictionary *bindings) { - if (![category isKindOfClass:[NSString class]]) { - id logger = [ADJAdjustFactory logger]; - [logger error:@"Categories should only contains a string, failed on: [%@] type:[%@]", category, [category class]]; - - return NO; - } - - return [category isKindOfClass:[NSString class]]; - }]]; -} - -+ (void)filter:(NSDictionary *)parameters withAliases:(NSArray *)aliases modifies:(inout NSMutableDictionary *)result { - [parameters enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL* stop) { - if (![aliases containsObject:key]) { - id logger = [ADJAdjustFactory logger]; - [logger error:@"Key must correspond to a Sociomantic alias => [%@] see SCMAliases.h", key]; - - return; - } - - if ([aliases containsObject:key]) { - if ([key isEqualToString:SCMCategory]) { - if ([value isKindOfClass:[NSString class]]) { - result[key] = @[value]; - } else if ([value isKindOfClass:[NSArray class]]) { - result[key] = [ADJSociomantic filterCategories:value]; - } - } else { - result[key] = value; - } - } - }]; -} - -#pragma mark - JSON helper - -+ (NSString *)stringify:(NSObject *)object { - if (nil == object) { - return nil; - } - - NSError *error; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error]; - - if (!jsonData || error) { - id logger = [ADJAdjustFactory logger]; - [logger error:@"%@", [error debugDescription]]; - - return @"{}"; - } else { - return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - } -} - -+ (NSString *)encode:(NSString *)unencodedString { - NSString *encoded = [unencodedString stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]; - - return encoded; -} - -+ (NSString *)stringifyAndEncode:(NSObject *)object { - return [ADJSociomantic encode:[ADJSociomantic stringify:object]]; -} - -@end diff --git a/plugin/Sociomantic/Adjust b/plugin/Sociomantic/Adjust deleted file mode 120000 index 9a4029b12..000000000 --- a/plugin/Sociomantic/Adjust +++ /dev/null @@ -1 +0,0 @@ -../../Adjust \ No newline at end of file diff --git a/plugin/Trademob/ADJTrademob.h b/plugin/Trademob/ADJTrademob.h deleted file mode 100644 index 85bb1652e..000000000 --- a/plugin/Trademob/ADJTrademob.h +++ /dev/null @@ -1,44 +0,0 @@ - // -// ADJTrademob.h -// Adjust -// -// Created by Davit Ohanyan on 9/14/15. -// Copyright © 2015 adjust GmbH. All rights reserved. -// - -#import - -#import "ADJEvent.h" - -@interface ADJTrademobItem : NSObject - -@property (nonatomic, assign) float price; - -@property (nonatomic, assign) NSUInteger quantity; - -@property (nonatomic, copy, nullable) NSString *itemId; - -- (nullable instancetype)initWithId:(nullable NSString *)itemId price:(float)price quantity:(NSUInteger)quantity; - -@end - -@interface ADJTrademob : NSObject - -+ (void)injectViewListingIntoEvent:(nullable ADJEvent *)event - itemIds:(nullable NSArray *)itemIds - metadata:(nullable NSDictionary *)metadata; - -+ (void)injectViewItemIntoEvent:(nullable ADJEvent *)event - itemId:(nullable NSString *)itemId - metadata:(nullable NSDictionary *)metadata; - - -+ (void)injectAddToBasketIntoEvent:(nullable ADJEvent *)event - items:(nullable NSArray *)items - metadata:(nullable NSDictionary *)metadata; - -+ (void)injectCheckoutIntoEvent:(nullable ADJEvent *)event - items:(nullable NSArray *)items - metadata:(nullable NSDictionary *)metadata; - -@end diff --git a/plugin/Trademob/ADJTrademob.m b/plugin/Trademob/ADJTrademob.m deleted file mode 100644 index ded8c4d56..000000000 --- a/plugin/Trademob/ADJTrademob.m +++ /dev/null @@ -1,153 +0,0 @@ -// -// ADJTrademob.m -// Adjust -// -// Created by Davit Ohanyan on 9/14/15. -// Copyright © 2015 Trademob GmbH. All rights reserved. -// - -#import "ADJTrademob.h" -#import "ADJAdjustFactory.h" - -static const NSUInteger MAX_LISTING_ITEMS_COUNT = 5; - -@implementation ADJTrademobItem - -- (instancetype)initWithId:(NSString *)itemId price:(float)price quantity:(NSUInteger)quantity { - self = [super init]; - - if (self) { - self.itemId = itemId; - self.price = price; - self.quantity = quantity; - } - - return self; -} - -+ (NSDictionary *)dictionaryFromItem:(ADJTrademobItem *)item { - return @{@"itemId": item.itemId, - @"price": [NSNumber numberWithFloat:item.price], - @"quantity":[NSNumber numberWithUnsignedInteger:item.quantity]}; -} - -@end - -@implementation ADJTrademob - -+ (void)injectViewListingIntoEvent:(ADJEvent *)event - itemIds:(NSArray *)itemIds - metadata:(NSDictionary *)metadata { - [event addPartnerParameter:@"tm_item" value:[ADJTrademob stringifyItemIds:itemIds]]; - [event addPartnerParameter:@"tm_md" value:[ADJTrademob stringifyMetadata:metadata]]; -} - -+ (void)injectViewItemIntoEvent:(ADJEvent *)event - itemId:(NSString *)itemId - metadata:(NSDictionary *)metadata { - [event addPartnerParameter:@"tm_item" value:itemId]; - [event addPartnerParameter:@"tm_md" value:[ADJTrademob stringifyMetadata:metadata]]; -} - -+ (void)injectAddToBasketIntoEvent:(ADJEvent *)event - items:(NSArray *)items - metadata:(NSDictionary *)metadata { - [event addPartnerParameter:@"tm_item" value:[ADJTrademob stringifyItems:items]]; - [event addPartnerParameter:@"tm_md" value:[ADJTrademob stringifyMetadata:metadata]]; -} - -+ (void)injectCheckoutIntoEvent:(ADJEvent *)event - items:(NSArray *)items - metadata:(NSDictionary *)metadata { - [event addPartnerParameter:@"tm_item" value:[ADJTrademob stringifyItems:items]]; - [event addPartnerParameter:@"tm_md" value:[ADJTrademob stringifyMetadata:metadata]]; -} - -# pragma private helper functions - -+ (NSString *)stringifyItemIds:(NSArray *)itemIds { - NSUInteger length = [itemIds count]; - NSMutableArray *filteredArray = [NSMutableArray array]; - - for (NSUInteger index = 0; index < length; ++index) { - if (index >= MAX_LISTING_ITEMS_COUNT) { - break; - } - - NSObject *currentId = itemIds[index]; - - if ([currentId isKindOfClass:[NSString class]] && ![(NSString *)currentId isEqualToString:@""]) { - [filteredArray addObject:currentId]; - } - } - - NSString *tmItemIds = [ADJTrademob stringify:filteredArray]; - - if (nil == tmItemIds) { - tmItemIds = @"[]"; - } - - return [tmItemIds stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]; -} - -+ (NSString *)stringifyItems:(NSArray *)items { - NSUInteger length = [items count]; - NSMutableArray *filteredItems = [NSMutableArray array]; - - for (NSUInteger index = 0; index < length; ++index) { - if (index >= MAX_LISTING_ITEMS_COUNT) { - break; - } - - ADJTrademobItem *currentItem = items[index]; - - if ([currentItem isKindOfClass:[ADJTrademobItem class]]) { - NSDictionary *dict = [ADJTrademobItem dictionaryFromItem:currentItem]; - [filteredItems addObject:dict]; - } - } - - NSString *tmItemIds = [ADJTrademob stringify:filteredItems]; - - if (nil == tmItemIds) { - tmItemIds = @"[]"; - } - - return [tmItemIds stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]; -} - -+ (NSString *)stringifyMetadata: (NSDictionary *)metadata { - NSMutableDictionary *filteredData = [NSMutableDictionary dictionary]; - - [metadata enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) { - if ([value isKindOfClass:[NSString class]]) { - filteredData[key] = value; - } - }]; - - NSString *jsonMetaData = [ADJTrademob stringify:filteredData]; - - if (nil == jsonMetaData) { - jsonMetaData = @"{}"; - } - - return [jsonMetaData stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]; -} - -+ (NSString *)stringify:(NSObject *)object { - if (nil == object) { - return nil; - } - - NSError *error; - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error]; - - if (!jsonData || error) { - [ADJAdjustFactory.logger error:@"%@", [error debugDescription]]; - return nil; - } else { - return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - } -} - -@end diff --git a/plugin/Trademob/Adjust b/plugin/Trademob/Adjust deleted file mode 120000 index 9a4029b12..000000000 --- a/plugin/Trademob/Adjust +++ /dev/null @@ -1 +0,0 @@ -../../Adjust \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index d856b0c11..e234fe080 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -37,13 +37,13 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding static SDK framework and copying it to destination folder ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building static SDK framework and copying it to destination folder ... ${NC}" xcodebuild -target AdjustStatic -configuration Release clean build echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding universal tvOS SDK framework (device + simulator) and copying it to destination folder ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building universal tvOS SDK framework (device + simulator) and copying it to destination folder ... ${NC}" xcodebuild -configuration Release -target AdjustSdkTv -arch x86_64 -sdk appletvsimulator clean build xcodebuild -configuration Release -target AdjustSdkTv -arch arm64 -sdk appletvos build cp -Rv build/Release-appletvos/AdjustSdkTv.framework frameworks/static @@ -59,7 +59,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic iOS and tvOS targets with Carthage ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic iOS and tvOS targets with Carthage ... ${NC}" #carthage build --no-skip-current arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -86,7 +86,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic iMessage target with Carthage ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic iMessage target with Carthage ... ${NC}" #carthage build --no-skip-current arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -106,7 +106,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic WebBridge target with Carthage ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic WebBridge target with Carthage ... ${NC}" #carthage build --no-skip-current arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -125,7 +125,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding static test library framework and copying it to destination folder ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building static test library framework and copying it to destination folder ... ${NC}" cd ${ROOT_DIR}/AdjustTests/AdjustTestLibrary xcodebuild -target AdjustTestLibraryStatic -configuration Debug clean build echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" diff --git a/scripts/build_definitions.sh b/scripts/build_definitions.sh index 76d51df39..b88771dd1 100755 --- a/scripts/build_definitions.sh +++ b/scripts/build_definitions.sh @@ -144,6 +144,16 @@ Usage: $0 [options] XCF_OUTPUT_STATIC_FRMK_FOLDER="frameworks-static" XCF_OUTPUT_STATIC_TEST_FRMK_FOLDER="test-static-framework" + # Output folder for frameworks and xcframeworks platforms - ios, tvos, iMessage and Web bridge + XCF_OUTPUT_STATIC_FRMK_IOS_FOLDER="AdjustSdk-iOS-Static" + XCF_OUTPUT_STATIC_FRMK_TV_FOLDER="AdjustSdk-tvOS-Static" + XCF_OUTPUT_STATIC_FRMK_IM_FOLDER="AdjustSdk-iMessage-Static" + XCF_OUTPUT_STATIC_FRMK_WEB_BRIDGE_FOLDER="AdjustSdk-WebBridge-Static" + + XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER="AdjustSdk-iOS-tvOS-xcframework" + XCF_OUTPUT_XCFRMK_IM_FOLDER="AdjustSdk-iMessage-xcframework" + XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER="AdjustSdk-WebBridge-xcframework" + # SDK Schema names - Dynamic SCHEMA_NAME__ADJUST_IOS="AdjustSdk" SCHEMA_NAME__ADJUST_TV="AdjustSdkTv" @@ -158,9 +168,9 @@ Usage: $0 [options] # SDK frameworks and xcframework names XCF_FRM_NAME__ADJUST_IOS="AdjustSdk" - XCF_FRM_NAME__ADJUST_TV="AdjustSdkTv" - XCF_FRM_NAME__ADJUST_IM="AdjustSdkIm" - XCF_FRM_NAME__ADJUST_WEB_BRIDGE="AdjustSdkWebBridge" + XCF_FRM_NAME__ADJUST_TV="AdjustSdk" + XCF_FRM_NAME__ADJUST_IM="AdjustSdk" + XCF_FRM_NAME__ADJUST_WEB_BRIDGE="AdjustSdk" # xcode archive names ARCHIVE_NAME__IOS_DEVICE="AdjustSdk-Device" diff --git a/scripts/build_frameworks.sh b/scripts/build_frameworks.sh index b7401bfe6..e31b7924a 100755 --- a/scripts/build_frameworks.sh +++ b/scripts/build_frameworks.sh @@ -40,44 +40,44 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Executing definitions script - Done! ${ if [[ $BUILD_DYNAMIC_FRAMEWORK -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Dynamic Frameworks... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Dynamic Frameworks... ${NC}" source ./scripts/dynamic_frameworks.sh - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Dynamic Frameworks - Done! ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Dynamic Frameworks - Done! ${NC}" fi # ======================================== # if [[ $BUILD_STATIC_FRAMEWORK -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Static Frameworks... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Static Frameworks... ${NC}" source ./scripts/static_frameworks.sh - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Static Frameworks - Done! ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Static Frameworks - Done! ${NC}" fi # ======================================== # if [[ $BUILD_DYNAMIC_XCFRAMEWORK -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Dynamic XCFrameworks... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Dynamic XCFrameworks... ${NC}" source ./scripts/dynamic_xcframeworks.sh - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Dynamic XCFrameworks - Done! ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Dynamic XCFrameworks - Done! ${NC}" fi # ======================================== # if [[ $BUILD_STATIC_XCFRAMEWORK -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Static XCFrameworks... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Static XCFrameworks... ${NC}" source ./scripts/static_xcframeworks.sh - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Static XCFrameworks - Done! ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Static XCFrameworks - Done! ${NC}" fi # ======================================== # if [[ $BUILD_TEST_FRAMEWORK -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Test Framework... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Test Framework... ${NC}" source ./scripts/build_test_framework.sh - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding Test Framework - Done! ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building Test Framework - Done! ${NC}" fi diff --git a/scripts/build_test_framework.sh b/scripts/build_test_framework.sh index 6561c2054..67e2d31e7 100755 --- a/scripts/build_test_framework.sh +++ b/scripts/build_test_framework.sh @@ -2,7 +2,7 @@ # ======================================== # -echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding static test library framework and copying it to destination folder ... ${NC}" +echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building static test library framework and copying it to destination folder ... ${NC}" cd "AdjustTests/AdjustTestLibrary" xcodebuild -target AdjustTestLibraryStatic -configuration Debug clean build cd - diff --git a/scripts/dynamic_frameworks.sh b/scripts/dynamic_frameworks.sh index 5b84f1044..a822cc459 100755 --- a/scripts/dynamic_frameworks.sh +++ b/scripts/dynamic_frameworks.sh @@ -29,7 +29,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" if [[ $BUILD_TARGET_IOS -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic iOS target with Carthage ... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic iOS target with Carthage ... ${NC}" arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -58,7 +58,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" if [[ $BUILD_TARGET_TVOS -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic tvOS targets with Carthage ... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic tvOS targets with Carthage ... ${NC}" arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -87,7 +87,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" if [[ $BUILD_TARGET_IM -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic iMessage target with Carthage ... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic iMessage target with Carthage ... ${NC}" #carthage build --no-skip-current arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" @@ -117,7 +117,7 @@ echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" if [[ $BUILD_TARGET_WEB_BRIDGE -eq 1 ]] then - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Bulding dynamic WebBridge target with Carthage ... ${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Building dynamic WebBridge target with Carthage ... ${NC}" #carthage build --no-skip-current arch -x86_64 /bin/bash ./scripts/carthage_xcode.sh build --no-skip-current echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Done! ${NC}" diff --git a/scripts/dynamic_xcframeworks.sh b/scripts/dynamic_xcframeworks.sh index be5a08781..ee1464d17 100755 --- a/scripts/dynamic_xcframeworks.sh +++ b/scripts/dynamic_xcframeworks.sh @@ -57,14 +57,14 @@ then ${TV_BCSYMBOLS} \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -debug-symbols "$(pwd -P)/${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/dSYMs/${XCF_FRM_NAME__ADJUST_TV}.framework.dSYM" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" else xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" fi elif [[ $BUILD_TARGET_IOS -eq 1 ]] then @@ -75,12 +75,12 @@ then ${IOS_BCSYMBOLS} \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -debug-symbols "$(pwd -P)/${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_SIMULATOR}.xcarchive/dSYMs/${XCF_FRM_NAME__ADJUST_IOS}.framework.dSYM" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" else xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IOS_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" fi elif [[ $BUILD_TARGET_TVOS -eq 1 ]] then @@ -91,12 +91,12 @@ then ${TV_BCSYMBOLS} \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -debug-symbols "$(pwd -P)/${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/dSYMs/${XCF_FRM_NAME__ADJUST_TV}.framework.dSYM" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" else xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__TV_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_TV}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" fi fi @@ -121,15 +121,15 @@ then if [[ $BUILD_TARGET_IOS -eq 1 ]] && [[ $BUILD_TARGET_TVOS -eq 1 ]] then - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_TV_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_TV_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" elif [[ $BUILD_TARGET_IOS -eq 1 ]] then - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" else - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_TV}.xcframework" "${XCF_FRM_ZIP_NAME__TV_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" "${XCF_FRM_ZIP_NAME__TV_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" fi fi @@ -158,12 +158,12 @@ then ${IM_IOS_BCSYMBOLS} \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IM_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IM}.framework" \ -debug-symbols "$(pwd -P)/${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IM_SIMULATOR}.xcarchive/dSYMs/${XCF_FRM_NAME__ADJUST_IM}.framework.dSYM" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" else xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IM_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IM}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__IM_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_IM}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" fi # Cleanup archive files @@ -173,8 +173,8 @@ then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Signing and Archiving (ZIP) Dynamic XCFramework for iOS (iMessage) ...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IM}.xcframework" "${XCF_FRM_ZIP_NAME__IM_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/" "${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" "${XCF_FRM_ZIP_NAME__IM_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" fi # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = @@ -202,14 +202,14 @@ then ${WEB_IOS_BCSYMBOLS} \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__WEB_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework" \ -debug-symbols "$(pwd -P)/${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__WEB_SIMULATOR}.xcarchive/dSYMs/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework.dSYM" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" else xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__WEB_DEVICE}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${ARCHIVE_NAME__WEB_SIMULATOR}.xcarchive/Products/Library/Frameworks/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" fi @@ -220,8 +220,8 @@ then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Signing and Archiving (ZIP) Dynamic XCFramework for iOS (WebBridge) ...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_DYNAMIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_DYNAMIC}-"${SDK_VERSION}".xcframework.zip" fi # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = diff --git a/scripts/static_frameworks.sh b/scripts/static_frameworks.sh index 1b9cda3a0..5a587e724 100755 --- a/scripts/static_frameworks.sh +++ b/scripts/static_frameworks.sh @@ -5,13 +5,17 @@ source ./scripts/build_definitions.sh -fs echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Static Frameworks build - START... ${NC}" mkdir -p "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}" +mkdir -p "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_IOS_FOLDER}" +mkdir -p "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_TV_FOLDER}" +mkdir -p "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_IM_FOLDER}" +mkdir -p "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_WEB_BRIDGE_FOLDER}" if [[ $BUILD_TARGET_IOS -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding Static Frameworks for iOS...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building Static Frameworks for iOS...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - build_static_fat_framework "${SCHEMA_NAME__ADJUST_IOS_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_IOS}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}" "${XCF_FRM_ZIP_NAME__IOS_STATIC}-"${SDK_VERSION}".framework.zip" + build_static_fat_framework "${SCHEMA_NAME__ADJUST_IOS_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_IOS}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_IOS_FOLDER}" "${XCF_FRM_ZIP_NAME__IOS_STATIC}-"${SDK_VERSION}".framework.zip" else echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Skipping iOS SDK framework build ... ${NC}" fi @@ -19,9 +23,9 @@ fi if [[ $BUILD_TARGET_TVOS -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding static Frameworks for tvOS...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building static Frameworks for tvOS...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - build_static_fat_framework "${SCHEMA_NAME__ADJUST_TV_STATIC}" "tvos" "${XCF_FRM_NAME__ADJUST_TV}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}" "${XCF_FRM_ZIP_NAME__TV_STATIC}-"${SDK_VERSION}".framework.zip" + build_static_fat_framework "${SCHEMA_NAME__ADJUST_TV_STATIC}" "tvos" "${XCF_FRM_NAME__ADJUST_TV}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_TV_FOLDER}" "${XCF_FRM_ZIP_NAME__TV_STATIC}-"${SDK_VERSION}".framework.zip" else echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Skipping tvOS SDK framework build ... ${NC}" fi @@ -29,9 +33,9 @@ fi if [[ $BUILD_TARGET_IM -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding static Frameworks for iOS (iMessage)...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building static Frameworks for iOS (iMessage)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - build_static_fat_framework "${SCHEMA_NAME__ADJUST_IM_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_IM}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}" "${XCF_FRM_ZIP_NAME__IM_STATIC}-"${SDK_VERSION}".framework.zip" + build_static_fat_framework "${SCHEMA_NAME__ADJUST_IM_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_IM}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_IM_FOLDER}" "${XCF_FRM_ZIP_NAME__IM_STATIC}-"${SDK_VERSION}".framework.zip" else echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Skipping iMessage SDK framework build ... ${NC}" fi @@ -39,9 +43,9 @@ fi if [[ $BUILD_TARGET_WEB_BRIDGE -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding static Frameworks for iOS (WebBridge)...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building static Frameworks for iOS (WebBridge)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - build_static_fat_framework "${SCHEMA_NAME__ADJUST_WEB_BRIDGE_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_STATIC}-"${SDK_VERSION}".framework.zip" + build_static_fat_framework "${SCHEMA_NAME__ADJUST_WEB_BRIDGE_STATIC}" "ios" "${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}" "${XCF_OUTPUT_FOLDER}" "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_FOLDER}/${XCF_OUTPUT_STATIC_FRMK_WEB_BRIDGE_FOLDER}" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_STATIC}-"${SDK_VERSION}".framework.zip" else echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} Skipping iOS (WebBridge) SDK framework build ... ${NC}" fi diff --git a/scripts/static_xcframeworks.sh b/scripts/static_xcframeworks.sh index 28ca6f11b..af13ce130 100755 --- a/scripts/static_xcframeworks.sh +++ b/scripts/static_xcframeworks.sh @@ -20,7 +20,7 @@ then fi echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding Static XCFramework for ${TRAGET_PLATFORM_DESCRIPTION} ...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building Static XCFramework for ${TRAGET_PLATFORM_DESCRIPTION} ...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" xcodebuild clean @@ -54,7 +54,7 @@ then fi echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding Static XCFramework for ${TRAGET_PLATFORM_DESCRIPTION} ...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building Static XCFramework for ${TRAGET_PLATFORM_DESCRIPTION} ...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" if [[ $BUILD_TARGET_IOS -eq 1 ]] && [[ $BUILD_TARGET_TVOS -eq 1 ]] @@ -64,7 +64,7 @@ then -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IOS_STATIC}/iphonesimulator/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_TV_STATIC}/appletvos/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_TV_STATIC}/appletvsimulator/${XCF_FRM_NAME__ADJUST_TV}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" # Cleanup built frameworks rm -rf "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IOS_STATIC}" @@ -74,7 +74,7 @@ then xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IOS_STATIC}/iphoneos/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IOS_STATIC}/iphonesimulator/${XCF_FRM_NAME__ADJUST_IOS}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" # Cleanup built frameworks rm -rf "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IOS_STATIC}" @@ -83,7 +83,7 @@ then xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_TV_STATIC}/appletvos/${XCF_FRM_NAME__ADJUST_TV}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_TV_STATIC}/appletvsimulator/${XCF_FRM_NAME__ADJUST_TV}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" # Cleanup built frameworks rm -rf "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_TV_STATIC}" @@ -95,15 +95,15 @@ then if [[ $BUILD_TARGET_IOS -eq 1 ]] && [[ $BUILD_TARGET_TVOS -eq 1 ]] then - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_TV_STATIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_TV_STATIC}-"${SDK_VERSION}".xcframework.zip" elif [[ $BUILD_TARGET_IOS -eq 1 ]] then - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_STATIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_IOS}.xcframework" "${XCF_FRM_ZIP_NAME__IOS_STATIC}-"${SDK_VERSION}".xcframework.zip" else - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_TV}.xcframework" "${XCF_FRM_ZIP_NAME__TV_STATIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IOS_TVOS_FOLDER}/${XCF_FRM_NAME__ADJUST_TV}.xcframework" "${XCF_FRM_ZIP_NAME__TV_STATIC}-"${SDK_VERSION}".xcframework.zip" fi fi @@ -112,7 +112,7 @@ fi if [[ $BUILD_TARGET_IM -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding Static XCFramework for iOS (iMessage)...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building Static XCFramework for iOS (iMessage)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" xcodebuild clean @@ -130,7 +130,7 @@ then xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IM_STATIC}/iphoneos/${XCF_FRM_NAME__ADJUST_IM}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IM_STATIC}/iphonesimulator/${XCF_FRM_NAME__ADJUST_IM}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" # Cleanup built frameworks rm -rf "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_IM_STATIC}" @@ -138,8 +138,8 @@ then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Signing and Archiving (ZIP) Static XCFramework for iOS (iMessage)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_IM}.xcframework" "${XCF_FRM_ZIP_NAME__IM_STATIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_IM_FOLDER}/${XCF_FRM_NAME__ADJUST_IM}.xcframework" "${XCF_FRM_ZIP_NAME__IM_STATIC}-"${SDK_VERSION}".xcframework.zip" fi @@ -148,7 +148,7 @@ fi if [[ $BUILD_TARGET_WEB_BRIDGE -eq 1 ]] then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Buiding Static XCFramework for iOS (WebBridge)...${NC}" + echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Building Static XCFramework for iOS (WebBridge)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" xcodebuild clean @@ -166,7 +166,7 @@ then xcodebuild -create-xcframework \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_WEB_BRIDGE_STATIC}/iphoneos/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework" \ -framework "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_WEB_BRIDGE_STATIC}/iphonesimulator/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.framework" \ - -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" + -output "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" # Cleanup built frameworks rm -rf "./${XCF_OUTPUT_FOLDER}/${SCHEMA_NAME__ADJUST_WEB_BRIDGE_STATIC}" @@ -174,8 +174,8 @@ then echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} XCFramework: Signing and Archiving (ZIP) Static XCFramework for iOS (WebBridge)...${NC}" echo -e "${CYAN}[ADJUST][BUILD]:${GREEN} = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =${NC}" - codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" - archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_STATIC}-"${SDK_VERSION}".xcframework.zip" + codesign -s "$SDK_CODE_SIGN_IDENTITY" -f --timestamp "./${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}/${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" + archive_framework "${XCF_OUTPUT_FOLDER}/${XCF_OUTPUT_STATIC_XCFRMK_FOLDER}" "${XCF_OUTPUT_XCFRMK_WEB_BRIDGE_FOLDER}/${XCF_FRM_NAME__ADJUST_WEB_BRIDGE}.xcframework" "${XCF_FRM_ZIP_NAME__WEB_BRIDGE_STATIC}-"${SDK_VERSION}".xcframework.zip" fi # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =