Skip to content

Commit

Permalink
Merge pull request #547 from adjust/v4310
Browse files Browse the repository at this point in the history
Version 4.31.0
  • Loading branch information
shashanksu authored Jul 28, 2022
2 parents c12504b + a000eb2 commit da7332d
Show file tree
Hide file tree
Showing 40 changed files with 428 additions and 33 deletions.
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 = 9
coreCompileSdkVersion = 31
coreTargetSdkVersion = 31
coreVersionName = '4.30.1'
coreVersionName = '4.31.0'
defaultVersionCode = 1
webbridgeMinSdkVersion = 17

Expand Down
30 changes: 30 additions & 0 deletions Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

import static com.adjust.sdk.Constants.ACTIVITY_STATE_FILENAME;
import static com.adjust.sdk.Constants.ATTRIBUTION_FILENAME;
import static com.adjust.sdk.Constants.REFERRER_API_XIAOMI;
import static com.adjust.sdk.Constants.SESSION_CALLBACK_PARAMETERS_FILENAME;
import static com.adjust.sdk.Constants.SESSION_PARTNER_PARAMETERS_FILENAME;

Expand Down Expand Up @@ -1256,13 +1257,26 @@ private void processSessionI() {
// Try to check if there's new referrer information.
installReferrer.startConnection();
installReferrerHuawei.readReferrer();
readInstallReferrerXiaomi();

return;
}

logger.verbose("Time span since last activity too short for a new subsession");
}

private void readInstallReferrerXiaomi() {
executor.submit(new Runnable() {
@Override
public void run() {
ReferrerDetails referrerDetails = Reflection.getXiaomiReferrer(getContext(), logger);
if (referrerDetails != null) {
sendInstallReferrer(referrerDetails, REFERRER_API_XIAOMI);
}
}
});
}

private void trackNewSessionI(final long now) {
long lastInterval = now - activityState.lastActivity;

Expand Down Expand Up @@ -1689,6 +1703,7 @@ private void checkAfterNewStartI(SharedPreferencesManager sharedPreferencesManag
// try to read and send the install referrer
installReferrer.startConnection();
installReferrerHuawei.readReferrer();
readInstallReferrerXiaomi();
}

private void setOfflineModeI(boolean offline) {
Expand Down Expand Up @@ -2591,6 +2606,21 @@ private void checkForInstallReferrerInfo(final SdkClickResponseData responseData
return;
}

boolean isInstallReferrerXiaomi =
responseData.referrerApi != null &&
(responseData.referrerApi.equalsIgnoreCase(REFERRER_API_XIAOMI));

if (isInstallReferrerXiaomi) {
activityState.clickTimeXiaomi = responseData.clickTime;
activityState.installBeginXiaomi = responseData.installBegin;
activityState.installReferrerXiaomi = responseData.installReferrer;
activityState.clickTimeServerXiaomi = responseData.clickTimeServer;
activityState.installBeginServerXiaomi = responseData.installBeginServer;

writeActivityStateI();
return;
}

activityState.clickTime = responseData.clickTime;
activityState.installBegin = responseData.installBegin;
activityState.installReferrer = responseData.installReferrer;
Expand Down
32 changes: 32 additions & 0 deletions Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ public class ActivityState implements Serializable, Cloneable {
new ObjectStreamField("installReferrerHuawei", String.class),
new ObjectStreamField("installReferrerHuaweiAppGallery", String.class),
new ObjectStreamField("isThirdPartySharingDisabledForCoppa", boolean.class),
new ObjectStreamField("clickTimeXiaomi", long.class),
new ObjectStreamField("installBeginXiaomi", long.class),
new ObjectStreamField("installReferrerXiaomi", String.class),
new ObjectStreamField("clickTimeServerXiaomi", long.class),
new ObjectStreamField("installBeginServerXiaomi", long.class),
};

// persistent data
Expand Down Expand Up @@ -93,6 +98,12 @@ public class ActivityState implements Serializable, Cloneable {
protected String installReferrerHuawei;
protected String installReferrerHuaweiAppGallery;

protected long clickTimeXiaomi;
protected long installBeginXiaomi;
protected String installReferrerXiaomi;
protected long clickTimeServerXiaomi;
protected long installBeginServerXiaomi;

protected ActivityState() {
logger = AdjustFactory.getLogger();
// create UUID for new devices
Expand Down Expand Up @@ -124,6 +135,11 @@ protected ActivityState() {
installBeginHuawei = 0;
installReferrerHuawei = null;
installReferrerHuaweiAppGallery = null;
clickTimeXiaomi = 0;
installBeginXiaomi = 0;
installReferrerXiaomi = null;
clickTimeServerXiaomi = 0;
installBeginServerXiaomi = 0;
}

protected void resetSessionAttributes(long now) {
Expand Down Expand Up @@ -194,6 +210,11 @@ public boolean equals(Object other) {
if (!Util.equalLong(installBeginHuawei, otherActivityState.installBeginHuawei)) return false;
if (!Util.equalString(installReferrerHuawei, otherActivityState.installReferrerHuawei)) return false;
if (!Util.equalString(installReferrerHuaweiAppGallery, otherActivityState.installReferrerHuaweiAppGallery)) return false;
if (!Util.equalLong(clickTimeXiaomi, otherActivityState.clickTimeXiaomi)) return false;
if (!Util.equalLong(installBeginXiaomi, otherActivityState.installBeginXiaomi)) return false;
if (!Util.equalString(installReferrerXiaomi, otherActivityState.installReferrerXiaomi)) return false;
if (!Util.equalLong(clickTimeServerXiaomi, otherActivityState.clickTimeServerXiaomi)) return false;
if (!Util.equalLong(installBeginServerXiaomi, otherActivityState.installBeginServerXiaomi)) return false;
return true;
}

Expand Down Expand Up @@ -227,6 +248,11 @@ public int hashCode() {
hashCode = 37 * hashCode + Util.hashLong(installBeginHuawei);
hashCode = 37 * hashCode + Util.hashString(installReferrerHuawei);
hashCode = 37 * hashCode + Util.hashString(installReferrerHuaweiAppGallery);
hashCode = 37 * hashCode + Util.hashLong(clickTimeXiaomi);
hashCode = 37 * hashCode + Util.hashLong(installBeginXiaomi);
hashCode = 37 * hashCode + Util.hashString(installReferrerXiaomi);
hashCode = 37 * hashCode + Util.hashLong(clickTimeServerXiaomi);
hashCode = 37 * hashCode + Util.hashLong(installBeginServerXiaomi);
return hashCode;
}

Expand Down Expand Up @@ -267,6 +293,12 @@ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFo
installReferrerHuawei = Util.readStringField(fields, "installReferrerHuawei", null);
installReferrerHuaweiAppGallery = Util.readStringField(fields, "installReferrerHuaweiAppGallery", null);

clickTimeXiaomi = Util.readLongField(fields, "clickTimeXiaomi", -1l);
installBeginXiaomi = Util.readLongField(fields, "installBeginXiaomi", -1l);
installReferrerXiaomi = Util.readStringField(fields, "installReferrerXiaomi", null);
clickTimeServerXiaomi = Util.readLongField(fields, "clickTimeServerXiaomi", -1l);
installBeginServerXiaomi = Util.readLongField(fields, "installBeginServerXiaomi", -1l);

// create UUID for migrating devices
if (uuid == null) {
uuid = Util.createUuid();
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ private Adjust() {
*/
public static synchronized AdjustInstance getDefaultInstance() {
@SuppressWarnings("unused")
String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.30.1";
String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.31.0";

if (defaultInstance == null) {
defaultInstance = new AdjustInstance();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class AdjustAttribution implements Serializable {
new ObjectStreamField("costType", String.class),
new ObjectStreamField("costAmount", Double.class),
new ObjectStreamField("costCurrency", String.class),
new ObjectStreamField("fbInstallReferrer", String.class),
};

public String trackerToken;
Expand All @@ -38,6 +39,7 @@ public class AdjustAttribution implements Serializable {
public String costType;
public Double costAmount;
public String costCurrency;
public String fbInstallReferrer;

public static AdjustAttribution fromJson(JSONObject jsonObject, String adid, String sdkPlatform) {
if (jsonObject == null) return null;
Expand All @@ -57,6 +59,7 @@ public static AdjustAttribution fromJson(JSONObject jsonObject, String adid, Str
attribution.costType = jsonObject.optString("cost_type", "");
attribution.costAmount = jsonObject.optDouble("cost_amount", 0);
attribution.costCurrency = jsonObject.optString("cost_currency", "");
attribution.fbInstallReferrer = jsonObject.optString("fb_install_referrer", "");
} else {
// Rest of all platforms.
attribution.trackerToken = jsonObject.optString("tracker_token");
Expand All @@ -70,6 +73,7 @@ public static AdjustAttribution fromJson(JSONObject jsonObject, String adid, Str
attribution.costType = jsonObject.optString("cost_type");
attribution.costAmount = jsonObject.optDouble("cost_amount");
attribution.costCurrency = jsonObject.optString("cost_currency");
attribution.fbInstallReferrer = jsonObject.optString("fb_install_referrer");
}

return attribution;
Expand All @@ -93,6 +97,7 @@ public boolean equals(Object other) {
if (!Util.equalString(costType, otherAttribution.costType)) return false;
if (!Util.equalsDouble(costAmount, otherAttribution.costAmount)) return false;
if (!Util.equalString(costCurrency, otherAttribution.costCurrency)) return false;
if (!Util.equalString(fbInstallReferrer, otherAttribution.fbInstallReferrer)) return false;

return true;
}
Expand All @@ -111,16 +116,17 @@ public int hashCode() {
hashCode = 37 * hashCode + Util.hashString(costType);
hashCode = 37 * hashCode + Util.hashDouble(costAmount);
hashCode = 37 * hashCode + Util.hashString(costCurrency);
hashCode = 37 * hashCode + Util.hashString(fbInstallReferrer);

return hashCode;
}

@Override
public String toString() {
return Util.formatString(
"tt:%s tn:%s net:%s cam:%s adg:%s cre:%s cl:%s adid:%s ct:%s ca:%.2f cc:%s",
"tt:%s tn:%s net:%s cam:%s adg:%s cre:%s cl:%s adid:%s ct:%s ca:%.2f cc:%s fir:%s",
trackerToken, trackerName, network, campaign, adgroup, creative, clickLabel,
adid, costType, costAmount, costCurrency);
adid, costType, costAmount, costCurrency, fbInstallReferrer);
}

private void writeObject(ObjectOutputStream stream) throws IOException {
Expand Down
3 changes: 2 additions & 1 deletion Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@ public interface Constants {

String SCHEME = "https";
String AUTHORITY = "app.adjust.com";
String CLIENT_SDK = "android4.30.1";
String CLIENT_SDK = "android4.31.0";
String LOGTAG = "Adjust";
String REFTAG = "reftag";
String INSTALL_REFERRER = "install_referrer";
String REFERRER_API_GOOGLE = "google";
String REFERRER_API_HUAWEI_ADS = "huawei_ads";
String REFERRER_API_HUAWEI_APP_GALLERY = "huawei_app_gallery";
String REFERRER_API_XIAOMI = "xiaomi";
String DEEPLINK = "deeplink";
String PUSH = "push";
String THREAD_PREFIX = "Adjust-";
Expand Down
13 changes: 13 additions & 0 deletions Adjust/sdk-core/src/main/java/com/adjust/sdk/Reflection.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,19 @@ public static Boolean isPlayTrackingEnabled(Context context, Object AdvertisingI
}
}

public static ReferrerDetails getXiaomiReferrer(Context context, ILogger logger) {
ReferrerDetails referrerDetails = null;
try {
referrerDetails = (ReferrerDetails) invokeStaticMethod("com.adjust.sdk.xiaomi.Util",
"getXiaomiInstallReferrerDetails",
new Class[]{Context.class, ILogger.class},
context, logger);
} catch (Exception e) {
logger.error("invoke getXiaomiInstallReferrerDetails error: " + e.getMessage());
}
return referrerDetails;
}

public static Class forName(String className) {
try {
Class classObject = Class.forName(className);
Expand Down
11 changes: 11 additions & 0 deletions Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,8 @@ public static boolean isEqualReferrerDetails(final ReferrerDetails referrerDetai
return isEqualHuaweiReferrerAdsDetails(referrerDetails, activityState);
} else if (referrerApi.equals(Constants.REFERRER_API_HUAWEI_APP_GALLERY)) {
return isEqualHuaweiReferrerAppGalleryDetails(referrerDetails, activityState);
} else if (referrerApi.equals(Constants.REFERRER_API_XIAOMI)) {
return isEqualXiaomiReferrerDetails(referrerDetails, activityState);
}

return false;
Expand Down Expand Up @@ -836,4 +838,13 @@ private static boolean isEqualHuaweiReferrerAppGalleryDetails(final ReferrerDeta
&& referrerDetails.installBeginTimestampSeconds == activityState.installBeginHuawei
&& Util.equalString(referrerDetails.installReferrer, activityState.installReferrerHuaweiAppGallery);
}

private static boolean isEqualXiaomiReferrerDetails(final ReferrerDetails referrerDetails,
final ActivityState activityState) {
return referrerDetails.referrerClickTimestampSeconds == activityState.clickTimeXiaomi
&& referrerDetails.installBeginTimestampSeconds == activityState.installBeginXiaomi
&& referrerDetails.referrerClickTimestampServerSeconds == activityState.clickTimeServerXiaomi
&& referrerDetails.installBeginTimestampServerSeconds == activityState.installBeginServerXiaomi
&& Util.equalString(referrerDetails.installReferrer, activityState.installReferrerXiaomi);
}
}
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-criteo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustCriteoAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-imei/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustImeiAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-oaid/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustOaidAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-sociomantic/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustSociomanticAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-trademob/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustTrademobAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-webbridge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
// implementation 'com.adjust.sdk:adjust-android:4.30.1'
// implementation 'com.adjust.sdk:adjust-android:4.31.0'
}

task adjustWebBridgeAndroidAar (type: Copy) {
Expand Down
2 changes: 1 addition & 1 deletion Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ var Adjust = {
if (this.adjustConfig) {
return this.adjustConfig.getSdkPrefix();
} else {
return 'web-bridge4.30.1';
return 'web-bridge4.31.0';
}
},

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ public void run() {
jsonAttribution.put("costType", attribution.costType == null ? JSONObject.NULL : attribution.costType);
jsonAttribution.put("costAmount", attribution.costAmount == null || attribution.costAmount.isNaN() ? 0 : attribution.costAmount);
jsonAttribution.put("costCurrency", attribution.costCurrency == null ? JSONObject.NULL : attribution.costCurrency);
jsonAttribution.put("fbInstallReferrer", attribution.fbInstallReferrer == null ? JSONObject.NULL : attribution.fbInstallReferrer);

String command = "javascript:" + commandName + "(" + jsonAttribution.toString() + ");";
webView.loadUrl(command);
Expand Down
1 change: 1 addition & 0 deletions Adjust/sdk-plugin-xiaomi-referrer/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Loading

0 comments on commit da7332d

Please sign in to comment.