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