diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageController.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageController.java index 1bab2980bc..e5bc221c09 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageController.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageController.java @@ -121,6 +121,11 @@ protected OSInAppMessageController(OneSignalDbHelper dbHelper, OSTaskController if (tempClickedMessageIdsSet != null) clickedClickIds.addAll(tempClickedMessageIdsSet); + Date tempLastTimeInAppDismissed = inAppMessageRepository.getLastTimeInAppDismissed(); + if (tempLastTimeInAppDismissed != null) { + lastTimeInAppDismissed = tempLastTimeInAppDismissed; + } + initRedisplayData(); } @@ -742,6 +747,7 @@ public void run() { super.run(); inAppMessageRepository.saveInAppMessage(message); + inAppMessageRepository.saveLastTimeInAppDismissed(lastTimeInAppDismissed); } }; runRunnableOnThread(saveIAMOnDBRunnable, OS_IAM_DB_ACCESS); diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageRepository.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageRepository.java index ffa7dc434d..aa50106fa1 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageRepository.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageRepository.java @@ -10,8 +10,12 @@ import org.json.JSONException; import org.json.JSONObject; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Set; class OSInAppMessageRepository { @@ -447,6 +451,33 @@ void saveIAMs(final String inAppMessages) { inAppMessages); } + void saveLastTimeInAppDismissed(Date lastTimeInAppDismissed) { + String lastTimeDismissedString = lastTimeInAppDismissed != null ? + lastTimeInAppDismissed.toString() : null; + sharedPreferences.saveString( + OneSignalPrefs.PREFS_ONESIGNAL, + OneSignalPrefs.PREFS_OS_LAST_TIME_IAM_DISMISSED, + lastTimeDismissedString); + } + + @Nullable + Date getLastTimeInAppDismissed() { + String lastTimeDismissedString = sharedPreferences.getString( + OneSignalPrefs.PREFS_ONESIGNAL, + OneSignalPrefs.PREFS_OS_LAST_TIME_IAM_DISMISSED, null); + if (lastTimeDismissedString == null) { + return null; + } + // This pattern matches the pattern used by the Date class's toString() method + SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); + try { + return format.parse(lastTimeDismissedString); + } catch (ParseException exception) { + OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR, exception.getLocalizedMessage()); + return null; + } + } + private void printHttpSuccessForInAppMessageRequest(String requestType, String response) { logger.debug("Successful post for in-app message " + requestType + " request: " + response); } diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalPrefs.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalPrefs.java index f11ec0b9e6..66f5581053 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalPrefs.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalPrefs.java @@ -113,6 +113,7 @@ class OneSignalPrefs { public static final String PREFS_OS_IMPRESSIONED_IAMS = "PREFS_OS_IMPRESSIONED_IAMS"; public static final String PREFS_OS_CLICKED_CLICK_IDS_IAMS = "PREFS_OS_CLICKED_CLICK_IDS_IAMS"; public static final String PREFS_OS_PAGE_IMPRESSIONED_IAMS = "PREFS_OS_PAGE_IMPRESSIONED_IAMS"; + public static final String PREFS_OS_LAST_TIME_IAM_DISMISSED = "PREFS_OS_LAST_TIME_IAM_DISMISSED"; // Player Purchase Keys static final String PREFS_PURCHASE_TOKENS = "purchaseTokens";