Skip to content

Commit 6b58557

Browse files
authored
Merge pull request #590 from adjust/v4380
Version 4.38.0
2 parents 70fa9e9 + cbe9ff7 commit 6b58557

File tree

26 files changed

+146
-30
lines changed

26 files changed

+146
-30
lines changed

Adjust/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ext {
99
coreMinSdkVersion = 9
1010
coreCompileSdkVersion = 34
1111
coreTargetSdkVersion = 34
12-
coreVersionName = '4.37.1'
12+
coreVersionName = '4.38.0'
1313
defaultVersionCode = 1
1414
webbridgeMinSdkVersion = 17
1515
samsungReferrerMinSdkVersion = 18

Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java

+32-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import android.content.pm.ResolveInfo;
1717
import android.net.Uri;
1818
import android.os.Handler;
19+
import android.text.TextUtils;
1920

2021
import com.adjust.sdk.network.ActivityPackageSender;
2122
import com.adjust.sdk.network.IActivityPackageSender;
@@ -81,6 +82,7 @@ public class ActivityHandler implements IActivityHandler {
8182
private InstallReferrer installReferrer;
8283
private InstallReferrerHuawei installReferrerHuawei;
8384
private InstallReferrerMeta installReferrerMeta;
85+
private OnDeeplinkResolvedListener cachedDeeplinkResolutionCallback;
8486

8587
@Override
8688
public void teardown() {
@@ -439,6 +441,16 @@ public void run() {
439441
});
440442
}
441443

444+
public void readOpenUrl(final Uri url, final long clickTime, final OnDeeplinkResolvedListener callback) {
445+
this.cachedDeeplinkResolutionCallback = callback;
446+
executor.submit(new Runnable() {
447+
@Override
448+
public void run() {
449+
readOpenUrlI(url, clickTime);
450+
}
451+
});
452+
}
453+
442454
private void updateAdidI(final String adid) {
443455
if (adid == null) {
444456
return;
@@ -860,6 +872,7 @@ public void run(ActivityHandler activityHandler) {
860872
logger.info("Default tracker: '%s'", adjustConfig.defaultTracker);
861873
}
862874

875+
// push token
863876
if (adjustConfig.pushToken != null) {
864877
logger.info("Push token: '%s'", adjustConfig.pushToken);
865878
if (internalState.hasFirstSdkStartOcurred()) {
@@ -878,6 +891,11 @@ public void run(ActivityHandler activityHandler) {
878891
}
879892
}
880893

894+
// cached deep link resolution callback
895+
if (this.cachedDeeplinkResolutionCallback == null) {
896+
this.cachedDeeplinkResolutionCallback = adjustConfig.cachedDeeplinkResolutionCallback;
897+
}
898+
881899
// GDPR
882900
if (internalState.hasFirstSdkStartOcurred()) {
883901
SharedPreferencesManager sharedPreferencesManager = SharedPreferencesManager.getDefaultInstance(getContext());
@@ -1520,6 +1538,19 @@ private void launchSdkClickResponseTasksI(SdkClickResponseData sdkClickResponseD
15201538
if (attributionUpdated) {
15211539
launchAttributionListenerI(handler);
15221540
}
1541+
1542+
if (!TextUtils.isEmpty(sdkClickResponseData.resolvedDeeplink)) {
1543+
if (cachedDeeplinkResolutionCallback != null) {
1544+
Runnable runnable = new Runnable() {
1545+
@Override
1546+
public void run() {
1547+
cachedDeeplinkResolutionCallback.onDeeplinkResolved(sdkClickResponseData.resolvedDeeplink);
1548+
cachedDeeplinkResolutionCallback = null;
1549+
}
1550+
};
1551+
handler.post(runnable);
1552+
}
1553+
}
15231554
}
15241555

15251556
private void launchSessionResponseTasksI(SessionResponseData sessionResponseData) {
@@ -1969,7 +2000,7 @@ private void readOpenUrlI(Uri url, long clickTime) {
19692000
}
19702001

19712002
if (Util.isUrlFilteredOut(url)) {
1972-
logger.debug("Deep link (" + url.toString() + ") processing skipped");
2003+
logger.debug("Deeplink (" + url.toString() + ") processing skipped");
19732004
return;
19742005
}
19752006

Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private Adjust() {
3434
*/
3535
public static synchronized AdjustInstance getDefaultInstance() {
3636
@SuppressWarnings("unused")
37-
String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.37.1";
37+
String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.38.0";
3838

3939
if (defaultInstance == null) {
4040
defaultInstance = new AdjustInstance();
@@ -131,6 +131,18 @@ public static void appWillOpenUrl(Uri url, Context context) {
131131
adjustInstance.appWillOpenUrl(url, extractApplicationContext(context));
132132
}
133133

134+
/**
135+
* Process the deep link that has opened an app and potentially get a resolved link.
136+
*
137+
* @param url Deep link URL to process
138+
* @param callback Callback where either resolved or echoed deep link will be sent.
139+
* @param context Application context
140+
*/
141+
public static void processDeeplink(Uri url, Context context, OnDeeplinkResolvedListener callback) {
142+
AdjustInstance adjustInstance = Adjust.getDefaultInstance();
143+
adjustInstance.processDeeplink(url, extractApplicationContext(context), callback);
144+
}
145+
134146
/**
135147
* Called to process referrer information sent with INSTALL_REFERRER intent.
136148
*

Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAttribution.java

+20
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.io.ObjectOutputStream;
88
import java.io.ObjectStreamField;
99
import java.io.Serializable;
10+
import java.util.HashMap;
11+
import java.util.Map;
1012

1113
/**
1214
* Created by pfms on 07/11/14.
@@ -102,6 +104,24 @@ public boolean equals(Object other) {
102104
return true;
103105
}
104106

107+
public Map<String, String> toMap() {
108+
Map<String, String> fields = new HashMap<>();
109+
if (trackerToken != null) fields.put("trackerToken", trackerToken);
110+
if (trackerName != null) fields.put("trackerName", trackerName);
111+
if (network != null) fields.put("network", network);
112+
if (campaign != null) fields.put("campaign", campaign);
113+
if (adgroup != null) fields.put("adgroup", adgroup);
114+
if (creative != null) fields.put("creative", creative);
115+
if (clickLabel != null) fields.put("clickLabel", clickLabel);
116+
if (adid != null) fields.put("adid", adid);
117+
if (costType != null) fields.put("costType", costType);
118+
if (costAmount != null) fields.put("costAmount", costAmount.toString());
119+
if (costCurrency != null) fields.put("costCurrency", costCurrency);
120+
if (fbInstallReferrer != null) fields.put("fbInstallReferrer", fbInstallReferrer);
121+
122+
return fields;
123+
}
124+
105125
@Override
106126
public int hashCode() {
107127
int hashCode = 17;

Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class AdjustConfig {
4747
boolean finalAttributionEnabled;
4848
String fbAppId;
4949
boolean readDeviceInfoOnceEnabled;
50+
OnDeeplinkResolvedListener cachedDeeplinkResolutionCallback;
5051

5152
public static final String ENVIRONMENT_SANDBOX = "sandbox";
5253
public static final String ENVIRONMENT_PRODUCTION = "production";

Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java

+29
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public PreLaunchActions() {
4949

5050
private PreLaunchActions preLaunchActions = new PreLaunchActions();
5151

52+
private OnDeeplinkResolvedListener cachedDeeplinkResolutionCallback;
53+
5254
/**
5355
* Base path for Adjust packages.
5456
*/
@@ -96,6 +98,7 @@ public void onCreate(final AdjustConfig adjustConfig) {
9698
adjustConfig.gdprPath = this.gdprPath;
9799
adjustConfig.subscriptionPath = this.subscriptionPath;
98100
adjustConfig.purchaseVerificationPath = this.purchaseVerificationPath;
101+
adjustConfig.cachedDeeplinkResolutionCallback = cachedDeeplinkResolutionCallback;
99102

100103
activityHandler = AdjustFactory.getActivityHandler(adjustConfig);
101104
setSendingReferrersAsNotSent(adjustConfig.context);
@@ -193,6 +196,32 @@ public void appWillOpenUrl(final Uri url, final Context context) {
193196
activityHandler.readOpenUrl(url, clickTime);
194197
}
195198

199+
/**
200+
* Process the deep link that has opened an app and potentially get a resolved link.
201+
*
202+
* @param url Deep link URL to process
203+
* @param callback Callback where either resolved or echoed deep link will be sent.
204+
* @param context Application context
205+
*/
206+
public void processDeeplink(Uri url, Context context, OnDeeplinkResolvedListener callback) {
207+
// if resolution result is not wanted, fallback to default method
208+
if (callback == null) {
209+
appWillOpenUrl(url, context);
210+
return;
211+
}
212+
213+
// if deep link processing is triggered prior to SDK being initialized
214+
long clickTime = System.currentTimeMillis();
215+
if (!checkActivityHandler("processDeeplink", true)) {
216+
saveDeeplink(url, clickTime, context);
217+
this.cachedDeeplinkResolutionCallback = callback;
218+
return;
219+
}
220+
221+
// if deep link processing was triggered with SDK being initialized
222+
activityHandler.readOpenUrl(url, clickTime, callback);
223+
}
224+
196225
/**
197226
* Called to process referrer information sent with INSTALL_REFERRER intent.
198227
*

Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public interface Constants {
3030

3131
String SCHEME = "https";
3232
String AUTHORITY = "app.adjust.com";
33-
String CLIENT_SDK = "android4.37.1";
33+
String CLIENT_SDK = "android4.38.0";
3434
String LOGTAG = "Adjust";
3535
String REFTAG = "reftag";
3636
String INSTALL_REFERRER = "install_referrer";

Adjust/sdk-core/src/main/java/com/adjust/sdk/IActivityHandler.java

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public interface IActivityHandler {
2525

2626
void readOpenUrl(Uri url, long clickTime);
2727

28+
void readOpenUrl(Uri url, long clickTime, OnDeeplinkResolvedListener callback);
29+
2830
boolean updateAttributionI(AdjustAttribution attribution);
2931

3032
void launchEventResponseTasks(EventResponseData eventResponseData);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.adjust.sdk;
2+
3+
public interface OnDeeplinkResolvedListener {
4+
void onDeeplinkResolved(String resolvedLink);
5+
}

Adjust/sdk-core/src/main/java/com/adjust/sdk/ResponseData.java

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ResponseData {
2525

2626
public ActivityPackage activityPackage;
2727
public Map<String, String> sendingParameters;
28+
public String resolvedDeeplink;
2829

2930
protected ResponseData() {
3031
success = false;

Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java

+2
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,8 @@ private void parseResponse(final ResponseData responseData, final String respons
519519
attributionJson,
520520
responseData.adid,
521521
Util.getSdkPrefixPlatform(clientSdk));
522+
523+
responseData.resolvedDeeplink = UtilNetworking.extractJsonString(jsonResponse,"resolved_click_url");
522524
}
523525

524526
private String buildAndExtractAuthorizationHeader(final Map<String, String> parameters,

Adjust/sdk-plugin-criteo/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
// Add SDK via module.
3131
compileOnly project(':sdk-core')
3232
// Add SDK via Maven.
33-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
33+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3434
}
3535

3636
// read local properties

Adjust/sdk-plugin-imei/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
// Add SDK via module.
3131
compileOnly project(':sdk-core')
3232
// Add SDK via Maven.
33-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
33+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3434
}
3535

3636
// read local properties

Adjust/sdk-plugin-oaid/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ dependencies {
3333
// Add SDK via module.
3434
compileOnly project(':sdk-core')
3535
// Add SDK via Maven.
36-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
36+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3737
implementation 'com.huawei.hms:ads-identifier:3.4.56.300'
3838
}
3939

Adjust/sdk-plugin-samsung-referrer/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies {
2727
// Add SDK via module.
2828
compileOnly project(':sdk-core')
2929
// Add SDK via Maven.
30-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
30+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3131

3232
// Add Samsung referrer lib via Maven.
3333
implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:3.0.1'

Adjust/sdk-plugin-sociomantic/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies {
2828
// Add SDK via module.
2929
compileOnly project(':sdk-core')
3030
// Add SDK via Maven.
31-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
31+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3232
}
3333

3434
// read local properties

Adjust/sdk-plugin-trademob/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies {
2828
// Add SDK via module.
2929
compileOnly project(':sdk-core')
3030
// Add SDK via Maven.
31-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
31+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3232
}
3333

3434
// read local properties

Adjust/sdk-plugin-vivo-referrer/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
// Add SDK via module.
3131
compileOnly project(':sdk-core')
3232
// Add SDK via Maven.
33-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
33+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3434
}
3535

3636
// read local properties

Adjust/sdk-plugin-webbridge/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies {
3030
// Add SDK via module.
3131
compileOnly project(':sdk-core')
3232
// Add SDK via Maven.
33-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
33+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3434
}
3535

3636
// read local properties

Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ var Adjust = {
211211
if (this.adjustConfig) {
212212
return this.adjustConfig.getSdkPrefix();
213213
} else {
214-
return 'web-bridge4.37.1';
214+
return 'web-bridge4.38.0';
215215
}
216216
},
217217

Adjust/sdk-plugin-xiaomi-referrer/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies {
3131
// Add SDK via module.
3232
compileOnly project(':sdk-core')
3333
// Add SDK via Maven.
34-
// implementation 'com.adjust.sdk:adjust-android:4.37.1'
34+
// implementation 'com.adjust.sdk:adjust-android:4.38.0'
3535

3636
// Add xiaomi referrer lib via Maven.
3737
implementation 'com.miui.referrer:homereferrer:1.0.0.6'

Adjust/test-app-core/src/main/java/com/adjust/testapp/AdjustCommandExecutor.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.adjust.sdk.OnDeeplinkResponseListener;
2727
import com.adjust.sdk.OnEventTrackingFailedListener;
2828
import com.adjust.sdk.OnEventTrackingSucceededListener;
29+
import com.adjust.sdk.OnDeeplinkResolvedListener;
2930
import com.adjust.sdk.OnPurchaseVerificationFinishedListener;
3031
import com.adjust.sdk.OnSessionTrackingFailedListener;
3132
import com.adjust.sdk.OnSessionTrackingSucceededListener;
@@ -92,6 +93,7 @@ public void executeCommand(final Command sentCommand) {
9293
case "trackAdRevenueV2" : trackAdRevenueV2(); break;
9394
case "trackSubscription": trackSubscription(); break;
9495
case "verifyPurchase": verifyPurchase(); break;
96+
case "processDeeplink" : processDeeplink(); break;
9597
//case "testBegin": testBegin(); break;
9698
// case "testEnd": testEnd(); break;
9799
}
@@ -370,20 +372,7 @@ public boolean launchReceivedDeeplink(Uri deeplink) {
370372
public void onAttributionChanged(AdjustAttribution attribution) {
371373
Log.d("TestApp", "attribution = " + attribution.toString());
372374

373-
MainActivity.testLibrary.addInfoToSend("trackerToken", attribution.trackerToken);
374-
MainActivity.testLibrary.addInfoToSend("trackerName", attribution.trackerName);
375-
MainActivity.testLibrary.addInfoToSend("network", attribution.network);
376-
MainActivity.testLibrary.addInfoToSend("campaign", attribution.campaign);
377-
MainActivity.testLibrary.addInfoToSend("adgroup", attribution.adgroup);
378-
MainActivity.testLibrary.addInfoToSend("creative", attribution.creative);
379-
MainActivity.testLibrary.addInfoToSend("clickLabel", attribution.clickLabel);
380-
MainActivity.testLibrary.addInfoToSend("adid", attribution.adid);
381-
MainActivity.testLibrary.addInfoToSend("costType", attribution.costType);
382-
if (attribution.costAmount != null) {
383-
MainActivity.testLibrary.addInfoToSend("costAmount", attribution.costAmount.toString());
384-
}
385-
MainActivity.testLibrary.addInfoToSend("costCurrency", attribution.costCurrency);
386-
MainActivity.testLibrary.addInfoToSend("fbInstallReferrer", attribution.fbInstallReferrer);
375+
MainActivity.testLibrary.setInfoToSend(attribution.toMap());
387376
MainActivity.testLibrary.sendInfoToServer(localBasePath);
388377
}
389378
});
@@ -844,6 +833,19 @@ public void onVerificationFinished(AdjustPurchaseVerificationResult result) {
844833
}
845834
});
846835
}
836+
837+
private void processDeeplink() {
838+
String deeplink = command.getFirstParameterValue("deeplink");
839+
Uri deeplinkUri = Uri.parse(deeplink);
840+
final String localBasePath = basePath;
841+
Adjust.processDeeplink(deeplinkUri, context, new OnDeeplinkResolvedListener() {
842+
@Override
843+
public void onDeeplinkResolved(String resolvedLink) {
844+
MainActivity.testLibrary.addInfoToSend("resolved_link", resolvedLink);
845+
MainActivity.testLibrary.sendInfoToServer(localBasePath);
846+
}
847+
});
848+
}
847849
/*
848850
private void testBegin() {
849851
if (command.containsParameter("teardown")) {

0 commit comments

Comments
 (0)