From 124c04e1b8d2aa31359626823dd59a4e3f2b5401 Mon Sep 17 00:00:00 2001 From: amanforindia Date: Wed, 15 Mar 2023 19:30:15 +0530 Subject: [PATCH 1/8] Add firetv/ott support to getmessages call --- .../iterableapi/IterableActivityMonitor.java | 6 +++--- .../iterableapi/IterableApiClient.java | 4 +++- .../iterableapi/IterableConstants.java | 1 + .../iterable/iterableapi/util/BrandUtils.java | 21 +++++++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java index 0f7a91c3e..c8d3263ae 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java @@ -10,6 +10,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.iterable.iterableapi.util.BrandUtils; + import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; @@ -57,10 +59,8 @@ public void onActivityStarted(Activity activity) { @Override public void onActivityResumed(Activity activity) { currentActivity = new WeakReference<>(activity); - String amazonFireTvHardware = "amazon.hardware.fire_tv"; - String amazonModel = Build.MODEL; - if (!inForeground || amazonModel.matches("AFTN") || activity.getPackageManager().hasSystemFeature(amazonFireTvHardware)) { + if (!inForeground || BrandUtils.isFireTV(activity.getPackageManager())) { inForeground = true; for (WeakReference callback : callbacks) { if (callback.get() != null) { diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java index 6564a198d..9c9d9db21 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java @@ -7,6 +7,8 @@ import androidx.annotation.Nullable; import androidx.core.app.NotificationManagerCompat; +import com.iterable.iterableapi.util.BrandUtils; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -204,7 +206,7 @@ public void getInAppMessages(int count, @NonNull IterableHelper.IterableActionHa try { addEmailOrUserIdToJson(requestJSON); requestJSON.put(IterableConstants.ITERABLE_IN_APP_COUNT, count); - requestJSON.put(IterableConstants.KEY_PLATFORM, IterableConstants.ITBL_PLATFORM_ANDROID); + requestJSON.put(IterableConstants.KEY_PLATFORM, BrandUtils.isFireTV(authProvider.getContext().getPackageManager()) ? IterableConstants.ITBL_PLATFORM_OTT : IterableConstants.ITBL_PLATFORM_ANDROID); requestJSON.put(IterableConstants.ITBL_KEY_SDK_VERSION, IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER); requestJSON.put(IterableConstants.ITBL_SYSTEM_VERSION, Build.VERSION.RELEASE); requestJSON.put(IterableConstants.KEY_PACKAGE_NAME, authProvider.getContext().getPackageName()); diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java index e49f06b35..60a6b678d 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java @@ -245,6 +245,7 @@ public final class IterableConstants { public static final String ITBL_KEY_SDK_VERSION = "SDKVersion"; public static final String ITBL_PLATFORM_ANDROID = "Android"; + public static final String ITBL_PLATFORM_OTT = "OTT"; public static final String ITBL_KEY_SDK_VERSION_NUMBER = BuildConfig.ITERABLE_SDK_VERSION; public static final String ITBL_SYSTEM_VERSION = "systemVersion"; diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java b/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java new file mode 100644 index 000000000..98bed856d --- /dev/null +++ b/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java @@ -0,0 +1,21 @@ +package com.iterable.iterableapi.util; + +import android.app.Activity; +import android.content.pm.PackageManager; +import android.os.Build; + +public final class BrandUtils { + + private BrandUtils() { + } + + public static boolean isFireTV(PackageManager packageManager) { + String amazonFireTvHardware = "amazon.hardware.fire_tv"; + String amazonModel = Build.MODEL; + if (amazonModel.matches("AFTN") || packageManager.hasSystemFeature(amazonFireTvHardware)) { + return true; + } else { + return false; + } + } +} From 898f9e91c38f6911e9ef442bf7c43e825566ab25 Mon Sep 17 00:00:00 2001 From: amanforindia Date: Thu, 16 Mar 2023 22:05:34 +0530 Subject: [PATCH 2/8] For firetv call update user with device details upon initialization --- .../iterableapi/IterableActivityMonitor.java | 5 +-- .../com/iterable/iterableapi/IterableApi.java | 11 +++++ .../iterableapi/IterableApiClient.java | 18 ++------ .../iterable/iterableapi/IterableUtil.java | 6 +-- .../iterable/iterableapi/util/BrandUtils.java | 21 --------- .../iterableapi/util/DeviceInfoUtils.java | 44 +++++++++++++++++++ 6 files changed, 63 insertions(+), 42 deletions(-) delete mode 100644 iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java create mode 100644 iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java index c8d3263ae..7241d6f5a 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableActivityMonitor.java @@ -3,14 +3,13 @@ import android.app.Activity; import android.app.Application; import android.content.Context; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.iterable.iterableapi.util.BrandUtils; +import com.iterable.iterableapi.util.DeviceInfoUtils; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -60,7 +59,7 @@ public void onActivityStarted(Activity activity) { public void onActivityResumed(Activity activity) { currentActivity = new WeakReference<>(activity); - if (!inForeground || BrandUtils.isFireTV(activity.getPackageManager())) { + if (!inForeground || DeviceInfoUtils.isFireTV(activity.getPackageManager())) { inForeground = true; for (WeakReference callback : callbacks) { if (callback.get() != null) { diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java index 16ebc7f42..6ddec3bd2 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java @@ -11,6 +11,8 @@ import androidx.annotation.RestrictTo; import androidx.annotation.VisibleForTesting; +import com.iterable.iterableapi.util.DeviceInfoUtils; + import org.json.JSONException; import org.json.JSONObject; @@ -500,6 +502,15 @@ public static void initialize(@NonNull Context context, @NonNull String apiKey, loadLastSavedConfiguration(context); IterablePushNotificationUtil.processPendingAction(context); + if (DeviceInfoUtils.isFireTV(context.getPackageManager())) { + JSONObject dataFields = new JSONObject(); + try { + DeviceInfoUtils.populateDeviceDetails(dataFields, context, sharedInstance.getDeviceId()); + sharedInstance.apiClient.updateUser(dataFields, false); + } catch (JSONException e) { + IterableLogger.e(TAG, "initialize: exception", e); + } + } } public static void setContext(Context context) { diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java index 9c9d9db21..930da620f 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java @@ -7,7 +7,7 @@ import androidx.annotation.Nullable; import androidx.core.app.NotificationManagerCompat; -import com.iterable.iterableapi.util.BrandUtils; +import com.iterable.iterableapi.util.DeviceInfoUtils; import org.json.JSONArray; import org.json.JSONException; @@ -206,7 +206,7 @@ public void getInAppMessages(int count, @NonNull IterableHelper.IterableActionHa try { addEmailOrUserIdToJson(requestJSON); requestJSON.put(IterableConstants.ITERABLE_IN_APP_COUNT, count); - requestJSON.put(IterableConstants.KEY_PLATFORM, BrandUtils.isFireTV(authProvider.getContext().getPackageManager()) ? IterableConstants.ITBL_PLATFORM_OTT : IterableConstants.ITBL_PLATFORM_ANDROID); + requestJSON.put(IterableConstants.KEY_PLATFORM, DeviceInfoUtils.isFireTV(authProvider.getContext().getPackageManager()) ? IterableConstants.ITBL_PLATFORM_OTT : IterableConstants.ITBL_PLATFORM_ANDROID); requestJSON.put(IterableConstants.ITBL_KEY_SDK_VERSION, IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER); requestJSON.put(IterableConstants.ITBL_SYSTEM_VERSION, Build.VERSION.RELEASE); requestJSON.put(IterableConstants.KEY_PACKAGE_NAME, authProvider.getContext().getPackageName()); @@ -429,19 +429,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user dataFields.put(IterableConstants.FIREBASE_TOKEN_TYPE, IterableConstants.MESSAGING_PLATFORM_FIREBASE); dataFields.put(IterableConstants.FIREBASE_COMPATIBLE, true); - dataFields.put(IterableConstants.DEVICE_BRAND, Build.BRAND); //brand: google - dataFields.put(IterableConstants.DEVICE_MANUFACTURER, Build.MANUFACTURER); //manufacturer: samsung - dataFields.put(IterableConstants.DEVICE_SYSTEM_NAME, Build.DEVICE); //device name: toro - dataFields.put(IterableConstants.DEVICE_SYSTEM_VERSION, Build.VERSION.RELEASE); //version: 4.0.4 - dataFields.put(IterableConstants.DEVICE_MODEL, Build.MODEL); //device model: Galaxy Nexus - dataFields.put(IterableConstants.DEVICE_SDK_VERSION, Build.VERSION.SDK_INT); //sdk version/api level: 15 - - dataFields.put(IterableConstants.DEVICE_ID, authProvider.getDeviceId()); // Random UUID - dataFields.put(IterableConstants.DEVICE_APP_PACKAGE_NAME, context.getPackageName()); - dataFields.put(IterableConstants.DEVICE_APP_VERSION, IterableUtil.getAppVersion(context)); - dataFields.put(IterableConstants.DEVICE_APP_BUILD, IterableUtil.getAppVersionCode(context)); - dataFields.put(IterableConstants.DEVICE_ITERABLE_SDK_VERSION, IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER); - dataFields.put(IterableConstants.DEVICE_NOTIFICATIONS_ENABLED, NotificationManagerCompat.from(context).areNotificationsEnabled()); + DeviceInfoUtils.populateDeviceDetails(dataFields, context, authProvider.getDeviceId()); JSONObject device = new JSONObject(); device.put(IterableConstants.KEY_TOKEN, deviceToken); diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java index 62538b803..d516b6dc2 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java @@ -11,7 +11,7 @@ import java.io.File; -class IterableUtil { +public class IterableUtil { @VisibleForTesting static IterableUtilImpl instance = new IterableUtilImpl(); @@ -19,11 +19,11 @@ static long currentTimeMillis() { return instance.currentTimeMillis(); } - static String getAppVersion(Context context) { + public static String getAppVersion(Context context) { return instance.getAppVersion(context); } - static String getAppVersionCode(Context context) { + public static String getAppVersionCode(Context context) { return instance.getAppVersionCode(context); } diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java b/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java deleted file mode 100644 index 98bed856d..000000000 --- a/iterableapi/src/main/java/com/iterable/iterableapi/util/BrandUtils.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iterable.iterableapi.util; - -import android.app.Activity; -import android.content.pm.PackageManager; -import android.os.Build; - -public final class BrandUtils { - - private BrandUtils() { - } - - public static boolean isFireTV(PackageManager packageManager) { - String amazonFireTvHardware = "amazon.hardware.fire_tv"; - String amazonModel = Build.MODEL; - if (amazonModel.matches("AFTN") || packageManager.hasSystemFeature(amazonFireTvHardware)) { - return true; - } else { - return false; - } - } -} diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java new file mode 100644 index 000000000..29a1e0d3e --- /dev/null +++ b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java @@ -0,0 +1,44 @@ +package com.iterable.iterableapi.util; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.Build; + +import androidx.core.app.NotificationManagerCompat; + +import com.iterable.iterableapi.IterableConstants; +import com.iterable.iterableapi.IterableUtil; + +import org.json.JSONException; +import org.json.JSONObject; + +public final class DeviceInfoUtils { + + private DeviceInfoUtils() { + } + + public static boolean isFireTV(PackageManager packageManager) { + String amazonFireTvHardware = "amazon.hardware.fire_tv"; + String amazonModel = Build.MODEL; + if (amazonModel.matches("AFTN") || packageManager.hasSystemFeature(amazonFireTvHardware)) { + return true; + } else { + return false; + } + } + public static JSONObject populateDeviceDetails(JSONObject dataFields, Context context, String deviceId) throws JSONException { + dataFields.put(IterableConstants.DEVICE_BRAND, Build.BRAND); //brand: google + dataFields.put(IterableConstants.DEVICE_MANUFACTURER, Build.MANUFACTURER); //manufacturer: samsung + dataFields.put(IterableConstants.DEVICE_SYSTEM_NAME, Build.DEVICE); //device name: toro + dataFields.put(IterableConstants.DEVICE_SYSTEM_VERSION, Build.VERSION.RELEASE); //version: 4.0.4 + dataFields.put(IterableConstants.DEVICE_MODEL, Build.MODEL); //device model: Galaxy Nexus + dataFields.put(IterableConstants.DEVICE_SDK_VERSION, Build.VERSION.SDK_INT); //sdk version/api level: 15 + + dataFields.put(IterableConstants.DEVICE_ID, deviceId); // Random UUID + dataFields.put(IterableConstants.DEVICE_APP_PACKAGE_NAME, context.getPackageName()); + dataFields.put(IterableConstants.DEVICE_APP_VERSION, IterableUtil.getAppVersion(context)); + dataFields.put(IterableConstants.DEVICE_APP_BUILD, IterableUtil.getAppVersionCode(context)); + dataFields.put(IterableConstants.DEVICE_ITERABLE_SDK_VERSION, IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER); + dataFields.put(IterableConstants.DEVICE_NOTIFICATIONS_ENABLED, !isFireTV(context.getPackageManager()) && NotificationManagerCompat.from(context).areNotificationsEnabled()); + } +} From e3a277f99181d7302bfe7a303b9cde36de747141 Mon Sep 17 00:00:00 2001 From: amanforindia Date: Thu, 16 Mar 2023 23:49:46 +0530 Subject: [PATCH 3/8] Set DEVICE_NOTIFICATIONS_ENABLED key only when registering for push --- .../main/java/com/iterable/iterableapi/IterableApiClient.java | 1 + .../main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java index 930da620f..3d0a6db0f 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApiClient.java @@ -430,6 +430,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user dataFields.put(IterableConstants.FIREBASE_TOKEN_TYPE, IterableConstants.MESSAGING_PLATFORM_FIREBASE); dataFields.put(IterableConstants.FIREBASE_COMPATIBLE, true); DeviceInfoUtils.populateDeviceDetails(dataFields, context, authProvider.getDeviceId()); + dataFields.put(IterableConstants.DEVICE_NOTIFICATIONS_ENABLED, NotificationManagerCompat.from(context).areNotificationsEnabled()); JSONObject device = new JSONObject(); device.put(IterableConstants.KEY_TOKEN, deviceToken); diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java index 29a1e0d3e..ca693f8aa 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java @@ -39,6 +39,5 @@ public static JSONObject populateDeviceDetails(JSONObject dataFields, Context co dataFields.put(IterableConstants.DEVICE_APP_VERSION, IterableUtil.getAppVersion(context)); dataFields.put(IterableConstants.DEVICE_APP_BUILD, IterableUtil.getAppVersionCode(context)); dataFields.put(IterableConstants.DEVICE_ITERABLE_SDK_VERSION, IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER); - dataFields.put(IterableConstants.DEVICE_NOTIFICATIONS_ENABLED, !isFireTV(context.getPackageManager()) && NotificationManagerCompat.from(context).areNotificationsEnabled()); } } From 6f55d7ffbb159f0da019022442ca49b4dec7607b Mon Sep 17 00:00:00 2001 From: amanforindia Date: Mon, 20 Mar 2023 17:16:30 +0530 Subject: [PATCH 4/8] Fix firetv object structure --- .../src/main/java/com/iterable/iterableapi/IterableApi.java | 6 ++++-- .../java/com/iterable/iterableapi/IterableConstants.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java index 6ddec3bd2..0f974bfc6 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java @@ -503,9 +503,11 @@ public static void initialize(@NonNull Context context, @NonNull String apiKey, loadLastSavedConfiguration(context); IterablePushNotificationUtil.processPendingAction(context); if (DeviceInfoUtils.isFireTV(context.getPackageManager())) { - JSONObject dataFields = new JSONObject(); try { - DeviceInfoUtils.populateDeviceDetails(dataFields, context, sharedInstance.getDeviceId()); + JSONObject dataFields = new JSONObject(); + JSONObject deviceDetails = new JSONObject(); + DeviceInfoUtils.populateDeviceDetails(deviceDetails, context, sharedInstance.getDeviceId()); + dataFields.put(IterableConstants.KEY_FIRETV, deviceDetails); sharedInstance.apiClient.updateUser(dataFields, false); } catch (JSONException e) { IterableLogger.e(TAG, "initialize: exception", e); diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java index 60a6b678d..fabd9a3f4 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableConstants.java @@ -54,6 +54,7 @@ public final class IterableConstants { public static final String KEY_USER_TEXT = "userText"; public static final String KEY_INBOX_SESSION_ID = "inboxSessionId"; public static final String KEY_OFFLINE_MODE = "offlineMode"; + public static final String KEY_FIRETV = "FireTV"; //API Endpoint Key Constants public static final String ENDPOINT_DISABLE_DEVICE = "users/disableDevice"; From f0f1efbd2ee5c732092c322ae24cf568a12a9c26 Mon Sep 17 00:00:00 2001 From: amanforindia Date: Tue, 21 Mar 2023 23:53:47 +0530 Subject: [PATCH 5/8] Review fixes --- .../com/iterable/iterableapi/util/DeviceInfoUtils.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java index ca693f8aa..741297e28 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/util/DeviceInfoUtils.java @@ -4,8 +4,6 @@ import android.content.pm.PackageManager; import android.os.Build; -import androidx.core.app.NotificationManagerCompat; - import com.iterable.iterableapi.IterableConstants; import com.iterable.iterableapi.IterableUtil; @@ -20,13 +18,9 @@ private DeviceInfoUtils() { public static boolean isFireTV(PackageManager packageManager) { String amazonFireTvHardware = "amazon.hardware.fire_tv"; String amazonModel = Build.MODEL; - if (amazonModel.matches("AFTN") || packageManager.hasSystemFeature(amazonFireTvHardware)) { - return true; - } else { - return false; - } + return amazonModel.matches("AFTN") || packageManager.hasSystemFeature(amazonFireTvHardware); } - public static JSONObject populateDeviceDetails(JSONObject dataFields, Context context, String deviceId) throws JSONException { + public static void populateDeviceDetails(JSONObject dataFields, Context context, String deviceId) throws JSONException { dataFields.put(IterableConstants.DEVICE_BRAND, Build.BRAND); //brand: google dataFields.put(IterableConstants.DEVICE_MANUFACTURER, Build.MANUFACTURER); //manufacturer: samsung dataFields.put(IterableConstants.DEVICE_SYSTEM_NAME, Build.DEVICE); //device name: toro From 0236ee244224eb20d001b74877fa2b252b9365e1 Mon Sep 17 00:00:00 2001 From: Hardik Mashru Date: Fri, 14 Apr 2023 17:24:45 +0530 Subject: [PATCH 6/8] add private constructor to prevent instance creation --- .../src/main/java/com/iterable/iterableapi/IterableUtil.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java index d516b6dc2..593972257 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java @@ -15,6 +15,8 @@ public class IterableUtil { @VisibleForTesting static IterableUtilImpl instance = new IterableUtilImpl(); + private IterableUtil() { } + static long currentTimeMillis() { return instance.currentTimeMillis(); } From 90902c206ea3a2b7d0630b820a26030e906f0675 Mon Sep 17 00:00:00 2001 From: Hardik Mashru Date: Fri, 14 Apr 2023 18:00:11 +0530 Subject: [PATCH 7/8] update unit test --- .../test/java/com/iterable/iterableapi/IterableApiTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java index fa720e969..b42ead7ec 100644 --- a/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java +++ b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java @@ -395,7 +395,8 @@ public void testGetInAppMessages() throws Exception { Uri uri = Uri.parse(getInAppMessagesRequest.getRequestUrl().toString()); assertEquals("/" + IterableConstants.ENDPOINT_GET_INAPP_MESSAGES, uri.getPath()); assertEquals("10", uri.getQueryParameter(IterableConstants.ITERABLE_IN_APP_COUNT)); - assertEquals(IterableConstants.ITBL_PLATFORM_ANDROID, uri.getQueryParameter(IterableConstants.KEY_PLATFORM)); + assertEquals(DeviceInfoUtils.isFireTV(getContext().getPackageManager()) ? IterableConstants.ITBL_PLATFORM_OTT : IterableConstants.ITBL_PLATFORM_ANDROID, uri.getQueryParameter(IterableConstants.KEY_PLATFORM)); + assertEquals(IterableConstants.ITBL_KEY_SDK_VERSION_NUMBER, uri.getQueryParameter(IterableConstants.ITBL_KEY_SDK_VERSION)); assertNotNull(uri.getQueryParameter(IterableConstants.ITBL_SYSTEM_VERSION)); assertEquals(getContext().getPackageName(), uri.getQueryParameter(IterableConstants.KEY_PACKAGE_NAME)); From a287522854f5706c9799f83e6c5ac396048c78f4 Mon Sep 17 00:00:00 2001 From: Hardik Mashru Date: Tue, 18 Apr 2023 21:10:25 +0530 Subject: [PATCH 8/8] Added import for DeviceInfoUtils --- .../src/test/java/com/iterable/iterableapi/IterableApiTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java index b42ead7ec..5a2a0d7ec 100644 --- a/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java +++ b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java @@ -1,5 +1,6 @@ package com.iterable.iterableapi; +import com.iterable.iterableapi.util.DeviceInfoUtils; import android.app.Activity; import android.net.Uri;