Skip to content

Commit b322fd4

Browse files
authored
Merge pull request #600 from adjust/v4384
Version 4.38.4
2 parents 65b3b8a + a0abd45 commit b322fd4

File tree

28 files changed

+224
-47
lines changed

28 files changed

+224
-47
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.38.3'
12+
coreVersionName = '4.38.4'
1313
defaultVersionCode = 1
1414
webbridgeMinSdkVersion = 17
1515
samsungReferrerMinSdkVersion = 18

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,6 +1466,7 @@ private void trackEventI(AdjustEvent event) {
14661466
updateActivityStateI(now);
14671467

14681468
PackageBuilder eventBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
1469+
eventBuilder.internalState = internalState;
14691470
ActivityPackage eventPackage = eventBuilder.buildEventPackage(event, internalState.isInDelayedStart());
14701471
packageHandler.addPackage(eventPackage);
14711472

@@ -1984,7 +1985,8 @@ private void sendInstallReferrerI(ReferrerDetails referrerDetails, String referr
19841985
activityState,
19851986
adjustConfig,
19861987
deviceInfo,
1987-
sessionParameters);
1988+
sessionParameters,
1989+
internalState);
19881990

19891991
sdkClickHandler.sendSdkClick(sdkClickPackage);
19901992
}
@@ -2017,7 +2019,8 @@ private void readOpenUrlI(Uri url, long clickTime) {
20172019
activityState,
20182020
adjustConfig,
20192021
deviceInfo,
2020-
sessionParameters);
2022+
sessionParameters,
2023+
internalState);
20212024

20222025
if (sdkClickPackage == null) {
20232026
return;
@@ -2105,6 +2108,7 @@ public static boolean deleteSessionPartnerParameters(Context context) {
21052108
private void transferSessionPackageI(long now) {
21062109
PackageBuilder builder = new PackageBuilder(adjustConfig, deviceInfo, activityState,
21072110
sessionParameters, now);
2111+
builder.internalState = internalState;
21082112
ActivityPackage sessionPackage = builder.buildSessionPackage(internalState.isInDelayedStart());
21092113
packageHandler.addPackage(sessionPackage);
21102114
packageHandler.sendFirstPackage();
@@ -2369,6 +2373,7 @@ private void setPushTokenI(String token) {
23692373

23702374
long now = System.currentTimeMillis();
23712375
PackageBuilder infoPackageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2376+
infoPackageBuilder.internalState = internalState;
23722377

23732378
ActivityPackage infoPackage = infoPackageBuilder.buildInfoPackage(Constants.PUSH);
23742379
packageHandler.addPackage(infoPackage);
@@ -2393,6 +2398,7 @@ private void gdprForgetMeI() {
23932398

23942399
long now = System.currentTimeMillis();
23952400
PackageBuilder gdprPackageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2401+
gdprPackageBuilder.internalState = internalState;
23962402

23972403
ActivityPackage gdprPackage = gdprPackageBuilder.buildGdprPackage();
23982404
packageHandler.addPackage(gdprPackage);
@@ -2427,6 +2433,7 @@ private void disableThirdPartySharingI() {
24272433

24282434
long now = System.currentTimeMillis();
24292435
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2436+
packageBuilder.internalState = internalState;
24302437

24312438
ActivityPackage activityPackage = packageBuilder.buildDisableThirdPartySharingPackage();
24322439
packageHandler.addPackage(activityPackage);
@@ -2457,6 +2464,7 @@ private void trackThirdPartySharingI(final AdjustThirdPartySharing adjustThirdPa
24572464
long now = System.currentTimeMillis();
24582465
PackageBuilder packageBuilder = new PackageBuilder(
24592466
adjustConfig, deviceInfo, activityState, sessionParameters, now);
2467+
packageBuilder.internalState = internalState;
24602468

24612469
ActivityPackage activityPackage =
24622470
packageBuilder.buildThirdPartySharingPackage(adjustThirdPartySharing);
@@ -2480,6 +2488,7 @@ private void trackMeasurementConsentI(final boolean consentMeasurement) {
24802488
long now = System.currentTimeMillis();
24812489
PackageBuilder packageBuilder = new PackageBuilder(
24822490
adjustConfig, deviceInfo, activityState, sessionParameters, now);
2491+
packageBuilder.internalState = internalState;
24832492

24842493
ActivityPackage activityPackage =
24852494
packageBuilder.buildMeasurementConsentPackage(consentMeasurement);
@@ -2500,6 +2509,7 @@ private void trackAdRevenueI(String source, JSONObject adRevenueJson) {
25002509
long now = System.currentTimeMillis();
25012510

25022511
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2512+
packageBuilder.internalState = internalState;
25032513

25042514
ActivityPackage adRevenuePackage = packageBuilder.buildAdRevenuePackage(source, adRevenueJson);
25052515
packageHandler.addPackage(adRevenuePackage);
@@ -2515,6 +2525,7 @@ private void trackAdRevenueI(AdjustAdRevenue adjustAdRevenue) {
25152525
long now = System.currentTimeMillis();
25162526

25172527
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2528+
packageBuilder.internalState = internalState;
25182529

25192530
ActivityPackage adRevenuePackage = packageBuilder.buildAdRevenuePackage(adjustAdRevenue, internalState.isInDelayedStart());
25202531
packageHandler.addPackage(adRevenuePackage);
@@ -2529,6 +2540,7 @@ private void trackSubscriptionI(final AdjustPlayStoreSubscription subscription)
25292540
long now = System.currentTimeMillis();
25302541

25312542
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2543+
packageBuilder.internalState = internalState;
25322544

25332545
ActivityPackage subscriptionPackage = packageBuilder.buildSubscriptionPackage(subscription, internalState.isInDelayedStart());
25342546
packageHandler.addPackage(subscriptionPackage);
@@ -2588,6 +2600,8 @@ private void verifyPurchaseI(final AdjustPurchase purchase, final OnPurchaseVeri
25882600

25892601
long now = System.currentTimeMillis();
25902602
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, now);
2603+
packageBuilder.internalState = internalState;
2604+
25912605
ActivityPackage verificationPackage = packageBuilder.buildVerificationPackage(purchase, callback);
25922606
if (verificationPackage == null) {
25932607
logger.warn("Purchase verification aborted because verification package is null");
@@ -2926,6 +2940,7 @@ private void disableThirdPartySharingForCoppaEnabledI() {
29262940
long now = System.currentTimeMillis();
29272941
PackageBuilder packageBuilder = new PackageBuilder(
29282942
adjustConfig, deviceInfo, activityState, sessionParameters, now);
2943+
packageBuilder.internalState = internalState;
29292944

29302945
ActivityPackage activityPackage =
29312946
packageBuilder.buildThirdPartySharingPackage(adjustThirdPartySharing);

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
package com.adjust.sdk;
1111

12+
import com.adjust.sdk.network.ErrorCodes;
13+
1214
import java.io.IOException;
1315
import java.io.ObjectInputStream;
1416
import java.io.ObjectOutputStream;
@@ -32,6 +34,10 @@ public class ActivityPackage implements Serializable {
3234
new ObjectStreamField("suffix", String.class),
3335
new ObjectStreamField("callbackParameters", (Class<Map<String,String>>)(Class)Map.class),
3436
new ObjectStreamField("partnerParameters", (Class<Map<String,String>>)(Class)Map.class),
37+
new ObjectStreamField("retryCount", int.class),
38+
new ObjectStreamField("firstErrorCode", int.class),
39+
new ObjectStreamField("lastErrorCode", int.class),
40+
new ObjectStreamField("waitBeforeSendTimeSeconds", double.class),
3541
};
3642

3743
private transient int hashCode;
@@ -61,6 +67,10 @@ public class ActivityPackage implements Serializable {
6167
private String installVersion;
6268
private Boolean googlePlayInstant;
6369
private Boolean isClick;
70+
private int retryCount;
71+
private int firstErrorCode;
72+
private int lastErrorCode;
73+
private double waitBeforeSendTimeSeconds;
6474

6575
public String getPath() {
6676
return path;
@@ -226,6 +236,35 @@ public String getFailureMessage() {
226236
return Util.formatString("Failed to track %s%s", activityKind.toString(), suffix);
227237
}
228238

239+
public int getRetryCount() {
240+
return retryCount;
241+
}
242+
243+
public int getFirstErrorCode() {
244+
return firstErrorCode;
245+
}
246+
247+
public int getLastErrorCode() {
248+
return lastErrorCode;
249+
}
250+
251+
public double getWaitBeforeSendTimeSeconds() {
252+
return waitBeforeSendTimeSeconds;
253+
}
254+
255+
public void setWaitBeforeSendTimeSeconds(double waitSeconds) {
256+
waitBeforeSendTimeSeconds = waitSeconds;
257+
}
258+
259+
public void addError(int errorCode) {
260+
retryCount++;
261+
if (firstErrorCode == 0) {
262+
firstErrorCode = errorCode;
263+
} else {
264+
lastErrorCode = errorCode;
265+
}
266+
}
267+
229268
private void writeObject(ObjectOutputStream stream) throws IOException {
230269
stream.defaultWriteObject();
231270
}
@@ -240,6 +279,10 @@ private void readObject(ObjectInputStream stream) throws ClassNotFoundException,
240279
suffix = Util.readStringField(fields, "suffix", null);
241280
callbackParameters = Util.readObjectField(fields, "callbackParameters", null);
242281
partnerParameters = Util.readObjectField(fields, "partnerParameters", null);
282+
retryCount = Util.readIntField(fields, "errorCount", 0);
283+
firstErrorCode = Util.readIntField(fields, "firstErrorCode", 0);
284+
lastErrorCode = Util.readIntField(fields, "lastErrorCode", 0);
285+
waitBeforeSendTimeSeconds = Util.readDoubleField(fields, "waitBeforeSendTimeSeconds", 0.0);
243286
}
244287

245288
@Override
@@ -256,6 +299,10 @@ public boolean equals(Object other) {
256299
if (!Util.equalString(suffix, otherActivityPackage.suffix)) return false;
257300
if (!Util.equalObject(callbackParameters, otherActivityPackage.callbackParameters)) return false;
258301
if (!Util.equalObject(partnerParameters, otherActivityPackage.partnerParameters)) return false;
302+
if (!Util.equalInt(retryCount, otherActivityPackage.retryCount)) return false;
303+
if (!Util.equalInt(firstErrorCode, otherActivityPackage.firstErrorCode)) return false;
304+
if (!Util.equalInt(lastErrorCode, otherActivityPackage.lastErrorCode)) return false;
305+
if (!Util.equalsDouble(waitBeforeSendTimeSeconds, otherActivityPackage.waitBeforeSendTimeSeconds)) return false;
259306
return true;
260307
}
261308

@@ -270,6 +317,10 @@ public int hashCode() {
270317
hashCode = Util.hashString(suffix, hashCode);
271318
hashCode = Util.hashObject(callbackParameters, hashCode);
272319
hashCode = Util.hashObject(partnerParameters, hashCode);
320+
hashCode = 37 * hashCode + retryCount;
321+
hashCode = 37 * hashCode + firstErrorCode;
322+
hashCode = 37 * hashCode + lastErrorCode;
323+
hashCode = Util.hashDouble(waitBeforeSendTimeSeconds, hashCode);
273324
}
274325
return hashCode;
275326
}

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

Lines changed: 1 addition & 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.38.3";
37+
String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.38.4";
3838

3939
if (defaultInstance == null) {
4040
defaultInstance = new AdjustInstance();

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private void sendAttributionRequestI() {
232232
}
233233

234234
// Create attribution package before sending attribution request.
235-
ActivityPackage attributionPackage = buildAndGetAttributionPackage();
235+
ActivityPackage attributionPackage = buildAndGetAttributionPackage(activityHandlerWeakRef.get().getInternalState());
236236
logger.verbose("%s", attributionPackage.getExtendedString());
237237

238238
Map<String, String> sendingParameters = generateSendingParametersI();
@@ -254,7 +254,7 @@ private Map<String, String> generateSendingParametersI() {
254254
return sendingParameters;
255255
}
256256

257-
private ActivityPackage buildAndGetAttributionPackage() {
257+
private ActivityPackage buildAndGetAttributionPackage(ActivityHandler.InternalState internalState) {
258258
long now = System.currentTimeMillis();
259259
IActivityHandler activityHandler = activityHandlerWeakRef.get();
260260
PackageBuilder packageBuilder = new PackageBuilder(
@@ -263,6 +263,8 @@ private ActivityPackage buildAndGetAttributionPackage() {
263263
activityHandler.getActivityState(),
264264
activityHandler.getSessionParameters(),
265265
now);
266+
packageBuilder.internalState = internalState;
267+
266268
ActivityPackage activityPackage = packageBuilder.buildAttributionPackage(lastInitiatedBy);
267269
lastInitiatedBy = null;
268270
return activityPackage;

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.38.3";
33+
String CLIENT_SDK = "android4.38.4";
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
@@ -98,4 +98,6 @@ public interface IActivityHandler {
9898
ActivityState getActivityState();
9999

100100
SessionParameters getSessionParameters();
101+
102+
ActivityHandler.InternalState getInternalState();
101103
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class PackageBuilder {
4141
AdjustAttribution attribution;
4242
Map<String, String> extraParameters;
4343
Boolean isClick;
44+
ActivityHandler.InternalState internalState;
4445

4546
private class ActivityStateCopy {
4647
int eventCount = -1;
@@ -1321,6 +1322,19 @@ private ActivityPackage getDefaultActivityPackage(ActivityKind activityKind) {
13211322
}
13221323

13231324
private void injectFeatureFlagsWithParameters(Map<String, String> parameters) {
1325+
1326+
PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled);
1327+
PackageBuilder.addBoolean(parameters, "send_in_background_enabled", adjustConfig.sendInBackground);
1328+
1329+
if (internalState != null) {
1330+
PackageBuilder.addBoolean(parameters, "offline_mode_enabled", internalState.offline);
1331+
if (internalState.isInForeground()) {
1332+
PackageBuilder.addBoolean(parameters, "foreground", true);
1333+
} else {
1334+
PackageBuilder.addBoolean(parameters, "background", true);
1335+
}
1336+
}
1337+
13241338
if (adjustConfig.coppaCompliantEnabled) {
13251339
PackageBuilder.addLong(parameters, "ff_coppa", 1);
13261340
}
@@ -1374,6 +1388,14 @@ public static void addLong(Map<String, String> parameters, String key, long valu
13741388
PackageBuilder.addString(parameters, key, valueString);
13751389
}
13761390

1391+
public static void addDouble(Map<String, String> parameters, String key, double value) {
1392+
if (value < 0.0) {
1393+
return;
1394+
}
1395+
String valueString = Double.toString(value);
1396+
PackageBuilder.addString(parameters, key, valueString);
1397+
}
1398+
13771399
private static void addDateInMilliseconds(Map<String, String> parameters, String key, long value) {
13781400
if (value <= 0) {
13791401
return;

0 commit comments

Comments
 (0)