diff --git a/Adjust/build.gradle b/Adjust/build.gradle index 70abd26e8..8e7e163e0 100644 --- a/Adjust/build.gradle +++ b/Adjust/build.gradle @@ -9,7 +9,7 @@ ext { coreMinSdkVersion = 9 coreCompileSdkVersion = 30 coreTargetSdkVersion = 30 - coreVersionName = '4.28.3' + coreVersionName = '4.28.4' defaultVersionCode = 1 webbridgeMinSdkVersion = 17 diff --git a/Adjust/example-app-tv/src/main/AndroidManifest.xml b/Adjust/example-app-tv/src/main/AndroidManifest.xml index 38f598777..9898d3132 100755 --- a/Adjust/example-app-tv/src/main/AndroidManifest.xml +++ b/Adjust/example-app-tv/src/main/AndroidManifest.xml @@ -5,13 +5,20 @@ + + + + + android:theme="@style/Theme.AppCompat" + android:banner="@mipmap/ic_launcher"> + @@ -38,7 +46,7 @@ note that the leading "/" is required for pathPrefix Accepts URIs that begin with "example://” --> - + 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 d4171fcb4..6ea79b848 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 @@ -32,7 +32,7 @@ private Adjust() { */ public static synchronized AdjustInstance getDefaultInstance() { @SuppressWarnings("unused") - String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.28.3"; + String VERSION = "!SDK-VERSION-STRING!:com.adjust.sdk:adjust-android:4.28.4"; if (defaultInstance == null) { defaultInstance = new AdjustInstance(); diff --git a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java index 36f4cfcc9..abbed1e4c 100644 --- a/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java +++ b/Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java @@ -101,7 +101,7 @@ public void onCreate(final AdjustConfig adjustConfig) { * @param event AdjustEvent object to be tracked */ public void trackEvent(final AdjustEvent event) { - if (!checkActivityHandler()) { + if (!checkActivityHandler("trackEvent")) { return; } activityHandler.trackEvent(event); @@ -111,7 +111,7 @@ public void trackEvent(final AdjustEvent event) { * Called upon each Activity's onResume() method call. */ public void onResume() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("onResume")) { return; } activityHandler.onResume(); @@ -121,7 +121,7 @@ public void onResume() { * Called upon each Activity's onPause() method call. */ public void onPause() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("onPause")) { return; } activityHandler.onPause(); @@ -145,7 +145,7 @@ public void setEnabled(final boolean enabled) { * @return boolean indicating whether SDK is enabled or not */ public boolean isEnabled() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("isEnabled")) { return isInstanceEnabled(); } return activityHandler.isEnabled(); @@ -157,7 +157,7 @@ public boolean isEnabled() { * @param url Deep link URL to process */ public void appWillOpenUrl(final Uri url) { - if (!checkActivityHandler()) { + if (!checkActivityHandler("appWillOpenUrl")) { return; } long clickTime = System.currentTimeMillis(); @@ -171,10 +171,16 @@ public void appWillOpenUrl(final Uri url) { * @param context Application context */ public void appWillOpenUrl(final Uri url, final Context context) { + // Check for deep link validity. If invalid, return. + if (url == null || url.toString().length() == 0) { + AdjustFactory.getLogger().warn( + "Skipping deep link processing (null or empty)"); + return; + } + long clickTime = System.currentTimeMillis(); - if (!checkActivityHandler()) { - SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager(context); - sharedPreferencesManager.saveDeeplink(url, clickTime); + if (!checkActivityHandler("appWillOpenUrl", true)) { + saveDeeplink(url, clickTime, context); return; } @@ -192,11 +198,13 @@ public void sendReferrer(final String rawReferrer, final Context context) { // Check for referrer validity. If invalid, return. if (rawReferrer == null || rawReferrer.length() == 0) { + AdjustFactory.getLogger().warn( + "Skipping INSTALL_REFERRER intent referrer processing (null or empty)"); return; } saveRawReferrer(rawReferrer, clickTime, context); - if (checkActivityHandler("referrer")) { + if (checkActivityHandler("referrer", true)) { if (activityHandler.isEnabled()) { activityHandler.sendReftagReferrer(); } @@ -212,11 +220,13 @@ public void sendReferrer(final String rawReferrer, final Context context) { public void sendPreinstallReferrer(final String referrer, final Context context) { // Check for referrer validity. If invalid, return. if (referrer == null || referrer.length() == 0) { + AdjustFactory.getLogger().warn( + "Skipping SYSTEM_INSTALLER_REFERRER preinstall referrer processing (null or empty)"); return; } savePreinstallReferrer(referrer, context); - if (checkActivityHandler("preinstall referrer")) { + if (checkActivityHandler("preinstall referrer", true)) { if (activityHandler.isEnabled()) { activityHandler.sendPreinstallReferrer(); } @@ -240,7 +250,7 @@ public void setOfflineMode(final boolean enabled) { * Called if SDK initialisation was delayed and you would like to stop waiting for timer. */ public void sendFirstPackages() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("sendFirstPackages")) { return; } activityHandler.sendFirstPackages(); @@ -253,7 +263,7 @@ public void sendFirstPackages() { * @param value Global callback parameter value */ public void addSessionCallbackParameter(final String key, final String value) { - if (checkActivityHandler("adding session callback parameter")) { + if (checkActivityHandler("adding session callback parameter", true)) { activityHandler.addSessionCallbackParameter(key, value); return; } @@ -273,7 +283,7 @@ public void run(final ActivityHandler activityHandler) { * @param value Global partner parameter value */ public void addSessionPartnerParameter(final String key, final String value) { - if (checkActivityHandler("adding session partner parameter")) { + if (checkActivityHandler("adding session partner parameter", true)) { activityHandler.addSessionPartnerParameter(key, value); return; } @@ -291,7 +301,7 @@ public void run(final ActivityHandler activityHandler) { * @param key Global callback parameter key */ public void removeSessionCallbackParameter(final String key) { - if (checkActivityHandler("removing session callback parameter")) { + if (checkActivityHandler("removing session callback parameter", true)) { activityHandler.removeSessionCallbackParameter(key); return; } @@ -309,7 +319,7 @@ public void run(final ActivityHandler activityHandler) { * @param key Global partner parameter key */ public void removeSessionPartnerParameter(final String key) { - if (checkActivityHandler("removing session partner parameter")) { + if (checkActivityHandler("removing session partner parameter", true)) { activityHandler.removeSessionPartnerParameter(key); return; } @@ -325,7 +335,7 @@ public void run(final ActivityHandler activityHandler) { * Called to remove all added global callback parameters. */ public void resetSessionCallbackParameters() { - if (checkActivityHandler("resetting session callback parameters")) { + if (checkActivityHandler("resetting session callback parameters", true)) { activityHandler.resetSessionCallbackParameters(); return; } @@ -341,7 +351,7 @@ public void run(final ActivityHandler activityHandler) { * Called to remove all added global partner parameters. */ public void resetSessionPartnerParameters() { - if (checkActivityHandler("resetting session partner parameters")) { + if (checkActivityHandler("resetting session partner parameters", true)) { activityHandler.resetSessionPartnerParameters(); return; } @@ -358,7 +368,7 @@ public void run(final ActivityHandler activityHandler) { * Used only for Adjust tests, shouldn't be used in client apps. */ public void teardown() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("teardown")) { return; } activityHandler.teardown(); @@ -371,7 +381,7 @@ public void teardown() { * @param token Push notifications token */ public void setPushToken(final String token) { - if (!checkActivityHandler("push token")) { + if (!checkActivityHandler("push token", true)) { this.pushToken = token; } else { activityHandler.setPushToken(token, false); @@ -386,7 +396,7 @@ public void setPushToken(final String token) { */ public void setPushToken(final String token, final Context context) { savePushToken(token, context); - if (checkActivityHandler("push token")) { + if (checkActivityHandler("push token", true)) { if (activityHandler.isEnabled()) { activityHandler.setPushToken(token, true); } @@ -400,7 +410,7 @@ public void setPushToken(final String token, final Context context) { */ public void gdprForgetMe(final Context context) { saveGdprForgetMe(context); - if (checkActivityHandler("gdpr")) { + if (checkActivityHandler("gdpr", true)) { if (activityHandler.isEnabled()) { activityHandler.gdprForgetMe(); } @@ -413,7 +423,7 @@ public void gdprForgetMe(final Context context) { * @param context Application context */ public void disableThirdPartySharing(final Context context) { - if (!checkActivityHandler("disable third party sharing")) { + if (!checkActivityHandler("disable third party sharing", true)) { saveDisableThirdPartySharing(context); return; } @@ -422,7 +432,7 @@ public void disableThirdPartySharing(final Context context) { } public void trackThirdPartySharing(final AdjustThirdPartySharing adjustThirdPartySharing) { - if (!checkActivityHandler("third party sharing")) { + if (!checkActivityHandler("third party sharing", true)) { preLaunchActions.preLaunchAdjustThirdPartySharingArray.add(adjustThirdPartySharing); return; } @@ -431,7 +441,7 @@ public void trackThirdPartySharing(final AdjustThirdPartySharing adjustThirdPart } public void trackMeasurementConsent(final boolean consentMeasurement) { - if (!checkActivityHandler("measurement consent")) { + if (!checkActivityHandler("measurement consent", true)) { preLaunchActions.lastMeasurementConsentTracked = consentMeasurement; return; } @@ -446,7 +456,7 @@ public void trackMeasurementConsent(final boolean consentMeasurement) { * @param adRevenueJson JsonObject content of the ad revenue information */ public void trackAdRevenue(String source, JSONObject adRevenueJson) { - if (!checkActivityHandler()) { + if (!checkActivityHandler("trackAdRevenue")) { return; } activityHandler.trackAdRevenue(source, adRevenueJson); @@ -458,7 +468,7 @@ public void trackAdRevenue(String source, JSONObject adRevenueJson) { * @param adjustAdRevenue Adjust ad revenue information like source, revenue, currency etc */ public void trackAdRevenue(final AdjustAdRevenue adjustAdRevenue) { - if (!checkActivityHandler()) { + if (!checkActivityHandler("trackAdRevenue")) { return; } @@ -471,7 +481,7 @@ public void trackAdRevenue(final AdjustAdRevenue adjustAdRevenue) { * @param subscription AdjustPlayStoreSubscription object to be tracked */ public void trackPlayStoreSubscription(AdjustPlayStoreSubscription subscription) { - if (!checkActivityHandler()) { + if (!checkActivityHandler("trackPlayStoreSubscription")) { return; } activityHandler.trackPlayStoreSubscription(subscription); @@ -483,7 +493,7 @@ public void trackPlayStoreSubscription(AdjustPlayStoreSubscription subscription) * @return Unique Adjust device indetifier */ public String getAdid() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("getAdid")) { return null; } return activityHandler.getAdid(); @@ -495,7 +505,7 @@ public String getAdid() { * @return AdjustAttribution object with current attribution value */ public AdjustAttribution getAttribution() { - if (!checkActivityHandler()) { + if (!checkActivityHandler("getAttribution")) { return null; } return activityHandler.getAttribution(); @@ -515,8 +525,8 @@ public String getSdkVersion() { * * @return boolean indicating whether ActivityHandler instance is set or not */ - private boolean checkActivityHandler() { - return checkActivityHandler(null); + private boolean checkActivityHandler(final String action) { + return checkActivityHandler(action, false); } /** @@ -529,31 +539,38 @@ private boolean checkActivityHandler() { */ private boolean checkActivityHandler(final boolean status, final String trueMessage, final String falseMessage) { if (status) { - return checkActivityHandler(trueMessage); + return checkActivityHandler(trueMessage, true); } else { - return checkActivityHandler(falseMessage); + return checkActivityHandler(falseMessage, true); } } /** * Check if ActivityHandler instance is set or not. * - * @param savedForLaunchWarningSuffixMessage Log message to indicate action that was asked when SDK was disabled + * @param action Log message to indicate action that was asked to perform when SDK was disabled * @return boolean indicating whether ActivityHandler instance is set or not */ - private boolean checkActivityHandler(final String savedForLaunchWarningSuffixMessage) { - if (activityHandler == null) { - if (savedForLaunchWarningSuffixMessage != null) { - AdjustFactory.getLogger().warn( - "Adjust not initialized, but %s saved for launch", - savedForLaunchWarningSuffixMessage); - } else { - AdjustFactory.getLogger().error("Adjust not initialized correctly"); - } + private boolean checkActivityHandler(final String action, final boolean actionSaved) { + if (activityHandler != null) { + return true; + } + + if (action == null) { + AdjustFactory.getLogger().error("Adjust not initialized correctly"); return false; + } + + if (actionSaved) { + AdjustFactory.getLogger().warn( + "Adjust not initialized, but %s saved for launch", + action); } else { - return true; + AdjustFactory.getLogger().warn( + "Adjust not initialized, can't perform %s", + action); } + return false; } /** @@ -640,6 +657,24 @@ public void run() { Util.runInBackground(command); } + /** + * Save deep link to shared preferences. + * + * @param deeplink Deeplink Uri object + * @param clickTime Time when appWillOpenUrl(Uri, Context) method was called + * @param context Application context + */ + private void saveDeeplink(final Uri deeplink, final long clickTime, final Context context) { + Runnable command = new Runnable() { + @Override + public void run() { + SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager(context); + sharedPreferencesManager.saveDeeplink(deeplink, clickTime); + } + }; + Util.runInBackground(command); + } + /** * Flag stored referrers as still not sent. * 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 dc0d2ff5c..67dba2015 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 @@ -29,7 +29,7 @@ public interface Constants { String SCHEME = "https"; String AUTHORITY = "app.adjust.com"; - String CLIENT_SDK = "android4.28.3"; + String CLIENT_SDK = "android4.28.4"; String LOGTAG = "Adjust"; String REFTAG = "reftag"; String INSTALL_REFERRER = "install_referrer"; 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 f85ea280e..66a51bb3c 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 @@ -16,6 +16,8 @@ import java.util.Date; import java.util.Locale; +import static android.content.res.Configuration.UI_MODE_TYPE_MASK; +import static android.content.res.Configuration.UI_MODE_TYPE_TELEVISION; import static com.adjust.sdk.Constants.HIGH; import static com.adjust.sdk.Constants.LARGE; import static com.adjust.sdk.Constants.LONG; @@ -79,6 +81,7 @@ class DeviceInfo { String buildName; String appInstallTime; String appUpdateTime; + int uiMode; DeviceInfo(Context context, String sdkPrefix) { Resources resources = context.getResources(); @@ -86,11 +89,10 @@ class DeviceInfo { Configuration configuration = resources.getConfiguration(); Locale locale = Util.getLocale(configuration); int screenLayout = configuration.screenLayout; - ContentResolver contentResolver = context.getContentResolver(); packageName = getPackageName(context); appVersion = getAppVersion(context); - deviceType = getDeviceType(screenLayout); + deviceType = getDeviceType(configuration); deviceName = getDeviceName(); deviceManufacturer = getDeviceManufacturer(); osName = getOsName(); @@ -110,6 +112,7 @@ class DeviceInfo { buildName = getBuildName(); appInstallTime = getAppInstallTime(context); appUpdateTime = getAppUpdateTime(context); + uiMode = getDeviceUiMode(configuration); } void reloadPlayIds(Context context) { @@ -223,9 +226,13 @@ private String getAppVersion(Context context) { } } - private String getDeviceType(int screenLayout) { - int screenSize = screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; + private String getDeviceType(Configuration configuration) { + int uiMode = configuration.uiMode & UI_MODE_TYPE_MASK; + if (uiMode == UI_MODE_TYPE_TELEVISION) { + return "tv"; + } + int screenSize = configuration.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; switch (screenSize) { case Configuration.SCREENLAYOUT_SIZE_SMALL: case Configuration.SCREENLAYOUT_SIZE_NORMAL: @@ -238,6 +245,10 @@ private String getDeviceType(int screenLayout) { } } + private int getDeviceUiMode(Configuration configuration) { + return configuration.uiMode & UI_MODE_TYPE_MASK; + } + private String getDeviceName() { return Build.MODEL; } 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 68648f1b6..a5012cce8 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 @@ -314,6 +314,7 @@ private Map getSessionParameters(boolean isInDelay) { PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -404,6 +405,7 @@ public Map getEventParameters(AdjustEvent event, boolean isInDel PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -555,6 +557,7 @@ private Map getClickParameters(String source) { PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -647,6 +650,7 @@ private Map getAttributionParameters(String initiatedBy) { PackageBuilder.addBoolean(parameters, "needs_cost", adjustConfig.needsCost); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled); PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId); @@ -708,6 +712,7 @@ private Map getGdprParameters() { PackageBuilder.addBoolean(parameters, "needs_cost", adjustConfig.needsCost); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled); PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId); @@ -768,6 +773,7 @@ private Map getDisableThirdPartySharingParameters() { PackageBuilder.addBoolean(parameters, "needs_cost", adjustConfig.needsCost); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled); PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId); @@ -838,6 +844,7 @@ private Map getDisableThirdPartySharingParameters() { PackageBuilder.addBoolean(parameters, "device_known", adjustConfig.deviceKnown); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled); PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId); @@ -903,6 +910,7 @@ private Map getMeasurementConsentParameters( PackageBuilder.addBoolean(parameters, "device_known", adjustConfig.deviceKnown); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); PackageBuilder.addBoolean(parameters, "event_buffering_enabled", adjustConfig.eventBufferingEnabled); PackageBuilder.addString(parameters, "external_device_id", adjustConfig.externalDeviceId); @@ -968,6 +976,7 @@ private Map getAdRevenueParameters(String source, JSONObject adR PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -1060,6 +1069,7 @@ private Map getAdRevenueParameters(AdjustAdRevenue adjustAdReven PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -1157,6 +1167,7 @@ private Map getSubscriptionParameters(AdjustPlayStoreSubscriptio PackageBuilder.addString(parameters, "device_manufacturer", deviceInfo.deviceManufacturer); PackageBuilder.addString(parameters, "device_name", deviceInfo.deviceName); PackageBuilder.addString(parameters, "device_type", deviceInfo.deviceType); + PackageBuilder.addLong(parameters, "ui_mode", deviceInfo.uiMode); PackageBuilder.addString(parameters, "display_height", deviceInfo.displayHeight); PackageBuilder.addString(parameters, "display_width", deviceInfo.displayWidth); PackageBuilder.addString(parameters, "environment", adjustConfig.environment); @@ -1325,6 +1336,7 @@ private void checkDeviceIds(Map parameters) { && !parameters.containsKey("mac_md5") && !parameters.containsKey("android_id") && !parameters.containsKey("gps_adid") + && !parameters.containsKey("fire_adid") && !parameters.containsKey("oaid") && !parameters.containsKey("imei") && !parameters.containsKey("meid") diff --git a/Adjust/sdk-plugin-criteo/build.gradle b/Adjust/sdk-plugin-criteo/build.gradle index 71bf65f8c..e02472003 100644 --- a/Adjust/sdk-plugin-criteo/build.gradle +++ b/Adjust/sdk-plugin-criteo/build.gradle @@ -25,7 +25,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustCriteoAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-imei/build.gradle b/Adjust/sdk-plugin-imei/build.gradle index f726cf460..6094e0b4d 100644 --- a/Adjust/sdk-plugin-imei/build.gradle +++ b/Adjust/sdk-plugin-imei/build.gradle @@ -24,7 +24,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustImeiAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-oaid/build.gradle b/Adjust/sdk-plugin-oaid/build.gradle index 76a32cfa2..a9182b951 100644 --- a/Adjust/sdk-plugin-oaid/build.gradle +++ b/Adjust/sdk-plugin-oaid/build.gradle @@ -6,9 +6,6 @@ repositories { maven { url "https://oss.sonatype.org/content/repositories/staging/" } - flatDir { - dirs 'libs' - } } android { @@ -23,11 +20,11 @@ android { } dependencies { - compileOnly files('libs/oaid_sdk_1.0.25.aar') + compileOnly files('libs/oaid_sdk_1.0.26.aar') // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustOaidAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.25.aar b/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.25.aar deleted file mode 100644 index 47ca06de7..000000000 Binary files a/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.25.aar and /dev/null differ diff --git a/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.26.aar b/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.26.aar new file mode 100644 index 000000000..088add6b2 Binary files /dev/null and b/Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.26.aar differ diff --git a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/AdjustOaid.java b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/AdjustOaid.java index dcd0735a1..6a375e0ab 100644 --- a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/AdjustOaid.java +++ b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/AdjustOaid.java @@ -1,8 +1,9 @@ package com.adjust.sdk.oaid; import android.content.Context; +import android.util.Log; -import com.adjust.sdk.Reflection; +import com.bun.miitmdid.core.MdidSdkHelper; public class AdjustOaid { static boolean isOaidToBeRead = false; @@ -10,13 +11,19 @@ public class AdjustOaid { public static void readOaid() { isOaidToBeRead = true; - - isMsaSdkAvailable = - Reflection.forName("com.bun.miitmdid.core.MdidSdkHelper") != null; } - public static void readOaid(Context base) { + public static void readOaid(Context context) { readOaid(); + + try { + System.loadLibrary("nllvm1623827671"); + String certificate = Util.readCertFromAssetFile(context); + isMsaSdkAvailable = MdidSdkHelper.InitCert(context, certificate); + } catch (Throwable t) { + isMsaSdkAvailable = false; + Log.d("Adjust", "Error during msa sdk initialization " + t.getMessage()); + } } public static void doNotReadOaid() { diff --git a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/MsaSdkClient.java b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/MsaSdkClient.java index d8e1d0482..dc5b24439 100644 --- a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/MsaSdkClient.java +++ b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/MsaSdkClient.java @@ -3,7 +3,7 @@ import android.content.Context; import com.adjust.sdk.ILogger; -import com.bun.miitmdid.core.ErrorCode; +import com.bun.miitmdid.core.InfoCode; import com.bun.miitmdid.core.MdidSdkHelper; import com.bun.miitmdid.interfaces.IIdentifierListener; import com.bun.miitmdid.interfaces.IdSupplier; @@ -20,7 +20,7 @@ public static String getOaid(Context context, final ILogger logger, long maxWait boolean msaInternalLogging = false; int result = MdidSdkHelper.InitSdk(context, msaInternalLogging, new IIdentifierListener() { @Override - public void OnSupport(boolean b, IdSupplier idSupplier) { + public void onSupport(IdSupplier idSupplier) { try { if (idSupplier == null || idSupplier.getOAID() == null) { // so to avoid waiting for timeout @@ -51,20 +51,20 @@ public void OnSupport(boolean b, IdSupplier idSupplier) { private static boolean isError(int result, ILogger logger) { switch(result) { - case ErrorCode.INIT_ERROR_BEGIN: - logger.error("msa sdk error - INIT_ERROR_BEGIN"); + case InfoCode.INIT_ERROR_CERT_ERROR: + logger.error("msa sdk error - INIT_ERROR_CERT_ERROR"); return true; - case ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT: + case InfoCode.INIT_ERROR_DEVICE_NOSUPPORT: logger.error("msa sdk error - INIT_ERROR_DEVICE_NOSUPPORT"); return true; - case ErrorCode.INIT_ERROR_LOAD_CONFIGFILE: + case InfoCode.INIT_ERROR_LOAD_CONFIGFILE: logger.error("msa sdk error - INIT_ERROR_LOAD_CONFIGFILE"); return true; - case ErrorCode.INIT_ERROR_MANUFACTURER_NOSUPPORT: + case InfoCode.INIT_ERROR_MANUFACTURER_NOSUPPORT: logger.error("msa sdk error - INIT_ERROR_MANUFACTURER_NOSUPPORT"); return true; - case ErrorCode.INIT_HELPER_CALL_ERROR: - logger.error("msa sdk error - INIT_HELPER_CALL_ERROR"); + case InfoCode.INIT_ERROR_SDK_CALL_ERROR: + logger.error("msa sdk error - INIT_ERROR_SDK_CALL_ERROR"); return true; default: return false; diff --git a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/Util.java b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/Util.java index 46a9dbdb6..7382e3636 100644 --- a/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/Util.java +++ b/Adjust/sdk-plugin-oaid/src/main/java/com/adjust/sdk/oaid/Util.java @@ -1,11 +1,16 @@ package com.adjust.sdk.oaid; import android.content.Context; +import android.util.Log; import com.adjust.sdk.ILogger; import com.adjust.sdk.PackageBuilder; import com.adjust.sdk.oaid.OpenDeviceIdentifierClient.Info; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; @@ -86,4 +91,22 @@ private static Map getOaidParametersUsingMSA(Context context, IL logger.debug("Fail to read the OAID using MSA"); return null; } + + public static String readCertFromAssetFile(Context context) { + try { + String assetFileName = context.getPackageName() + ".cert.pem"; + InputStream is = context.getAssets().open(assetFileName); + BufferedReader in = new BufferedReader(new InputStreamReader(is)); + StringBuilder builder= new StringBuilder(); + String line; + while ((line = in.readLine()) != null){ + builder.append(line); + builder.append('\n'); + } + return builder.toString(); + } catch (Exception e) { + Log.e("Adjust", "readCertFromAssetFile failed"); + return ""; + } + } } diff --git a/Adjust/sdk-plugin-sociomantic/build.gradle b/Adjust/sdk-plugin-sociomantic/build.gradle index b123a1ec0..4f9d8216d 100644 --- a/Adjust/sdk-plugin-sociomantic/build.gradle +++ b/Adjust/sdk-plugin-sociomantic/build.gradle @@ -24,7 +24,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustSociomanticAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-trademob/build.gradle b/Adjust/sdk-plugin-trademob/build.gradle index 1832c15bb..d3dd2a2de 100644 --- a/Adjust/sdk-plugin-trademob/build.gradle +++ b/Adjust/sdk-plugin-trademob/build.gradle @@ -24,7 +24,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustTrademobAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-webbridge/build.gradle b/Adjust/sdk-plugin-webbridge/build.gradle index 0ce0efac7..efb239547 100644 --- a/Adjust/sdk-plugin-webbridge/build.gradle +++ b/Adjust/sdk-plugin-webbridge/build.gradle @@ -24,7 +24,7 @@ dependencies { // Add SDK via module. compileOnly project(':sdk-core') // Add SDK via Maven. - // implementation 'com.adjust.sdk:adjust-android:4.28.3' + // implementation 'com.adjust.sdk:adjust-android:4.28.4' } task adjustWebBridgeAndroidAar (type: Copy) { diff --git a/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js b/Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js index 791d31f25..9aa4bc022 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.28.3'; + return 'web-bridge4.28.4'; } }, 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 b39e0c7c5..b4d08340b 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.28.3"; + clientSdk = "android4.28.4"; suffix = ""; attribution = new AdjustAttribution(); playServices = true; diff --git a/CHANGELOG.md b/CHANGELOG.md index a96d6cd1a..393e52ea1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +### Version 4.28.4 (9th August 2021) +#### Added +- Added support for Android TV. +- Added support to OAID plugin for MSA SDK v1.0.26. + +#### Changed +- Improved logging. + +--- + ### Version 4.28.3 (21st July 2021) #### Fixed - Fixed missing authorization header in retry requests. diff --git a/README.md b/README.md index 4c863fd97..5e68912c2 100644 --- a/README.md +++ b/README.md @@ -113,14 +113,14 @@ These are the minimum required steps to integrate the Adjust SDK in your Android If you are using Maven, add the following to your `build.gradle` file: ```gradle -implementation 'com.adjust.sdk:adjust-android:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' implementation 'com.android.installreferrer:installreferrer:2.2' ``` If you would prefer to use the Adjust SDK inside web views in your app, please include this additional dependency as well: ```gradle -implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.3' +implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.4' ``` **Note**: The minimum supported Android API level for the web view extension is 17 (Jelly Bean). diff --git a/VERSION b/VERSION index a4930c94b..1f30b2818 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.28.3 +4.28.4 diff --git a/doc/chinese/README.md b/doc/chinese/README.md index 8e8607d36..9e04a975b 100644 --- a/doc/chinese/README.md +++ b/doc/chinese/README.md @@ -1,3 +1,12 @@ +**该指南即将过期。** + +该自述文件即将过期。现在,您可以前往我们的帮助中心查看此 SDK 文档。 + +* [English][en-helpcenter] +* [中文][zh-helpcenter] +* [日本語][ja-helpcenter] +* [한국어][ko-helpcenter] + ## 摘要 这是 Adjust™ 的安卓 SDK 包。您可以在 [adjust.com] 了解更多有关 Adjust™ 的信息。 @@ -103,14 +112,14 @@ 如果您使用的是 Maven,请添加下行到您的 `build.gradle` 文件: ```gradle -implementation 'com.adjust.sdk:adjust-android:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' implementation 'com.android.installreferrer:installreferrer:2.2' ``` 如果您想在应用 web view 中使用 Adjust SDK,请也添加下列附加依赖项: ```gradle -implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.3' +implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.4' ``` **请注意:** web view 扩展支持的最低安卓 API 级别为 17 (Jelly Bean)。 @@ -2259,6 +2268,11 @@ public void onFireIntentClick(View v) { [sdk2sdk-mopub]: ../../doc/chinese/sdk-to-sdk/mopub.md [集成指南]: https://github.com/adjust/android_sdk/tree/master/doc/chinese +[en-helpcenter]: https://help.adjust.com/en/developer/android-sdk-documentation +[zh-helpcenter]: https://help.adjust.com/zh/developer/android-sdk-documentation +[ja-helpcenter]: https://help.adjust.com/ja/developer/android-sdk-documentation +[ko-helpcenter]: https://help.adjust.com/ko/developer/android-sdk-documentation + ## 许可 Adjust SDK 拥有MIT 许可证。 diff --git a/doc/chinese/plugins/oaid.md b/doc/chinese/plugins/oaid.md index bee187210..ec39985f5 100644 --- a/doc/chinese/plugins/oaid.md +++ b/doc/chinese/plugins/oaid.md @@ -13,8 +13,8 @@ OAID 是由移动安全联盟 (MSA) 推出的广告 ID。所有中国国内的 如果您使用的是 Maven,请将以下 OAID 插件依赖项添加到现有 Adjust SDK 依赖项旁的 `build.gradle` 文件: ``` -implementation 'com.adjust.sdk:adjust-android:4.28.3' -implementation 'com.adjust.sdk:adjust-android-oaid:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' +implementation 'com.adjust.sdk:adjust-android-oaid:4.28.4' ``` 您还可以将 Adjust OAID 插件作为 JAR 文件进行添加,该文件可从我们的 [版本页面][releases] 下载。 diff --git a/doc/english/migration/migrate.md b/doc/english/migration/migrate.md index f14ad8b0c..83bfb3bd5 100644 --- a/doc/english/migration/migrate.md +++ b/doc/english/migration/migrate.md @@ -1,4 +1,4 @@ -## Migrate your Adjust SDK for Android to 4.28.3 from 3.6.2 +## Migrate your Adjust SDK for Android to 4.28.4 from 3.6.2 ### The Application class diff --git a/doc/english/plugins/oaid.md b/doc/english/plugins/oaid.md index de931e4bc..a48e06dff 100644 --- a/doc/english/plugins/oaid.md +++ b/doc/english/plugins/oaid.md @@ -12,8 +12,8 @@ To enable the Adjust SDK to collect and track OAID, follow these steps. To only If you are using Maven, add the following OAID plugin dependency to your `build.gradle` file next to the existing Adjust SDK dependency: ``` -implementation 'com.adjust.sdk:adjust-android:4.28.3' -implementation 'com.adjust.sdk:adjust-android-oaid:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' +implementation 'com.adjust.sdk:adjust-android-oaid:4.28.4' ``` You can also add the Adjust OAID plugin as JAR file, which you can download from our [releases page][releases]. diff --git a/doc/english/sdk-to-sdk/admob.md b/doc/english/sdk-to-sdk/admob.md index 3e55a8bd6..b42d005b6 100644 --- a/doc/english/sdk-to-sdk/admob.md +++ b/doc/english/sdk-to-sdk/admob.md @@ -15,8 +15,6 @@ If you want to track your ad revenue with the Admob SDK, you can use our SDK-to- ### Example ```java -rewardedAd = new RewardedAd(this, AD_UNIT_ID); -// set paid event listener rewardedAd.setOnPaidEventListener(new OnPaidEventListener() { @Override public void onPaidEvent(AdValue adValue) { @@ -29,4 +27,6 @@ rewardedAd.setOnPaidEventListener(new OnPaidEventListener() { } ``` +For more information on how to properly integrate and set up AdMob SDK, please check out the [official documentation](https://developers.google.com/admob/android/early-access/paid-events). + [android-readme]: ../../../README.md diff --git a/doc/japanese/README.md b/doc/japanese/README.md index 0e4ba9b6d..96b9d043b 100644 --- a/doc/japanese/README.md +++ b/doc/japanese/README.md @@ -1,3 +1,12 @@ +**このガイドはまもなく廃止されます。** + +このREADMEファイルはまもなく廃止されます。SDKのドキュメントはAdjustヘルプセンターに掲載されています。以下のリンクよりご覧ください。 + +* [English][en-helpcenter] +* [中文][zh-helpcenter] +* [日本語][ja-helpcenter] +* [한국어][ko-helpcenter] + ## 概要 これはネイティブAdjust™のAndroid SDKガイドです。Adjust™についての詳細はadjust.comをご覧ください。 @@ -102,14 +111,14 @@ Adjust SDKをAndroidプロジェクトに実装する手順を説明します。 Mavenを使用している場合は、以下の内容を`build.gradle`ファイルに追加します。file: ```gradle -implementation 'com.adjust.sdk:adjust-android:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' implementation 'com.android.installreferrer:installreferrer:2.2' ``` アプリの WebView内でAdjust SDKを使用したい場合は、以下のdependencyを追加してください。 ```gradle -implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.3' +implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.4' ``` **注意**:WebView拡張機能用にサポートされている最小のAndroid APIレベルは17(Jelly Bean)です。 @@ -2254,6 +2263,11 @@ Adjust SDKはこの場合の初期化についてサポートしています。 [sdk2sdk-mopub]: ../../doc/japanese/sdk-to-sdk/mopub.md +[en-helpcenter]: https://help.adjust.com/en/developer/android-sdk-documentation +[zh-helpcenter]: https://help.adjust.com/zh/developer/android-sdk-documentation +[ja-helpcenter]: https://help.adjust.com/ja/developer/android-sdk-documentation +[ko-helpcenter]: https://help.adjust.com/ko/developer/android-sdk-documentation + ## ライセンス Adjust SDKはMITライセンスを適用しています。 diff --git a/doc/japanese/migration/migrate.md b/doc/japanese/migration/migrate.md index e727a24f8..9d3f9d4d6 100644 --- a/doc/japanese/migration/migrate.md +++ b/doc/japanese/migration/migrate.md @@ -1,4 +1,4 @@ -## Android用adjust SDKのv3.6.2からv4.28.3への移行 +## Android用adjust SDKのv3.6.2からv4.28.4への移行 ### アプリケーションクラス diff --git a/doc/japanese/plugins/oaid.md b/doc/japanese/plugins/oaid.md index ef8d70855..ca9fa6705 100644 --- a/doc/japanese/plugins/oaid.md +++ b/doc/japanese/plugins/oaid.md @@ -13,8 +13,8 @@ Adjust SDKがOAID値を収集し計測するための設定手順は、以下の Mavenを使用している場合は、以下のOAIDプラグイン dependencyを、既存のAdjust SDKのdependencyの隣にあるbuild.gradle` file に追加します: ``` -implementation 'com.adjust.sdk:adjust-android:4.28.3' -implementation 'com.adjust.sdk:adjust-android-oaid:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' +implementation 'com.adjust.sdk:adjust-android-oaid:4.28.4' ``` Adjust OAIDプラグインを JARファイルとして追加することもできます。JARファイルは、[releases page][releases] からダウンロードすることができます。 diff --git a/doc/korean/README.md b/doc/korean/README.md index a7d7394f1..92989b2d3 100644 --- a/doc/korean/README.md +++ b/doc/korean/README.md @@ -1,3 +1,12 @@ +**본 가이드는 만료되었습니다.** + +본 README 파일은 얼마 후 만료될 예정입니다. 당사 헬프 센터에서 SDK 문서를 열람하실 수 있습니다. + +* [English][en-helpcenter] +* [中文][zh-helpcenter] +* [日本語][ja-helpcenter] +* [한국어][ko-helpcenter] + ## 요약 Adjust™의 Android SDK에 관한 문서입니다. Adjust™에 대한 자세한 정보는 [adjust.com]에서 확인하십시오. @@ -105,14 +114,14 @@ Adjust™의 Android SDK에 관한 문서입니다. Adjust™에 대한 자세 Maven을 사용하는 경우, 다음을 `build.gradle` 파일에 추가하시기 바랍니다. ```gradle -implementation 'com.adjust.sdk:adjust-android:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' implementation 'com.android.installreferrer:installreferrer:2.2' ``` 앱의 웹뷰 안에서 Adjust SDK를 사용하고자 하는 경우, 다음의 추가적인 dependency를 추가하시기 바랍니다. ```gradle -implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.3' +implementation 'com.adjust.sdk:adjust-android-webbridge:4.28.4' ``` **참고**: 웹뷰 확장에 필요한 Android API의 최소 지원 레벨은 17(Jelley Bean)입니다. @@ -2258,6 +2267,11 @@ Adjust SDK는 이 시점에서 초기화에 준비되어있으나 실제로 시 [dev_api]: https://docs.adjust.com/en/adjust-for-developers/ [sdk2sdk-mopub]: ../../doc/korean/sdk-to-sdk/mopub.md + +[en-helpcenter]: https://help.adjust.com/en/developer/android-sdk-documentation +[zh-helpcenter]: https://help.adjust.com/zh/developer/android-sdk-documentation +[ja-helpcenter]: https://help.adjust.com/ja/developer/android-sdk-documentation +[ko-helpcenter]: https://help.adjust.com/ko/developer/android-sdk-documentation ## 라이선스 diff --git a/doc/korean/plugins/oaid.md b/doc/korean/plugins/oaid.md index 7d1793f92..c0fe2382b 100644 --- a/doc/korean/plugins/oaid.md +++ b/doc/korean/plugins/oaid.md @@ -14,8 +14,8 @@ Adjust SDK가 OAID를 수집하고 트래킹할 수 있게 하기 위해서는 Maven을 사용하고 있는 경우, 기존 Adjust SDK dependency 옆에 있는 `build.gradle` 파일에 다음의 OAID plugin dependency을 추가하세요. ``` -implementation 'com.adjust.sdk:adjust-android:4.28.3' -implementation 'com.adjust.sdk:adjust-android-oaid:4.28.3' +implementation 'com.adjust.sdk:adjust-android:4.28.4' +implementation 'com.adjust.sdk:adjust-android-oaid:4.28.4' ``` Adjust OAID 플러그인을 JAR 파일로 추가할 수도 있습니다. Adjust [릴리스 페이지][releases]에서 다운로드하세요.