diff --git a/Adjust/build.gradle b/Adjust/build.gradle index 80cb3eb92..5f1a78c87 100644 --- a/Adjust/build.gradle +++ b/Adjust/build.gradle @@ -9,7 +9,7 @@ ext { coreMinSdkVersion = 9 coreCompileSdkVersion = 34 coreTargetSdkVersion = 34 - coreVersionName = '4.38.1' + coreVersionName = '4.38.2' defaultVersionCode = 1 webbridgeMinSdkVersion = 17 samsungReferrerMinSdkVersion = 18 diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java index ce2e2a0d9..742f3892d 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java @@ -901,24 +901,6 @@ public void run(ActivityHandler activityHandler) { SharedPreferencesManager sharedPreferencesManager = SharedPreferencesManager.getDefaultInstance(getContext()); if (sharedPreferencesManager.getGdprForgetMe()) { gdprForgetMe(); - } else { - if (sharedPreferencesManager.getDisableThirdPartySharing()) { - disableThirdPartySharing(); - } - for (AdjustThirdPartySharing adjustThirdPartySharing : - adjustConfig.preLaunchActions.preLaunchAdjustThirdPartySharingArray) - { - trackThirdPartySharing(adjustThirdPartySharing); - } - if (adjustConfig.preLaunchActions.lastMeasurementConsentTracked != null) { - trackMeasurementConsent( - adjustConfig.preLaunchActions. - lastMeasurementConsentTracked.booleanValue()); - } - - adjustConfig.preLaunchActions.preLaunchAdjustThirdPartySharingArray = - new ArrayList<>(); - adjustConfig.preLaunchActions.lastMeasurementConsentTracked = null; } } @@ -966,7 +948,8 @@ public void run() { adjustConfig.gdprPath, adjustConfig.subscriptionPath, adjustConfig.purchaseVerificationPath, - deviceInfo.clientSdk); + deviceInfo.clientSdk, + adjustConfig.context); packageHandler = AdjustFactory.getPackageHandler( this, adjustConfig.context, @@ -980,7 +963,8 @@ public void run() { adjustConfig.gdprPath, adjustConfig.subscriptionPath, adjustConfig.purchaseVerificationPath, - deviceInfo.clientSdk); + deviceInfo.clientSdk, + adjustConfig.context); attributionHandler = AdjustFactory.getAttributionHandler( this, @@ -994,7 +978,8 @@ public void run() { adjustConfig.gdprPath, adjustConfig.subscriptionPath, adjustConfig.purchaseVerificationPath, - deviceInfo.clientSdk); + deviceInfo.clientSdk, + adjustConfig.context); sdkClickHandler = AdjustFactory.getSdkClickHandler( this, @@ -1008,7 +993,8 @@ public void run() { adjustConfig.gdprPath, adjustConfig.subscriptionPath, adjustConfig.purchaseVerificationPath, - deviceInfo.clientSdk); + deviceInfo.clientSdk, + adjustConfig.context); purchaseVerificationHandler = AdjustFactory.getPurchaseVerificationHandler( this, @@ -1218,6 +1204,27 @@ private void startI() { AdjustSigner.onResume(adjustConfig.logger); startFirstSessionI(); return; + } else { + SharedPreferencesManager sharedPreferencesManager = SharedPreferencesManager.getDefaultInstance(getContext()); + + // check if disable third party sharing request came, then send it first + if (sharedPreferencesManager.getDisableThirdPartySharing()) { + disableThirdPartySharingI(); + } + for (AdjustThirdPartySharing adjustThirdPartySharing : + adjustConfig.preLaunchActions.preLaunchAdjustThirdPartySharingArray) + { + trackThirdPartySharingI(adjustThirdPartySharing); + } + if (adjustConfig.preLaunchActions.lastMeasurementConsentTracked != null) { + trackMeasurementConsentI( + adjustConfig.preLaunchActions. + lastMeasurementConsentTracked.booleanValue()); + } + + adjustConfig.preLaunchActions.preLaunchAdjustThirdPartySharingArray = + new ArrayList<>(); + adjustConfig.preLaunchActions.lastMeasurementConsentTracked = null; } // it shouldn't start if it was disabled after a first session diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java index e24a358e4..beb22e45a 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java @@ -34,7 +34,7 @@ private Adjust() { */ public static synchronized AdjustInstance getDefaultInstance() { @SuppressWarnings("unused") - String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.38.1"; + String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.38.2"; if (defaultInstance == null) { defaultInstance = new AdjustInstance(); diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSigner.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSigner.java index c60b11438..a7c0ecbaf 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSigner.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustSigner.java @@ -63,6 +63,7 @@ public static void sign(Map parameters, String activityKind, Str } try { + logger.debug("Signing all the parameters"); Reflection.invokeInstanceMethod(signerInstance, "sign", new Class[]{Context.class, Map.class, String.class, String.class}, context, parameters, activityKind, clientSdk); diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java index 26559c6b0..1d486c0bc 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java @@ -30,7 +30,7 @@ public interface Constants { String SCHEME = "https"; String AUTHORITY = "app.adjust.com"; - String CLIENT_SDK = "android4.38.1"; + String CLIENT_SDK = "android4.38.2"; String LOGTAG = "Adjust"; String REFTAG = "reftag"; String INSTALL_REFERRER = "install_referrer"; diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java index be02ce9b1..b3bb0f4f3 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java @@ -85,9 +85,6 @@ ActivityPackage buildSessionPackage(boolean isInDelay) { sessionPackage.setPath("/session"); sessionPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.SESSION.toString(), - sessionPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - sessionPackage.setParameters(parameters); return sessionPackage; } @@ -98,9 +95,6 @@ ActivityPackage buildEventPackage(AdjustEvent event, boolean isInDelay) { eventPackage.setPath("/event"); eventPackage.setSuffix(getEventSuffix(event)); - AdjustSigner.sign(parameters, ActivityKind.EVENT.toString(), - eventPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - eventPackage.setParameters(parameters); if (isInDelay) { @@ -117,9 +111,6 @@ ActivityPackage buildInfoPackage(String source) { infoPackage.setPath("/sdk_info"); infoPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.INFO.toString(), - infoPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - infoPackage.setParameters(parameters); return infoPackage; } @@ -138,9 +129,6 @@ ActivityPackage buildClickPackage(String source) { clickPackage.setGooglePlayInstant(googlePlayInstant); clickPackage.setIsClick(isClick); - AdjustSigner.sign(parameters, ActivityKind.CLICK.toString(), - clickPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - clickPackage.setParameters(parameters); return clickPackage; } @@ -151,9 +139,6 @@ ActivityPackage buildAttributionPackage(String initiatedByDescription) { attributionPackage.setPath("attribution"); // does not contain '/' because of Uri.Builder.appendPath attributionPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.ATTRIBUTION.toString(), - attributionPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - attributionPackage.setParameters(parameters); return attributionPackage; } @@ -164,9 +149,6 @@ ActivityPackage buildGdprPackage() { gdprPackage.setPath("/gdpr_forget_device"); gdprPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.GDPR.toString(), - gdprPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - gdprPackage.setParameters(parameters); return gdprPackage; } @@ -177,9 +159,6 @@ ActivityPackage buildDisableThirdPartySharingPackage() { activityPackage.setPath("/disable_third_party_sharing"); activityPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.DISABLE_THIRD_PARTY_SHARING.toString(), - activityPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - activityPackage.setParameters(parameters); return activityPackage; } @@ -192,9 +171,6 @@ ActivityPackage buildThirdPartySharingPackage( activityPackage.setPath("/third_party_sharing"); activityPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.THIRD_PARTY_SHARING.toString(), - activityPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - activityPackage.setParameters(parameters); return activityPackage; } @@ -206,9 +182,6 @@ ActivityPackage buildMeasurementConsentPackage(final boolean consentMeasurement) activityPackage.setPath("/measurement_consent"); activityPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.MEASUREMENT_CONSENT.toString(), - activityPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - activityPackage.setParameters(parameters); return activityPackage; } @@ -219,9 +192,6 @@ ActivityPackage buildAdRevenuePackage(String source, JSONObject adRevenueJson) { adRevenuePackage.setPath("/ad_revenue"); adRevenuePackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.AD_REVENUE.toString(), - adRevenuePackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - adRevenuePackage.setParameters(parameters); return adRevenuePackage; } @@ -232,9 +202,6 @@ ActivityPackage buildAdRevenuePackage(AdjustAdRevenue adjustAdRevenue, boolean i adRevenuePackage.setPath("/ad_revenue"); adRevenuePackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.AD_REVENUE.toString(), - adRevenuePackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - adRevenuePackage.setParameters(parameters); if (isInDelay) { @@ -251,9 +218,6 @@ ActivityPackage buildSubscriptionPackage(AdjustPlayStoreSubscription subscriptio subscriptionPackage.setPath("/v2/purchase"); subscriptionPackage.setSuffix(""); - AdjustSigner.sign(parameters, ActivityKind.SUBSCRIPTION.toString(), - subscriptionPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - subscriptionPackage.setParameters(parameters); return subscriptionPackage; } @@ -265,9 +229,6 @@ ActivityPackage buildVerificationPackage(AdjustPurchase purchase, OnPurchaseVeri purchaseVerificationPackage.setSuffix(""); purchaseVerificationPackage.setPurchaseVerificationCallback(callback); - AdjustSigner.sign(parameters, ActivityKind.PURCHASE_VERIFICATION.toString(), - purchaseVerificationPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger); - purchaseVerificationPackage.setParameters(parameters); return purchaseVerificationPackage; } diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java index 123bf6a13..e04889376 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java @@ -1,11 +1,13 @@ package com.adjust.sdk.network; +import android.content.Context; import android.net.Uri; import com.adjust.sdk.ActivityKind; import com.adjust.sdk.ActivityPackage; import com.adjust.sdk.AdjustAttribution; import com.adjust.sdk.AdjustFactory; +import com.adjust.sdk.AdjustSigner; import com.adjust.sdk.Constants; import com.adjust.sdk.ILogger; import com.adjust.sdk.ResponseData; @@ -48,19 +50,22 @@ public class ActivityPackageSender implements IActivityPackageSender { private UrlStrategy urlStrategy; private IHttpsURLConnectionProvider httpsURLConnectionProvider; private IConnectionOptions connectionOptions; + private Context context; public ActivityPackageSender(final String adjustUrlStrategy, final String basePath, final String gdprPath, final String subscriptionPath, final String purchaseVerificationPath, - final String clientSdk) + final String clientSdk, + final Context context) { this.basePath = basePath; this.gdprPath = gdprPath; this.subscriptionPath = subscriptionPath; this.purchaseVerificationPath = purchaseVerificationPath; this.clientSdk = clientSdk; + this.context = context; logger = AdjustFactory.getLogger(); executor = new SingleThreadCachedScheduler("ActivityPackageSender"); @@ -92,6 +97,12 @@ public void run() { public ResponseData sendActivityPackageSync(final ActivityPackage activityPackage, final Map sendingParameters) { + AdjustSigner.sign(activityPackage.getParameters(), + activityPackage.getActivityKind().toString(), + activityPackage.getClientSdk(), + context, + logger); + boolean retryToSend; ResponseData responseData; do { diff --git a/Adjust/sdk-plugin-criteo/build.gradle b/Adjust/sdk-plugin-criteo/build.gradle index 041572cdd..82e93f106 100644 --- a/Adjust/sdk-plugin-criteo/build.gradle +++ b/Adjust/sdk-plugin-criteo/build.gradle @@ -30,7 +30,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-imei/build.gradle b/Adjust/sdk-plugin-imei/build.gradle index 0519c5400..eb772d7d7 100644 --- a/Adjust/sdk-plugin-imei/build.gradle +++ b/Adjust/sdk-plugin-imei/build.gradle @@ -30,7 +30,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-oaid/build.gradle b/Adjust/sdk-plugin-oaid/build.gradle index c2db48bb2..8b97bac9a 100644 --- a/Adjust/sdk-plugin-oaid/build.gradle +++ b/Adjust/sdk-plugin-oaid/build.gradle @@ -33,7 +33,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' implementation 'com.huawei.hms:ads-identifier:3.4.56.300' } diff --git a/Adjust/sdk-plugin-samsung-referrer/build.gradle b/Adjust/sdk-plugin-samsung-referrer/build.gradle index 5d4b94438..c3e3c191b 100644 --- a/Adjust/sdk-plugin-samsung-referrer/build.gradle +++ b/Adjust/sdk-plugin-samsung-referrer/build.gradle @@ -27,7 +27,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' // Add Samsung referrer lib via Maven. implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:3.0.1' diff --git a/Adjust/sdk-plugin-sociomantic/build.gradle b/Adjust/sdk-plugin-sociomantic/build.gradle index e4b413f9c..bd81bcb46 100644 --- a/Adjust/sdk-plugin-sociomantic/build.gradle +++ b/Adjust/sdk-plugin-sociomantic/build.gradle @@ -28,7 +28,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-trademob/build.gradle b/Adjust/sdk-plugin-trademob/build.gradle index ecba244aa..d090b86bd 100644 --- a/Adjust/sdk-plugin-trademob/build.gradle +++ b/Adjust/sdk-plugin-trademob/build.gradle @@ -28,7 +28,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-vivo-referrer/build.gradle b/Adjust/sdk-plugin-vivo-referrer/build.gradle index c9bf70fac..8824ef54c 100644 --- a/Adjust/sdk-plugin-vivo-referrer/build.gradle +++ b/Adjust/sdk-plugin-vivo-referrer/build.gradle @@ -30,7 +30,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-webbridge/build.gradle b/Adjust/sdk-plugin-webbridge/build.gradle index 902189f54..6129e32bc 100644 --- a/Adjust/sdk-plugin-webbridge/build.gradle +++ b/Adjust/sdk-plugin-webbridge/build.gradle @@ -30,7 +30,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' } // read local properties diff --git a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js index 7027e5ff1..7c327c5b3 100644 --- a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js +++ b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js @@ -211,7 +211,7 @@ var Adjust = { if (this.adjustConfig) { return this.adjustConfig.getSdkPrefix(); } else { - return 'web-bridge4.38.1'; + return 'web-bridge4.38.2'; } }, diff --git a/Adjust/sdk-plugin-xiaomi-referrer/build.gradle b/Adjust/sdk-plugin-xiaomi-referrer/build.gradle index f8eea34b4..733f24285 100644 --- a/Adjust/sdk-plugin-xiaomi-referrer/build.gradle +++ b/Adjust/sdk-plugin-xiaomi-referrer/build.gradle @@ -31,7 +31,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.38.1' + // implementation 'com.adjust.sdk:adjust-android:4.38.2' // Add xiaomi referrer lib via Maven. implementation 'com.miui.referrer:homereferrer:1.0.0.6' diff --git a/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java b/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java index 90d36573c..c102fa8e2 100644 --- a/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java +++ b/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java @@ -53,7 +53,7 @@ public TestActivityPackage(ActivityPackage activityPackage) { // default values appToken = "123456789012"; environment = "sandbox"; - clientSdk = "android4.38.1"; + clientSdk = "android4.38.2"; suffix = ""; attribution = new AdjustAttribution(); playServices = true; diff --git a/CHANGELOG.md b/CHANGELOG.md index 89653939e..74b057417 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +### Version 4.38.2 (28th February 2024) +#### Fixed +- Fixed occasional invalid signature cases when SDK package payload would be altered right before sending. + +#### Changed + - Updated order of tracking of `third_party_sharing` and `measurement_consent` packages if invoked before SDK initialization in subsequent SDK initializations. + +--- + ### Version 4.38.1 (30th January 2024) #### Added - Added support for `TradPlus` ad revenue tracking. diff --git a/VERSION b/VERSION index bcdb58032..c1a44ab2b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.38.1 +4.38.2