Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
b4c119d
feat: add config method to disable reading of appset Id
shashanksu Jul 22, 2025
09fe679
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
shashanksu Jul 22, 2025
305ca9a
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
shashanksu Jul 22, 2025
690ed3d
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
shashanksu Jul 22, 2025
18be7f5
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
shashanksu Jul 22, 2025
5b76e38
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
shashanksu Jul 22, 2025
1b79e18
Update Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
shashanksu Jul 22, 2025
ef60dc7
feat: add config method to disable reading of appSet Id in webbridge
shashanksu Jul 22, 2025
07caedd
feat: add feature flag for appSetId reading disabled
shashanksu Jul 22, 2025
52d501d
test: add changes to disable appset Id reading
shashanksu Jul 23, 2025
c0bffe4
feat: add timeout while waiting to read app set id
shashanksu Sep 30, 2025
afe1d80
refactor: cleanup
shashanksu Sep 30, 2025
202ac04
refactor: coding consistencies while using appset Id reading flag
shashanksu Nov 24, 2025
1791dd9
test: add ability to test sdk version getter
uerceg Nov 25, 2025
157290e
test: add ability to test google and amazon ad id getters
uerceg Nov 25, 2025
1a2f1ff
test: add ability to test google and amazon ad id web bridge getters
uerceg Nov 25, 2025
b2f566d
chore: random cleanups
uerceg Nov 25, 2025
a7bdcf4
feat: add tracking of unique event sequence
shashanksu Sep 22, 2025
94c58db
Refac: Encapsulate event metadata
nonelse Nov 4, 2025
c989af1
refactor: minor refactoring, added comment for more clarity
shashanksu Nov 11, 2025
440d61e
refactor: update EventMetadata to Serializable
shashanksu Dec 1, 2025
a11e0a8
fix: initialise eventSequence by default
shashanksu Dec 1, 2025
9cd49ae
feat: add adid and attribution getter with timeout
shashanksu Nov 19, 2025
a50f64b
feat: add adid and attribution getter with timeout in webbridge
shashanksu Nov 19, 2025
bb82dad
refactor: extract timeout callbacks
shashanksu Nov 21, 2025
7b5610b
test: add ability to test getters
shashanksu Nov 21, 2025
139faf5
chore: remove unrelated getters testing from this branch
shashanksu Nov 25, 2025
d2fad06
refactor: updated order of input parameters to align with other gette…
shashanksu Nov 27, 2025
e0e2a6b
fix: updated synchronisation of getters callback array for uncovered …
shashanksu Dec 3, 2025
153125a
test: fix race condition when running addInfoToSend from multiple thr…
uerceg Dec 4, 2025
f7eb54f
test: add support for getters burst tests
uerceg Dec 4, 2025
13bd764
test: add support for web bridge getters burst tests
uerceg Dec 4, 2025
9b0aafa
fix: keep array of getter callbacks in web bridge
uerceg Dec 4, 2025
b849a50
test: add support for last deep link getter burst tests
uerceg Dec 4, 2025
d09b144
test: rename id to test_callback_id
uerceg Dec 5, 2025
d759b07
refac: make getSdkVersion to use _handleGetterCallback
uerceg Dec 5, 2025
ecdf346
feat: update signature library version 3.62.0
shashanksu Dec 5, 2025
f920b8c
feat: update version number to 5.5.0
shashanksu Dec 5, 2025
cf1e8ab
docs: update changelog
shashanksu Dec 5, 2025
0519c83
Update CHANGELOG.md
shashanksu Dec 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Adjust/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ext {
coreMinSdkVersion = 21
coreCompileSdkVersion = 36
coreTargetSdkVersion = 36
coreVersionName = '5.4.6'
coreVersionName = '5.5.0'
defaultVersionCode = 1
webbridgeMinSdkVersion = 21
samsungReferrerMinSdkVersion = 21
Expand Down
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-fbpixel/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ dependencies {

implementation project(':sdk-core')
implementation project(':plugins:sdk-plugin-webbridge')
implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ dependencies {
implementation 'com.google.android.gms:play-services-appset:16.1.0'

implementation project(':sdk-core')
implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-keyboard/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ dependencies {
implementation 'com.google.android.gms:play-services-appset:16.1.0'

implementation project(':sdk-core')
implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-kotlin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@ dependencies {

implementation project(':sdk-core')

implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-tv/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ dependencies {
implementation 'com.google.android.gms:play-services-appset:16.1.0'

implementation project(':sdk-core')
implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/examples/example-app-webbridge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,5 @@ dependencies {

implementation project(':sdk-core')
implementation project(':plugins:sdk-plugin-webbridge')
implementation 'com.adjust.signature:adjust-android-signature:3.61.0'
implementation 'com.adjust.signature:adjust-android-signature:3.62.0'
}
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-huawei-referrer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
}

// read local properties
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-imei/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
}

// read local properties
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-meta-referrer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
}

// read local properties
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-oaid/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
implementation 'com.huawei.hms:ads-identifier:3.4.56.300'
}

Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-samsung-clouddev/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'

// Add Samsung clouddev lib.
compileOnly fileTree(include: ['*.aar'], dir: 'libs')
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-samsung-referrer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'

// Add Samsung referrer lib via Maven.
implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:3.0.1'
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-vivo-referrer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
}

// read local properties
Expand Down
2 changes: 1 addition & 1 deletion Adjust/plugins/sdk-plugin-webbridge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:5.4.6'
// implementation 'com.adjust.sdk:adjust-android:5.5.0'
}

// read local properties
Expand Down
183 changes: 84 additions & 99 deletions Adjust/plugins/sdk-plugin-webbridge/src/main/assets/adjust.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,48 @@
// generate random callback ID with prefix (similar to iOS implementation)
window.randomCallbackIdWithPrefix = function(prefix) {
const randomString = (Math.random() + 1).toString(36).substring(7);
return prefix + "_" + randomString;
};

var Adjust = {
// map to store callbacks by their unique callback ID
_callbackMap: {},

_handleGetterCallback: function(callback, callbackId) {
// store callback in map
this._callbackMap[callbackId] = callback;

// create a function on window with the callbackId name
// this function will be called by the native side
window[callbackId] = (function(adjustInstance, storedCallbackId) {
return function(value) {
var callback = adjustInstance._callbackMap[storedCallbackId];
if (callback) {
// for attribution, the native side passes a JSON object that's already parsed
// for other values, they're passed as strings
if (storedCallbackId.includes("adjust_getAttribution")) {
// value is already a JavaScript object (parsed from JSON)
// only parse if it's actually a string (shouldn't happen)
if (typeof value === 'string') {
callback(JSON.parse(value));
} else {
callback(value);
}
} else {
callback(value);
}
// clean up: remove callback and delete the function
delete adjustInstance._callbackMap[storedCallbackId];
delete window[storedCallbackId];
} else {
// callback was already cleaned up (teardown was called)
// safely remove the window function to prevent memory leaks
delete window[storedCallbackId];
}
};
})(this, callbackId);
},

initSdk: function (adjustConfig) {
if (adjustConfig && !adjustConfig.getSdkPrefix()) {
adjustConfig.setSdkPrefix(this.getSdkPrefix());
Expand Down Expand Up @@ -49,26 +93,15 @@ var Adjust = {
}
// supports legacy return with callback
if (arguments.length === 1) {
// with manual string call
if (typeof callback === 'string' || callback instanceof String) {
this.isEnabledCallbackName = callback;
} else {
// or save callback and call later
this.isEnabledCallbackName = 'Adjust.adjust_isEnabledCallback';
this.isEnabledCallbackFunction = callback;
}
AdjustBridge.isEnabled(this.isEnabledCallbackName);
// generate unique callback ID
const callbackId = window.randomCallbackIdWithPrefix("adjust_isEnabled");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.isEnabled(callbackId);
} else {
return AdjustBridge.isEnabled();
}
},

adjust_isEnabledCallback: function (isEnabled) {
if (AdjustBridge && this.isEnabledCallbackFunction) {
this.isEnabledCallbackFunction(isEnabled);
}
},

setReferrer: function (referrer) {
if (AdjustBridge) {
AdjustBridge.setReferrer(referrer);
Expand Down Expand Up @@ -195,107 +228,70 @@ var Adjust = {

getGoogleAdId: function (callback) {
if (AdjustBridge) {
if (typeof callback === 'string' || callback instanceof String) {
this.getGoogleAdIdCallbackName = callback;
} else {
this.getGoogleAdIdCallbackName = 'Adjust.adjust_getGoogleAdIdCallback';
this.getGoogleAdIdCallbackFunction = callback;
}
AdjustBridge.getGoogleAdId(this.getGoogleAdIdCallbackName);
}
},

adjust_getGoogleAdIdCallback: function (googleAdId) {
if (AdjustBridge && this.getGoogleAdIdCallbackFunction) {
this.getGoogleAdIdCallbackFunction(googleAdId);
}
},

getAmazonAdId: function (callback) {
if (AdjustBridge) {
return AdjustBridge.getAmazonAdId();
} else {
return undefined;
const callbackId = window.randomCallbackIdWithPrefix("adjust_getGoogleAdId");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.getGoogleAdId(callbackId);
}
},

getAdid: function (callback) {
if (AdjustBridge) {
if (typeof callback === 'string' || callback instanceof String) {
this.getAdIdCallbackName = callback;
} else {
this.getAdIdCallbackName = 'Adjust.adjust_getAdIdCallback';
this.getAdIdCallbackFunction = callback;
}
AdjustBridge.getAdid(this.getAdIdCallbackName);
if (AdjustBridge) {
const callbackId = window.randomCallbackIdWithPrefix("adjust_getAdid");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.getAdid(callbackId);
}
},

adjust_getAdIdCallback: function (adId) {
if (AdjustBridge && this.getAdIdCallbackFunction) {
this.getAdIdCallbackFunction(adId);
getAdidWithTimeout: function (timeoutInMilliSec, callback) {
if (AdjustBridge) {
const callbackId = window.randomCallbackIdWithPrefix("adjust_getAdidWithTimeout");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.getAdidWithTimeout(timeoutInMilliSec, callbackId);
}
},

getAmazonAdId: function (callbackSuccess,callbackFail) {
if (AdjustBridge) {
if (typeof callbackSuccess === 'string' || callbackSuccess instanceof String) {
this.getAmazonIdCallbackSuccessName = callbackSuccess;
} else {
this.getAmazonIdCallbackSuccessName = 'Adjust.adjust_getAmazonIdCallbackSuccess';
this.getAmazonIdCallbackSuccessFunction = callbackSuccess;
}
AdjustBridge.getAmazonAdId(this.getAmazonIdCallbackSuccessName);
}
},

adjust_getAmazonIdCallbackSuccess: function (amazonId) {
if (AdjustBridge && this.getAmazonIdCallbackSuccessFunction) {
this.getAmazonIdCallbackSuccessFunction(amazonId);
getAmazonAdId: function (callbackSuccess, callbackFail) {
if (AdjustBridge) {
const callbackId = window.randomCallbackIdWithPrefix("adjust_getAmazonAdId");
this._handleGetterCallback(callbackSuccess, callbackId);
// note: Java side only supports success callback, callbackFail is ignored
AdjustBridge.getAmazonAdId(callbackId);
}
},

getAttribution: function (callback) {
if (AdjustBridge) {
if (typeof callback === 'string' || callback instanceof String) {
this.getAttributionCallbackName = callback;
} else {
this.getAttributionCallbackName = 'Adjust.adjust_getAttributionCallback';
this.getAttributionCallbackFunction = callback;
}
AdjustBridge.getAttribution(this.getAttributionCallbackName);
if (AdjustBridge) {
const callbackId = window.randomCallbackIdWithPrefix("adjust_getAttribution");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.getAttribution(callbackId);
}
},

adjust_getAttributionCallback: function (attribution) {
if (AdjustBridge && this.getAttributionCallbackFunction) {
this.getAttributionCallbackFunction(attribution);
getAttributionWithTimeout: function (timeoutInMilliSec, callback) {
if (AdjustBridge) {
const callbackId = window.randomCallbackIdWithPrefix("adjust_getAttributionWithTimeout");
this._handleGetterCallback(callback, callbackId);
AdjustBridge.getAttributionWithTimeout(timeoutInMilliSec, callbackId);
}
},

getSdkVersion: function (callback) {
if (AdjustBridge) {
if (typeof callback === 'string' || callback instanceof String) {
this.getSdkVersionCallbackName = callback;
} else {
this.getSdkVersionCallbackName = 'Adjust.adjust_getSdkVersionCallback';
this.getSdkVersionCallbackFunction = callback;
}
AdjustBridge.getSdkVersion(this.getSdkVersionCallbackName);
}
},

adjust_getSdkVersionCallback: function (sdkVersion) {
if (AdjustBridge && this.getSdkVersionCallbackFunction) {
this.getSdkVersionCallbackFunction(this.getSdkPrefix() + '@' + sdkVersion);
const callbackId = window.randomCallbackIdWithPrefix("adjust_getSdkVersion");
// wrap callback to add SDK prefix before passing to _handleGetterCallback
const wrappedCallback = function(sdkVersion) {
callback(Adjust.getSdkPrefix() + '@' + sdkVersion);
};
this._handleGetterCallback(wrappedCallback, callbackId);
AdjustBridge.getSdkVersion(callbackId);
}
},

getSdkPrefix: function () {
if (this.adjustConfig) {
return this.adjustConfig.getSdkPrefix();
} else {
return 'web-bridge5.4.6';
return 'web-bridge5.5.0';
}
},

Expand All @@ -304,17 +300,6 @@ var Adjust = {
AdjustBridge.teardown();
}
this.adjustConfig = undefined;
this.isEnabledCallbackName = undefined;
this.isEnabledCallbackFunction = undefined;
this.getGoogleAdIdCallbackName = undefined;
this.getGoogleAdIdCallbackFunction = undefined;
this.getAdIdCallbackName = undefined;
this.getAdIdCallbackFunction = undefined;
this.getAttributionCallbackName = undefined;
this.getAttributionCallbackFunction = undefined;
this.getAmazonIdCallbackSuccessName = undefined;
this.getAmazonIdCallbackSuccessFunction = undefined;
this.getSdkVersionCallbackFunction = undefined;
this.getSdkVersionCallbackName = undefined;
this._callbackMap = {};
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ function AdjustConfig(appToken, environment, legacy) {
this.eventDeduplicationIdsMaxSize = null;
this.isFirstSessionDelayEnabled = null;
this.storeInfo = null;
this.isAppSetIdReadingEnabled = null;
}

AdjustConfig.EnvironmentSandbox = 'sandbox';
Expand Down Expand Up @@ -248,3 +249,7 @@ AdjustConfig.prototype.enableFirstSessionDelay = function() {
AdjustConfig.prototype.setStoreInfo = function(storeInfo) {
this.storeInfo = JSON.stringify(storeInfo);
};

AdjustConfig.prototype.disableAppSetIdReading = function() {
this.isAppSetIdReadingEnabled = false;
};
Loading