diff --git a/Adjust/build.gradle b/Adjust/build.gradle
index 1743bdeae..9ed7978b3 100644
--- a/Adjust/build.gradle
+++ b/Adjust/build.gradle
@@ -9,7 +9,7 @@ ext {
coreMinSdkVersion = 9
coreCompileSdkVersion = 33
coreTargetSdkVersion = 33
- coreVersionName = '4.35.1'
+ coreVersionName = '4.36.0'
defaultVersionCode = 1
webbridgeMinSdkVersion = 17
samsungReferrerMinSdkVersion = 18
diff --git a/Adjust/sdk-core/src/main/AndroidManifest.xml b/Adjust/sdk-core/src/main/AndroidManifest.xml
index 683c4c09a..e269d3838 100644
--- a/Adjust/sdk-core/src/main/AndroidManifest.xml
+++ b/Adjust/sdk-core/src/main/AndroidManifest.xml
@@ -2,4 +2,10 @@
+
+
+
+
+
+
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
index 4dc736760..e5ab2a454 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
@@ -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_META;
import static com.adjust.sdk.Constants.REFERRER_API_SAMSUNG;
import static com.adjust.sdk.Constants.REFERRER_API_VIVO;
import static com.adjust.sdk.Constants.REFERRER_API_XIAOMI;
@@ -79,6 +80,7 @@ public class ActivityHandler implements IActivityHandler {
private SessionParameters sessionParameters;
private InstallReferrer installReferrer;
private InstallReferrerHuawei installReferrerHuawei;
+ private InstallReferrerMeta installReferrerMeta;
@Override
public void teardown() {
@@ -1013,6 +1015,13 @@ public void onInstallReferrerRead(ReferrerDetails referrerDetails, String referr
}
});
+ installReferrerMeta = new InstallReferrerMeta(adjustConfig.context, adjustConfig.fbAppId,
+ new InstallReferrerReadListener() {
+ @Override
+ public void onInstallReferrerRead(ReferrerDetails referrerDetails, String referrerApi) {
+ sendInstallReferrer(referrerDetails, referrerApi);
+ }
+ });
preLaunchActionsI(adjustConfig.preLaunchActions.preLaunchActionsArray);
sendReftagReferrerI();
}
@@ -1310,6 +1319,7 @@ private void processSessionI() {
// Try to check if there's new referrer information.
installReferrer.startConnection();
installReferrerHuawei.readReferrer();
+ installReferrerMeta.readReferrer();
readInstallReferrerSamsung();
readInstallReferrerXiaomi();
readInstallReferrerVivo();
@@ -1811,6 +1821,7 @@ private void checkAfterNewStartI(SharedPreferencesManager sharedPreferencesManag
// try to read and send the install referrer
installReferrer.startConnection();
installReferrerHuawei.readReferrer();
+ installReferrerMeta.readReferrer();
readInstallReferrerSamsung();
readInstallReferrerXiaomi();
readInstallReferrerVivo();
@@ -2786,6 +2797,19 @@ private void checkForInstallReferrerInfo(final SdkClickResponseData responseData
return;
}
+ boolean isInstallReferrerMeta =
+ responseData.referrerApi != null &&
+ (responseData.referrerApi.equalsIgnoreCase(REFERRER_API_META));
+
+ if (isInstallReferrerMeta) {
+ activityState.clickTimeMeta = responseData.clickTime;
+ activityState.installReferrerMeta = responseData.installReferrer;
+ activityState.isClickMeta = responseData.isClick;
+
+ writeActivityStateI();
+ return;
+ }
+
boolean isInstallReferrerSamsung =
responseData.referrerApi != null &&
(responseData.referrerApi.equalsIgnoreCase(REFERRER_API_SAMSUNG));
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java
index 6c3b6c66e..9744c22e1 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java
@@ -59,6 +59,7 @@ public class ActivityPackage implements Serializable {
private long installBeginTimeServerInSeconds;
private String installVersion;
private Boolean googlePlayInstant;
+ private Boolean isClick;
public String getPath() {
return path;
@@ -168,6 +169,14 @@ public void setGooglePlayInstant(Boolean googlePlayInstant) {
this.googlePlayInstant = googlePlayInstant;
}
+ public Boolean getIsClick() {
+ return this.isClick;
+ }
+
+ public void setIsClick(Boolean isClick) {
+ this.isClick = isClick;
+ }
+
public OnPurchaseVerificationFinishedListener getPurchaseVerificationCallback() {
return this.purchaseVerificationCallback;
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java
index 0c0c9543f..7e5b35899 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityState.java
@@ -64,6 +64,9 @@ public class ActivityState implements Serializable, Cloneable {
new ObjectStreamField("installBeginVivo", long.class),
new ObjectStreamField("installReferrerVivo", String.class),
new ObjectStreamField("installVersionVivo", String.class),
+ new ObjectStreamField("installReferrerMeta", String.class),
+ new ObjectStreamField("clickTimeMeta", long.class),
+ new ObjectStreamField("isClickMeta", Boolean.class),
};
// persistent data
@@ -122,6 +125,10 @@ public class ActivityState implements Serializable, Cloneable {
protected String installReferrerVivo;
protected String installVersionVivo;
+ protected String installReferrerMeta;
+ protected long clickTimeMeta;
+ protected Boolean isClickMeta;
+
protected ActivityState() {
logger = AdjustFactory.getLogger();
// create UUID for new devices
@@ -166,6 +173,9 @@ protected ActivityState() {
installBeginVivo = 0;
installReferrerVivo = null;
installVersionVivo = null;
+ installReferrerMeta = null;
+ clickTimeMeta = 0;
+ isClickMeta = null;
}
protected void resetSessionAttributes(long now) {
@@ -249,6 +259,9 @@ public boolean equals(Object other) {
if (!Util.equalLong(installBeginVivo, otherActivityState.installBeginVivo)) return false;
if (!Util.equalString(installReferrerVivo, otherActivityState.installReferrerVivo)) return false;
if (!Util.equalString(installVersionVivo, otherActivityState.installVersionVivo)) return false;
+ if (!Util.equalString(installReferrerMeta, otherActivityState.installReferrerMeta)) return false;
+ if (!Util.equalLong(clickTimeMeta, otherActivityState.clickTimeMeta)) return false;
+ if (!Util.equalBoolean(isClickMeta, otherActivityState.isClickMeta)) return false;
return true;
}
@@ -295,6 +308,9 @@ public int hashCode() {
hashCode = Util.hashLong(installBeginVivo, hashCode);
hashCode = Util.hashString(installReferrerVivo, hashCode);
hashCode = Util.hashString(installVersionVivo, hashCode);
+ hashCode = Util.hashString(installReferrerMeta, hashCode);
+ hashCode = Util.hashLong(clickTimeMeta, hashCode);
+ hashCode = Util.hashBoolean(isClickMeta, hashCode);
return hashCode;
}
@@ -351,6 +367,10 @@ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFo
installReferrerVivo = Util.readStringField(fields, "installReferrerVivo", null);
installVersionVivo = Util.readStringField(fields, "installVersionVivo", null);
+ installReferrerMeta = Util.readStringField(fields, "installReferrerMeta", null);
+ clickTimeMeta = Util.readLongField(fields, "clickTimeMeta", -1l);
+ isClickMeta = Util.readObjectField(fields, "isClickMeta", null);
+
// create UUID for migrating devices
if (uuid == null) {
uuid = Util.createUuid();
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
index 604e38d76..b6b95911e 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
@@ -34,7 +34,7 @@ private Adjust() {
*/
public static synchronized AdjustInstance getDefaultInstance() {
@SuppressWarnings("unused")
- String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.35.1";
+ String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.36.0";
if (defaultInstance == null) {
defaultInstance = new AdjustInstance();
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAdRevenue.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAdRevenue.java
index 38c46e349..05a0b91c8 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAdRevenue.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustAdRevenue.java
@@ -79,6 +79,42 @@ public boolean isValid() {
return isValidSource(this.source);
}
+ public String getSource() {
+ return source;
+ }
+
+ public Double getRevenue() {
+ return revenue;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public Integer getAdImpressionsCount() {
+ return adImpressionsCount;
+ }
+
+ public String getAdRevenueNetwork() {
+ return adRevenueNetwork;
+ }
+
+ public String getAdRevenueUnit() {
+ return adRevenueUnit;
+ }
+
+ public String getAdRevenuePlacement() {
+ return adRevenuePlacement;
+ }
+
+ public Map getCallbackParameters() {
+ return callbackParameters;
+ }
+
+ public Map getPartnerParameters() {
+ return partnerParameters;
+ }
+
private boolean isValidSource(final String param) {
if (param == null) {
logger.error("Missing source");
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
index c0b8d2e25..f8be241d2 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
@@ -45,6 +45,7 @@ public class AdjustConfig {
boolean playStoreKidsAppEnabled;
boolean coppaCompliantEnabled;
boolean finalAttributionEnabled;
+ String fbAppId;
public static final String ENVIRONMENT_SANDBOX = "sandbox";
public static final String ENVIRONMENT_PRODUCTION = "production";
@@ -64,6 +65,8 @@ public class AdjustConfig {
public static final String AD_REVENUE_UNITY = "unity_sdk";
public static final String AD_REVENUE_HELIUM_CHARTBOOST = "helium_chartboost_sdk";
public static final String AD_REVENUE_SOURCE_PUBLISHER = "publisher_sdk";
+ public static final String AD_REVENUE_TOPON = "topon_sdk";
+ public static final String AD_REVENUE_ADX = "adx_sdk";
public AdjustConfig(Context context, String appToken, String environment) {
init(context, appToken, environment, false);
@@ -202,6 +205,10 @@ public void setFinalAttributionEnabled(boolean finalAttributionEnabled) {
this.finalAttributionEnabled = finalAttributionEnabled;
}
+ public void setFbAppId(String fbAppId) {
+ this.fbAppId = fbAppId;
+ }
+
public boolean isValid() {
if (!checkAppToken(appToken)) return false;
if (!checkEnvironment(environment)) return false;
@@ -227,6 +234,158 @@ public void setUrlStrategy(String urlStrategy) {
this.urlStrategy = urlStrategy;
}
+ public String getBasePath() {
+ return basePath;
+ }
+
+ public String getGdprPath() {
+ return gdprPath;
+ }
+
+ public String getSubscriptionPath() {
+ return subscriptionPath;
+ }
+
+ public String getPurchaseVerificationPath() {
+ return purchaseVerificationPath;
+ }
+
+ public Context getContext() {
+ return context;
+ }
+
+ public String getAppToken() {
+ return appToken;
+ }
+
+ public String getEnvironment() {
+ return environment;
+ }
+
+ public String getProcessName() {
+ return processName;
+ }
+
+ public String getSdkPrefix() {
+ return sdkPrefix;
+ }
+
+ public boolean isEventBufferingEnabled() {
+ return eventBufferingEnabled;
+ }
+
+ public String getDefaultTracker() {
+ return defaultTracker;
+ }
+
+ public OnAttributionChangedListener getOnAttributionChangedListener() {
+ return onAttributionChangedListener;
+ }
+
+ public Boolean getDeviceKnown() {
+ return deviceKnown;
+ }
+
+ public Class getDeepLinkComponent() {
+ return deepLinkComponent;
+ }
+
+ public OnEventTrackingSucceededListener getOnEventTrackingSucceededListener() {
+ return onEventTrackingSucceededListener;
+ }
+
+ public OnEventTrackingFailedListener getOnEventTrackingFailedListener() {
+ return onEventTrackingFailedListener;
+ }
+
+ public OnSessionTrackingSucceededListener getOnSessionTrackingSucceededListener() {
+ return onSessionTrackingSucceededListener;
+ }
+
+ public OnSessionTrackingFailedListener getOnSessionTrackingFailedListener() {
+ return onSessionTrackingFailedListener;
+ }
+
+ public OnDeeplinkResponseListener getOnDeeplinkResponseListener() {
+ return onDeeplinkResponseListener;
+ }
+
+ public boolean isSendInBackground() {
+ return sendInBackground;
+ }
+
+ public Double getDelayStart() {
+ return delayStart;
+ }
+
+ public AdjustInstance.PreLaunchActions getPreLaunchActions() {
+ return preLaunchActions;
+ }
+
+ public ILogger getLogger() {
+ return logger;
+ }
+
+ public String getUserAgent() {
+ return userAgent;
+ }
+
+ public String getPushToken() {
+ return pushToken;
+ }
+
+ public Boolean getStartEnabled() {
+ return startEnabled;
+ }
+
+ public boolean isStartOffline() {
+ return startOffline;
+ }
+
+ public String getSecretId() {
+ return secretId;
+ }
+
+ public String getAppSecret() {
+ return appSecret;
+ }
+
+ public String getExternalDeviceId() {
+ return externalDeviceId;
+ }
+
+ public boolean isPreinstallTrackingEnabled() {
+ return preinstallTrackingEnabled;
+ }
+
+ public Boolean getNeedsCost() {
+ return needsCost;
+ }
+
+ public String getUrlStrategy() {
+ return urlStrategy;
+ }
+
+ public String getPreinstallFilePath() {
+ return preinstallFilePath;
+ }
+
+ public boolean isPlayStoreKidsAppEnabled() {
+ return playStoreKidsAppEnabled;
+ }
+
+ public boolean isCoppaCompliantEnabled() {
+ return coppaCompliantEnabled;
+ }
+
+ public boolean isFinalAttributionEnabled() {
+ return finalAttributionEnabled;
+ }
+
+ public String getFbAppId() {
+ return fbAppId;
+ }
+
private void setLogLevel(LogLevel logLevel, String environment) {
logger.setLogLevel(logLevel, AdjustConfig.ENVIRONMENT_PRODUCTION.equals(environment));
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEvent.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEvent.java
index e4d441563..00da98923 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEvent.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustEvent.java
@@ -82,6 +82,42 @@ public boolean isValid() {
return eventToken != null;
}
+ public String getEventToken() {
+ return eventToken;
+ }
+
+ public Double getRevenue() {
+ return revenue;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public Map getCallbackParameters() {
+ return callbackParameters;
+ }
+
+ public Map getPartnerParameters() {
+ return partnerParameters;
+ }
+
+ public String getOrderId() {
+ return orderId;
+ }
+
+ public String getCallbackId() {
+ return callbackId;
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+
+ public String getPurchaseToken() {
+ return purchaseToken;
+ }
+
private static boolean checkEventToken(String eventToken, ILogger logger) {
if (eventToken == null) {
logger.error("Missing Event Token");
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustThirdPartySharing.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustThirdPartySharing.java
index 1f93765ca..88e5cb491 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustThirdPartySharing.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustThirdPartySharing.java
@@ -51,4 +51,16 @@ public void addPartnerSharingSetting(final String partnerName,
partnerSharingSetting.put(key, value);
}
+
+ public Boolean getEnabled() {
+ return isEnabled;
+ }
+
+ public Map> getGranularOptions() {
+ return granularOptions;
+ }
+
+ public Map> getPartnerSharingSettings() {
+ return partnerSharingSettings;
+ }
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
index 6687130bf..08cd6fda9 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
@@ -30,7 +30,7 @@ public interface Constants {
String SCHEME = "https";
String AUTHORITY = "app.adjust.com";
- String CLIENT_SDK = "android4.35.1";
+ String CLIENT_SDK = "android4.36.0";
String LOGTAG = "Adjust";
String REFTAG = "reftag";
String INSTALL_REFERRER = "install_referrer";
@@ -40,6 +40,7 @@ public interface Constants {
String REFERRER_API_SAMSUNG = "samsung";
String REFERRER_API_XIAOMI = "xiaomi";
String REFERRER_API_VIVO = "vivo";
+ String REFERRER_API_META = "meta";
String DEEPLINK = "deeplink";
String PUSH = "push";
String THREAD_PREFIX = "Adjust-";
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/DeviceInfo.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/DeviceInfo.java
index 8921abad9..0050b1b51 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/DeviceInfo.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/DeviceInfo.java
@@ -81,6 +81,7 @@ class DeviceInfo {
String appUpdateTime;
int uiMode;
String appSetId;
+ boolean isGooglePlayGamesForPC;
DeviceInfo(AdjustConfig adjustConfig) {
Context context = adjustConfig.context;
@@ -89,6 +90,7 @@ class DeviceInfo {
Configuration configuration = resources.getConfiguration();
Locale locale = Util.getLocale(configuration);
int screenLayout = configuration.screenLayout;
+ isGooglePlayGamesForPC = Util.isGooglePlayGamesForPC(context);
packageName = getPackageName(context);
appVersion = getAppVersion(context);
@@ -222,6 +224,10 @@ private String getAppVersion(Context context) {
}
private String getDeviceType(Configuration configuration) {
+ if (isGooglePlayGamesForPC) {
+ return "pc";
+ }
+
int uiMode = configuration.uiMode & UI_MODE_TYPE_MASK;
if (uiMode == UI_MODE_TYPE_TELEVISION) {
return "tv";
@@ -245,6 +251,9 @@ private int getDeviceUiMode(Configuration configuration) {
}
private String getDeviceName() {
+ if (isGooglePlayGamesForPC) {
+ return null;
+ }
return Build.MODEL;
}
@@ -253,10 +262,16 @@ private String getDeviceManufacturer() {
}
private String getOsName() {
+ if (isGooglePlayGamesForPC) {
+ return "windows";
+ }
return "android";
}
private String getOsVersion() {
+ if (isGooglePlayGamesForPC) {
+ return null;
+ }
return Build.VERSION.RELEASE;
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrer.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrer.java
index 13e61ec56..100079033 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrer.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrer.java
@@ -364,7 +364,7 @@ private void onInstallReferrerSetupFinishedIntI(final int responseCode) {
ReferrerDetails installReferrerDetails = new ReferrerDetails(installReferrer,
clickTime, installBegin, clickTimeServer, installBeginServer,
- installVersion, googlePlayInstant);
+ installVersion, googlePlayInstant, null);
// Stuff successfully read, try to send it.
referrerCallback.onInstallReferrerRead(installReferrerDetails, Constants.REFERRER_API_GOOGLE);
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrerMeta.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrerMeta.java
new file mode 100644
index 000000000..d7517f3bf
--- /dev/null
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/InstallReferrerMeta.java
@@ -0,0 +1,163 @@
+package com.adjust.sdk;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public class InstallReferrerMeta {
+ /**
+ * Facebook install referrer provider content authority.
+ */
+ private static final String FACEBOOK_REFERRER_PROVIDER_AUTHORITY = "com.facebook.katana.provider.InstallReferrerProvider";
+
+ /**
+ * Instagram install referrer provider content authority.
+ */
+ private static final String INSTAGRAM_REFERRER_PROVIDER_AUTHORITY = "com.instagram.contentprovider.InstallReferrerProvider";
+
+ /**
+ * Meta referrer content provider install referrer column name.
+ */
+ private static final String COLUMN_INSTALL_REFERRER = "install_referrer";
+
+ /**
+ * Meta referrer content provider actual timestamp column name.
+ */
+ private static final String COLUMN_ACTUAL_TIMESTAMP = "actual_timestamp";
+
+ /**
+ * Meta referrer content provider is click or impression column name.
+ */
+ private static final String COLUMN_IS_CT = "is_ct";
+
+ /**
+ * Adjust logger instance.
+ */
+ private ILogger logger;
+
+ /**
+ * Application context.
+ */
+ private Context context;
+
+ /**
+ * FB app ID.
+ */
+ private String fbAppId;
+
+ /**
+ * Huawei Referrer callback.
+ */
+ private final InstallReferrerReadListener referrerCallback;
+
+ /**
+ * Boolean indicating whether service should be tried to read.
+ * Either because it has not yet tried,
+ * or it did and it was successful
+ * or it did, was not successful, but it should not retry
+ */
+ private final AtomicBoolean shouldTryToRead;
+
+ /**
+ * Default constructor.
+ *
+ * @param context Application context
+ * @param referrerCallback Callback for referrer information
+ */
+ public InstallReferrerMeta(final Context context,
+ final String fbAppId,
+ final InstallReferrerReadListener referrerCallback)
+ {
+ this.logger = AdjustFactory.getLogger();
+ this.context = context;
+ this.fbAppId = fbAppId;
+ this.referrerCallback = referrerCallback;
+ this.shouldTryToRead = new AtomicBoolean(true);
+ }
+
+ public void readReferrer() {
+ if (!shouldTryToRead.get()) {
+ logger.debug("Should not retry to read Install referrer Meta");
+ return;
+ }
+
+ if (TextUtils.isEmpty(fbAppId)) {
+ logger.debug("Can't read Install referrer Meta with null or empty FB app ID");
+ return;
+ }
+
+ Cursor cursor = null;
+
+ try {
+ Uri providerUri = null;
+
+ if (Util.resolveContentProvider(context, FACEBOOK_REFERRER_PROVIDER_AUTHORITY)) {
+ providerUri = Uri.parse("content://" + FACEBOOK_REFERRER_PROVIDER_AUTHORITY + "/" + fbAppId);
+ } else if (Util.resolveContentProvider(context, INSTAGRAM_REFERRER_PROVIDER_AUTHORITY)) {
+ providerUri = Uri.parse("content://" + INSTAGRAM_REFERRER_PROVIDER_AUTHORITY + "/" + fbAppId);
+ } else {
+ return;
+ }
+
+ ContentResolver contentResolver = context.getContentResolver();
+
+ String[] projection = {COLUMN_INSTALL_REFERRER, COLUMN_IS_CT, COLUMN_ACTUAL_TIMESTAMP};
+
+ cursor = contentResolver.query(providerUri, projection, null, null, null);
+
+ if (cursor == null || !cursor.moveToFirst()) {
+ return;
+ }
+
+ int installReferrerIndex = cursor.getColumnIndex(COLUMN_INSTALL_REFERRER);
+ int timestampIndex = cursor.getColumnIndex(COLUMN_ACTUAL_TIMESTAMP);
+ int isCTIndex = cursor.getColumnIndex(COLUMN_IS_CT);
+ String installReferrer = cursor.getString(installReferrerIndex);
+ long actualTimestampInSec = cursor.getLong(timestampIndex); // in seconds
+ int ctValue = cursor.getInt(isCTIndex); // 0 = VT, 1 = CT
+ boolean isClick = ctValue == 1;
+
+ logger.debug("InstallReferrerMeta reads " +
+ "installReferrer[%s] actualTimestampInSec[%d] isClick[%b]",
+ installReferrer, actualTimestampInSec, ctValue);
+
+ if (isValidReferrer(installReferrer)) {
+ ReferrerDetails referrerDetails =
+ new ReferrerDetails(installReferrer,
+ actualTimestampInSec,
+ isClick);
+
+ referrerCallback.onInstallReferrerRead(referrerDetails,
+ Constants.REFERRER_API_META);
+ } else {
+ logger.debug("InstallReferrerMeta invalid installReferrer");
+ }
+
+ } catch (Exception e) {
+ logger.debug("InstallReferrerMeta error [%s]", e.getMessage());
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+
+ shouldTryToRead.set(false);
+ }
+
+ private boolean isValidReferrer(String installReferrer) {
+ if (installReferrer == null) {
+ return false;
+ }
+
+ if (installReferrer.isEmpty()) {
+ return false;
+ }
+
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java
index c1f367439..278fa5c75 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java
@@ -40,6 +40,7 @@ public class PackageBuilder {
Boolean googlePlayInstant;
AdjustAttribution attribution;
Map extraParameters;
+ Boolean isClick;
private class ActivityStateCopy {
int eventCount = -1;
@@ -135,6 +136,7 @@ ActivityPackage buildClickPackage(String source) {
clickPackage.setInstallBeginTimeServerInSeconds(installBeginTimeServerInSeconds);
clickPackage.setInstallVersion(installVersion);
clickPackage.setGooglePlayInstant(googlePlayInstant);
+ clickPackage.setIsClick(isClick);
AdjustSigner.sign(parameters, ActivityKind.CLICK.toString(),
clickPackage.getClientSdk(), adjustConfig.context, adjustConfig.logger);
@@ -354,6 +356,9 @@ private Map getSessionParameters(boolean isInDelay) {
PackageBuilder.addDuration(parameters, "time_spent", activityStateCopy.timeSpent);
PackageBuilder.addString(parameters, "updated_at", deviceInfo.appUpdateTime);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -448,6 +453,9 @@ public Map getEventParameters(AdjustEvent event, boolean isInDel
PackageBuilder.addLong(parameters, "subsession_count", activityStateCopy.subsessionCount);
PackageBuilder.addDuration(parameters, "time_spent", activityStateCopy.timeSpent);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -502,6 +510,9 @@ private Map getInfoParameters(String source) {
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
PackageBuilder.addString(parameters, "source", source);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -577,6 +588,7 @@ private Map getClickParameters(String source) {
PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId);
PackageBuilder.addString(parameters, "fb_id", deviceInfo.fbAttributionId);
PackageBuilder.addBoolean(parameters, "google_play_instant", googlePlayInstant);
+ PackageBuilder.addBoolean(parameters, "is_click", isClick);
PackageBuilder.addString(parameters, "hardware_name", deviceInfo.hardwareName);
PackageBuilder.addDateInSeconds(parameters, "install_begin_time", installBeginTimeInSeconds);
PackageBuilder.addDateInSeconds(parameters, "install_begin_time_server", installBeginTimeServerInSeconds);
@@ -611,6 +623,9 @@ private Map getClickParameters(String source) {
PackageBuilder.addString(parameters, "payload", preinstallPayload);
PackageBuilder.addString(parameters, "found_location", preinstallLocation);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -673,6 +688,9 @@ private Map getAttributionParameters(String initiatedBy) {
PackageBuilder.addString(parameters, "push_token", activityStateCopy.pushToken);
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -734,6 +752,9 @@ private Map getGdprParameters() {
PackageBuilder.addString(parameters, "push_token", activityStateCopy.pushToken);
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -795,6 +816,9 @@ private Map getDisableThirdPartySharingParameters() {
PackageBuilder.addString(parameters, "push_token", activityStateCopy.pushToken);
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -869,6 +893,9 @@ private Map getDisableThirdPartySharingParameters() {
PackageBuilder.addString(parameters, "push_token", activityStateCopy.pushToken);
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -935,6 +962,9 @@ private Map getMeasurementConsentParameters(
PackageBuilder.addString(parameters, "push_token", activityStateCopy.pushToken);
PackageBuilder.addString(parameters, "secret_id", adjustConfig.secretId);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -1021,6 +1051,9 @@ private Map getAdRevenueParameters(String source, JSONObject adR
PackageBuilder.addDuration(parameters, "time_spent", activityStateCopy.timeSpent);
PackageBuilder.addString(parameters, "updated_at", deviceInfo.appUpdateTime);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -1118,6 +1151,9 @@ private Map getAdRevenueParameters(AdjustAdRevenue adjustAdReven
PackageBuilder.addDuration(parameters, "time_spent", activityStateCopy.timeSpent);
PackageBuilder.addString(parameters, "updated_at", deviceInfo.appUpdateTime);
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -1218,6 +1254,9 @@ private Map getSubscriptionParameters(AdjustPlayStoreSubscriptio
PackageBuilder.addDateInMilliseconds(parameters, "transaction_date", subscription.getPurchaseTime());
PackageBuilder.addString(parameters, "transaction_id", subscription.getOrderId());
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
@@ -1305,6 +1344,9 @@ private Map getVerificationParameters(AdjustPurchase purchase) {
PackageBuilder.addString(parameters, "product_id", purchase.getProductId());
PackageBuilder.addString(parameters, "purchase_token", purchase.getPurchaseToken());
+ // google play games
+ PackageBuilder.addBoolean(parameters, "gpg_pc_enabled", deviceInfo.isGooglePlayGamesForPC ? true : null);
+
injectFeatureFlagsWithParameters(parameters);
checkDeviceIds(parameters);
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageFactory.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageFactory.java
index 4eb89269f..b92687510 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageFactory.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageFactory.java
@@ -150,6 +150,7 @@ public static ActivityPackage buildInstallReferrerSdkClickPackage(final Referrer
clickPackageBuilder.installBeginTimeServerInSeconds = referrerDetails.installBeginTimestampServerSeconds;
clickPackageBuilder.installVersion = referrerDetails.installVersion;
clickPackageBuilder.googlePlayInstant = referrerDetails.googlePlayInstant;
+ clickPackageBuilder.isClick = referrerDetails.isClick;
clickPackageBuilder.referrerApi = referrerApi;
ActivityPackage clickPackage = clickPackageBuilder.buildClickPackage(Constants.INSTALL_REFERRER);
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ReferrerDetails.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ReferrerDetails.java
index 3fe7c0e6c..e84beaa8a 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/ReferrerDetails.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/ReferrerDetails.java
@@ -8,6 +8,7 @@ public class ReferrerDetails {
public long installBeginTimestampServerSeconds; // The server-side timestamp, when app installation began.
public String installVersion; // The app's version at the time when the app was first installed.
public Boolean googlePlayInstant; // Indicates whether app's instant experience was launched within the past 7 days.
+ public Boolean isClick; // Indicates click (true) or impression (false)
public ReferrerDetails(final String installReferrer,
final long referrerClickTimestampSeconds,
@@ -15,7 +16,8 @@ public ReferrerDetails(final String installReferrer,
final long referrerClickTimestampServerSeconds,
final long installBeginTimestampServerSeconds,
final String installVersion,
- final Boolean googlePlayInstant) {
+ final Boolean googlePlayInstant,
+ final Boolean isClick) {
this.installReferrer = installReferrer;
this.referrerClickTimestampSeconds = referrerClickTimestampSeconds;
@@ -24,6 +26,7 @@ public ReferrerDetails(final String installReferrer,
this.installBeginTimestampServerSeconds = installBeginTimestampServerSeconds;
this.installVersion = installVersion;
this.googlePlayInstant = googlePlayInstant;
+ this.isClick = isClick;
}
public ReferrerDetails(final String installReferrer,
@@ -36,8 +39,23 @@ public ReferrerDetails(final String installReferrer,
-1,
-1,
null,
+ null,
null);
}
+ public ReferrerDetails(final String installReferrer,
+ final long referrerClickTimestampSeconds,
+ final Boolean isClick) {
+
+ this(installReferrer,
+ referrerClickTimestampSeconds,
+ -1,
+ -1,
+ -1,
+ null,
+ null,
+ isClick);
+
+ }
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java
index 86eec7784..8bdb6c4a6 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java
@@ -332,6 +332,7 @@ private void sendSdkClickI(final ActivityPackage sdkClickPackage) {
long installBeginServer = -1;
String installVersion = null;
Boolean googlePlayInstant = null;
+ Boolean isClick = null;
String referrerApi = null;
if (isInstallReferrer) {
@@ -345,6 +346,7 @@ private void sendSdkClickI(final ActivityPackage sdkClickPackage) {
installBeginServer = sdkClickPackage.getInstallBeginTimeServerInSeconds();
installVersion = sdkClickPackage.getInstallVersion();
googlePlayInstant = sdkClickPackage.getGooglePlayInstant();
+ isClick = sdkClickPackage.getIsClick();
referrerApi = sdkClickPackage.getParameters().get("referrer_api");
}
@@ -393,6 +395,7 @@ private void sendSdkClickI(final ActivityPackage sdkClickPackage) {
sdkClickResponseData.installBeginServer = installBeginServer;
sdkClickResponseData.installVersion = installVersion;
sdkClickResponseData.googlePlayInstant = googlePlayInstant;
+ sdkClickResponseData.isClick = isClick;
sdkClickResponseData.referrerApi = referrerApi;
sdkClickResponseData.isInstallReferrer = true;
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickResponseData.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickResponseData.java
index b1382effd..0d2cb223f 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickResponseData.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickResponseData.java
@@ -13,5 +13,6 @@ public class SdkClickResponseData extends ResponseData {
long installBeginServer;
String installVersion;
Boolean googlePlayInstant;
+ Boolean isClick;
String referrerApi;
}
diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
index 8bcae6f6b..530adf0d5 100644
--- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
+++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/Util.java
@@ -765,6 +765,8 @@ public static boolean isEqualReferrerDetails(final ReferrerDetails referrerDetai
return isEqualXiaomiReferrerDetails(referrerDetails, activityState);
} else if (referrerApi.equals(Constants.REFERRER_API_VIVO)) {
return isEqualVivoReferrerDetails(referrerDetails, activityState);
+ } else if (referrerApi.equals(Constants.REFERRER_API_META)) {
+ return isEqualMetaReferrerDetails(referrerDetails, activityState);
}
return false;
@@ -826,6 +828,11 @@ public static Boolean getFireTrackingEnabled(final AdjustConfig adjustConfig) {
return getFireTrackingEnabled(adjustConfig.context.getContentResolver());
}
+ public static boolean isGooglePlayGamesForPC(final Context context) {
+ PackageManager pm = context.getPackageManager();
+ return pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE");
+ }
+
private static boolean isEqualGoogleReferrerDetails(final ReferrerDetails referrerDetails,
final ActivityState activityState) {
return referrerDetails.referrerClickTimestampSeconds == activityState.clickTime
@@ -875,4 +882,11 @@ private static boolean isEqualVivoReferrerDetails(final ReferrerDetails referrer
&& Util.equalString(referrerDetails.installReferrer, activityState.installReferrerVivo)
&& Util.equalString(referrerDetails.installVersion, activityState.installVersionVivo);
}
+
+ private static boolean isEqualMetaReferrerDetails(final ReferrerDetails referrerDetails,
+ final ActivityState activityState) {
+ return referrerDetails.referrerClickTimestampSeconds == activityState.clickTimeMeta
+ && Util.equalString(referrerDetails.installReferrer, activityState.installReferrerMeta)
+ && Util.equalBoolean(referrerDetails.isClick, activityState.isClickMeta);
+ }
}
\ No newline at end of file
diff --git a/Adjust/sdk-plugin-criteo/build.gradle b/Adjust/sdk-plugin-criteo/build.gradle
index 25b66e320..8c64b270c 100644
--- a/Adjust/sdk-plugin-criteo/build.gradle
+++ b/Adjust/sdk-plugin-criteo/build.gradle
@@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-imei/build.gradle b/Adjust/sdk-plugin-imei/build.gradle
index d6a7d9425..90d367693 100644
--- a/Adjust/sdk-plugin-imei/build.gradle
+++ b/Adjust/sdk-plugin-imei/build.gradle
@@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-oaid/build.gradle b/Adjust/sdk-plugin-oaid/build.gradle
index 715b57d80..acfc85bbc 100644
--- a/Adjust/sdk-plugin-oaid/build.gradle
+++ b/Adjust/sdk-plugin-oaid/build.gradle
@@ -33,7 +33,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
implementation 'com.huawei.hms:ads-identifier:3.4.56.300'
}
diff --git a/Adjust/sdk-plugin-samsung-referrer/build.gradle b/Adjust/sdk-plugin-samsung-referrer/build.gradle
index f40cee108..ed94d410a 100644
--- a/Adjust/sdk-plugin-samsung-referrer/build.gradle
+++ b/Adjust/sdk-plugin-samsung-referrer/build.gradle
@@ -27,7 +27,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
// Add Samsung referrer lib via Maven.
implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:3.0.1'
diff --git a/Adjust/sdk-plugin-sociomantic/build.gradle b/Adjust/sdk-plugin-sociomantic/build.gradle
index ad8c23ccf..5fce05f0a 100644
--- a/Adjust/sdk-plugin-sociomantic/build.gradle
+++ b/Adjust/sdk-plugin-sociomantic/build.gradle
@@ -28,7 +28,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-trademob/build.gradle b/Adjust/sdk-plugin-trademob/build.gradle
index e1ce451d4..6c62797a0 100644
--- a/Adjust/sdk-plugin-trademob/build.gradle
+++ b/Adjust/sdk-plugin-trademob/build.gradle
@@ -28,7 +28,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-vivo-referrer/build.gradle b/Adjust/sdk-plugin-vivo-referrer/build.gradle
index b7c36f705..40ed11c3a 100644
--- a/Adjust/sdk-plugin-vivo-referrer/build.gradle
+++ b/Adjust/sdk-plugin-vivo-referrer/build.gradle
@@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java b/Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java
index 65e2b8c35..ecffbbe4c 100644
--- a/Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java
+++ b/Adjust/sdk-plugin-vivo-referrer/src/main/java/com/adjust/sdk/vivo/VivoReferrerClient.java
@@ -26,7 +26,7 @@ public static ReferrerDetails getReferrer(Context context, final ILogger logger)
long installBeginTime = resultBundle.getLong("download_begin_timestamp_seconds");
String installVersion = resultBundle.getString("install_version");
- return new ReferrerDetails(installReferrer, clickTime, installBeginTime, -1, -1, installVersion, null);
+ return new ReferrerDetails(installReferrer, clickTime, installBeginTime, -1, -1, installVersion, null, null);
} catch (Exception e) {
logger.info("VivoReferrer read error" + e.getMessage());
}
diff --git a/Adjust/sdk-plugin-webbridge/build.gradle b/Adjust/sdk-plugin-webbridge/build.gradle
index 0f4748608..b5eb8770b 100644
--- a/Adjust/sdk-plugin-webbridge/build.gradle
+++ b/Adjust/sdk-plugin-webbridge/build.gradle
@@ -30,7 +30,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
}
// read local properties
diff --git a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
index aad5cfa65..4ac611110 100644
--- a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
+++ b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
@@ -211,7 +211,7 @@ var Adjust = {
if (this.adjustConfig) {
return this.adjustConfig.getSdkPrefix();
} else {
- return 'web-bridge4.35.1';
+ return 'web-bridge4.36.0';
}
},
diff --git a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js
index 9eb585aa5..968f8b2b0 100644
--- a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js
+++ b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js
@@ -56,6 +56,7 @@ function AdjustConfig(appToken, environment, legacy) {
this.playStoreKidsAppEnabled = null;
this.coppaCompliantEnabled = null;
this.finalAttributionEnabled = null;
+ this.fbAppId = null;
}
AdjustConfig.EnvironmentSandbox = 'sandbox';
@@ -264,3 +265,7 @@ AdjustConfig.prototype.setCoppaCompliantEnabled = function(isEnabled) {
AdjustConfig.prototype.setFinalAttributionEnabled = function(isEnabled) {
this.finalAttributionEnabled = isEnabled;
};
+
+AdjustConfig.prototype.setFbAppId = function(fbAppId) {
+ this.fbAppId = fbAppId;
+};
diff --git a/Adjust/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridgeInstance.java b/Adjust/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridgeInstance.java
index a34ed4736..cd8f6def2 100644
--- a/Adjust/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridgeInstance.java
+++ b/Adjust/sdk-plugin-webbridge/src/main/java/com/adjust/sdk/webbridge/AdjustBridgeInstance.java
@@ -175,6 +175,7 @@ public void onCreate(String adjustConfigString) {
Object playStoreKidsAppEnabledField = jsonAdjustConfig.get("playStoreKidsAppEnabled");
Object coppaCompliantEnabledField = jsonAdjustConfig.get("coppaCompliantEnabled");
Object finalAttributionEnabledField = jsonAdjustConfig.get("finalAttributionEnabled");
+ Object fbAppIdField = jsonAdjustConfig.get("fbAppId");
String appToken = AdjustBridgeUtil.fieldToString(appTokenField);
String environment = AdjustBridgeUtil.fieldToString(environmentField);
@@ -408,6 +409,12 @@ public boolean launchReceivedDeeplink(Uri deeplink) {
adjustConfig.setFinalAttributionEnabled(finalAttributionEnabled);
}
+ // FB App ID
+ String fbAppId = AdjustBridgeUtil.fieldToString(fbAppIdField);
+ if (fbAppId != null) {
+ adjustConfig.setFbAppId(fbAppId);
+ }
+
// Manually call onResume() because web view initialisation will happen a bit delayed.
// With this delay, it will miss lifecycle callback onResume() initial firing.
Adjust.onCreate(adjustConfig);
diff --git a/Adjust/sdk-plugin-xiaomi-referrer/build.gradle b/Adjust/sdk-plugin-xiaomi-referrer/build.gradle
index 98018ddc5..83b6d18cd 100644
--- a/Adjust/sdk-plugin-xiaomi-referrer/build.gradle
+++ b/Adjust/sdk-plugin-xiaomi-referrer/build.gradle
@@ -31,7 +31,7 @@ dependencies {
// Add SDK via module.
compileOnly project(':sdk-core')
// Add SDK via Maven.
- // implementation 'com.adjust.sdk:adjust-android:4.35.1'
+ // implementation 'com.adjust.sdk:adjust-android:4.36.0'
// Add xiaomi referrer lib via Maven.
implementation 'com.miui.referrer:homereferrer:1.0.0.6'
diff --git a/Adjust/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/Util.java b/Adjust/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/Util.java
index 0b5ec74c8..35f071b6f 100644
--- a/Adjust/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/Util.java
+++ b/Adjust/sdk-plugin-xiaomi-referrer/src/main/java/com/adjust/sdk/xiaomi/Util.java
@@ -22,6 +22,6 @@ public synchronized static ReferrerDetails getXiaomiInstallReferrerDetails(Conte
getAppsReferrerDetails.getInstallBeginTimestampSeconds(),
getAppsReferrerDetails.getReferrerClickTimestampServerSeconds(),
getAppsReferrerDetails.getInstallBeginTimestampServerSeconds(),
- getAppsReferrerDetails.getInstallVersion(), null);
+ getAppsReferrerDetails.getInstallVersion(), null, null);
}
}
diff --git a/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java b/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
index 56bc3938d..752a3b8de 100644
--- a/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
+++ b/Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
@@ -53,7 +53,7 @@ public TestActivityPackage(ActivityPackage activityPackage) {
// default values
appToken = "123456789012";
environment = "sandbox";
- clientSdk = "android4.35.1";
+ clientSdk = "android4.36.0";
suffix = "";
attribution = new AdjustAttribution();
playServices = true;
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 781144025..d180ca66c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+### Version 4.36.0 (19th October 2023)
+#### Added
+- Added support for Meta install referrer.
+- Added support for Google Play Games on PC.
+- Added support for `TopOn` and `AD(X)` ad revenue tracking.
+- Added Getters for certain public classes.
+
+---
+
### Version 4.35.1 (9th October 2023)
#### Changed
- Added sending of `event_callback_id` parameter (if set) with the event payload.
diff --git a/VERSION b/VERSION
index d5663ffbe..05ca23e88 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.35.1
+4.36.0