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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 32 additions & 1 deletion
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

Lines changed: 13 additions & 1 deletion
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

Lines changed: 20 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 29 additions & 0 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 0 deletions
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);
Lines changed: 5 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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;

0 commit comments

Comments
 (0)