DateVersionDescription
29.01.20203.0.41. Removed bluetooth_state checks and request.
2. Renamed mContext to mApplication in places where the context was the application context.
3. Moved some layouts into subdirectories.
22.01.20203.0.31. Fixed possible Firebase / FCM crash. Firebase / FCM will now fail silently if it encounters any problems without crashing the App.
2. When Firebase fails the FCM token will be set to an empty string and startSession will happen normally instead of not happening at all.
3. Glide will now show a stack trace when it fails to load an image into a notification.
4. In App Notifications will check if activity is changing configuration or is finishing before showing.
12.12.20193.0.21. Fixed a possible InflateException in the Pulsate Feed on older Android Versions.
29.10.20193.0.11. Created new class - PulsateFcmHandler - is now responsible for FCM logic.
2. New PulsateManager methods - onMessageReceived(RemoteMessage remoteMessage) and onNewToken(@NotNull String token) - both methods are used to pass FirebaseMessagingService callbacks back to Pulsate if your App itself implements the FirebaseMessagingService.
23.10.20193.0.01. Added support for Android P and Android Q.

2. Updated minSdkVersion to 16 and targetSdkVersion to 29.

3. Updated to AndroidX.

4. Updated Play Services to version 17.0.0.

5. Added PulsateBootReceiver to help restart Pulsate after phone reboot.

6. Reworked Dagger2 implementation.


7. Room Database:
- Added encryption using SQLCipher.
- Migrated all data from Shared Preferences.


8. Geofencing and Beacon Scanning:
- Added support for Android P and Android Q.
- Moved initilization and most logic off the Main Thread.
- Improved accuracy and fixed a few cases where false events could be sent (multiple enters or exits for users that stay within Geofences / Beacons for longer periods).
- Beacon Events that fail to send do to Doze Mode / App Restrictions will be retried.
- Jobs that fail to send events within 10mins after they happen will now be canceled to not send data that might not be accurate anymore.


9. ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN has been replaced with @OnLifecycleEvent(Lifecycle.Event.ON_START) and @OnLifecycleEvent(Lifecycle.Event.ON_STOP). ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN would sometimes fail to give a callback when the App is closed.


10. PulsateManager:
- New Method - setFcmMessageListener(IPulsateValueListener listener) - sets a listener that allows Developers to receive all FCM Push Notifications that the SDK receives.
- isLocationUpdatesEnabled, isMicrofencingEnabled, isInAppNotificationEnabled, isPushNotificationEnabled, isUserAuthorized, isNewThreadButtonEnabled, isLocationWithBeaconEvents, getPrivacy, getLastKnownLocation - no longer return values directly, these methods now return values to the new IPulsateValueListener.


11. Pulsate.install(Application app) has been removed. The Pulsate SDK now automatically starts with the Application.
18.07.20192.16.01. Location and Push Permissions will now be sent under Device Data to the Pulsate Server
03.06.20192.15.01. Updated dependencies (please update these dependencies in your projects):
- compileSdkVersion to 28
- buildToolsVersion to 28.0.3
- minSdkVersion to 15
- targetSdkVersion to 28
- supportLibraryVersion to 28.0.0


2. Implemented Room Database with Encryption
- Removed Realm and migrated all data to Room
- Removed all data from Shared Preferences and moved to Room


3. Updated GUID generation to work properly on newer Android versions

4. Fixed showing Notifications when downloading Icon or Attachment fails

5. Fixed possible issues with Activity / Fragment restoration when the App was still alive but Activities / Fragments have been destroyed

6. Updated Proguard settings
10.05.20192.14.41. Message Subject can no longer be empty or only whitespace
2. Messages can no longer be empty or only whitespace
18.04.20192.14.21. Tokens that don't exist server side will be Blacklisted by the SDK and no farther requests will be sent using this Token
2. Removed request retries from Location Updates, Privacy, Push Preferences
10.04.20192.14.11. New Method - setSmallInAppNotificationDuration(int seconds) - Sets the duration of small in app notifications. Default - 12s
04.04.20192.14.01. GCM has been replaced with FCM
04.03.20192.13.141. NEW FEATURE - useInitialsForUserAvatar(boolean useInitials) - Enables or Disables using the user initials as the user avatar. When disabled the avatar will always be an anon icon.

2. NEW FEATURE - setOnInboxRightButtonClickListener(View.OnClickListener listener) - Developers can now add an additional button in the Pulsate Feed. The button will appear in the main Feed Toolbar in the right corner.

3. Limited the talk subjects length to 1 line and max 50 characters

4. Changes to Small In App Notifications to allow adding In App Events to them
18.02.20192.13.111. NEW FEATURE - Added new elements to Inbox Custom Theming - pulsate_thread_select_subject_toolbar_text_color, pulsate_thread_select_subject_toolbar_background_color, pulsate_thread_select_subject_dropdown_text_color, pulsate_thread_select_subject_dropdown_background_color, pulsate_thread_message_other_subject_toolbar_color, pulsate_thread_message_other_subject_text_color, pulsate_thread_message_other_subject_hint_color.
2. BUG FIX - When writing a private message users could click on their user avatar in the bottom left, those clicks would be passed down to the Inbox behind it causing random Inbox Cards to open. Clicks will no longer be passed down to the Inbox behind the avatar.
19.12.20182.13.91. Fixed crash on Android O and above caused by GCM Token Refresh.
22.10.20182.13.81. Improved Card Layout. Cards should now scale properly with special characters.
2. setNewThreadButtonEnabled(boolean enabled) will now be saved to the DB
17.10.20182.13.61. Removed all logs from production builds
2. Added default Proguard settings. The proguard settings will automatically be applied when proguard is enabled.
3. Other minor layout improvements and cleanup
07.09.20182.13.21. Fixed possible crash when more than 100 jobs are queued in the JobManager
30.07.20182.13.11. Improved In App Notification Layouts
06.07.20182.13.0New Features:
1. New method - setLocationUpdatesEnabled - this method allows Developer to turn on / off Geofencing and Beacon Scanning
2. New Method isPushNotificationEnabled() - returns the value set with setPushNotificationEnabled(boolean enabled); for the given alias, by default true
3. New Inbox Error Messages for deleted users

Improvements:
1. SDK values will now be alias dependant and will automatically update once the user alias is changed. Effected values are - avatar, firstName, lastName, email, age, gender, privacy, push notifications on/off, in app notifications on/off, location updates on/off, send location with beacon events on/off, microfencing on/off
2. Reworked GCM - Pulsate will now accept empty GCM IDs and will properly start sessions without a proper GCM Token
3. Email, Age and all custom attributes can now be set to empty values
4. SetPrivacy, SetPushPreferences, SetLocationUpdates requests will now use Android Jobs to retry if they failed for any reason
5. Method enableInAppNotification(boolean enabled); changed to setInAppNotificationEnabled(boolean enabled);
6. Method disablePushNotication(boolean disable); changed to setPushNotificationEnabled(boolean enabled);
7. Method setCustomerAlias removed (was never used)

Library Updates:
1. AltBeacon updated - 2.12.4 to 2.14
7. Support library updated - 27.0.2 to 27.1.1
10.04.20182.12.21. Fixed possible null pointer in GeofenceTransitionsReceiver
28.02.20182.12.11. Removing Wake Locks when receiving push notifications
2. Fixed crash in InAppMessages caused by Casting CardView to ImageView
14.02.20182.12.01. Added Support for Android O:
removed all background services
added new Android Jobs that are responsible for Beacon Scanning, Geofencing and sending data to the server
added Inbox Notification Channel

2. Design Update:
added shadow to Toolbar
added on click ripple effects to cards and buttons
updated drawables to vector drawables
unified layout files between different Android versions
added missing start/end margins - this fixes many layout issues when RTL is enabled in the Android Manifest

3. Update Google Play Services Library version to 10.2.1. If you use any Google Play Services Library you must update to version 10.2.1.

4. Updated Android Support Library to version 27.0.2. If you use any Android Support Library you must update to version 27.0.2.

5. Simplified adding Pulsate to projects. Please check step 3 and step 4 in our guide to Installing the Pulsate SDK using Android Studio - https://pulsate.readme.io/docs/installing-sdk-android-studio
15.01.20182.11.11. Fixed crash when replying to a Card without a Personal Message
04.12.20172.11.01. Method getUnreadCount() removed. Please use setUnreadCountUpdateListener(IPulsateUnreadCountUpdateListener listener) instead.
2. New method setUnreadCountUpdateListener(IPulsateUnreadCountUpdateListener listener) - instead of repeating calls of getUnreadCount() to always be up to date the listener will automatically be updated by Pulsate about unread message changes.
3. GetUnreadCountRequestListener removed
21.11.20172.10.41. On User Alias change last unauthorized message will be set to null - showLastUnauthorizedMessage will do nothing
14.11.20172.10.31. Fixed ConcurrentModificationException in the PulsateBeaconManager
13.11.20172.10.21. Starting a session for a new alias / user will clear all notifications
04.10.20172.10.11. Fixed possible crash with In App Notifications
13.09.20172.10.01. Added IPulsateRequestListener
2. startSession, startPulsateSessionForAlias, startPulsateSessionWithBeaconsDisabled - added a new parametr to method - IPulsateRequestListener
04.09.20172.9.201. Security Update: Added permissions to Pulsate Receivers.
24.08.20172.9.191. Improvements to In App Notification Layouts
17.07.20172.9.181. In App Notifications will now properly scale depending on the amount of content
2. Changed Session Management - when "startPulsateSessionForAlias" is called with a different alias than the current one Pulsate will automatically logout the current user and start a session for the new alias
22.03.20172.9.151. Updated support libraries to version 25.3.0
2. New method disablePushNotication
3. Fix crash when user enter inbox for the first time and get inbox fails and cache is null
14.02.20172.9.51. Fixed possible crash
31.01.20172.9.4Beta1. Fixed showing Simple Push Notifications with no image
2. Fixed showing image in Simple Push Notification
19.01.20172.9.3Beta1.New Features:
- Added Support for Rich Notifications - images, buttons, emojis and quick reply
- New method - enableInAppNotification(boolean eneabled) - enables or disables showing In App Notifications
- New method - showLastInAppNotification() - show the last In App Notification that was not shown due to enableInAppNotification being set to false
- New method - Pulsate.install(Application app)
- PulsateApp has been deprecated, you no longer need to extend PulsateApp, instead call Pulsate.install(this) in the Application’s onCreate method
- Inbox Prefetch - the inbox will now prefetch not visible items for a smoother experience when scrolling through the inbox


2.Optimization:
- Network Rework
- Layout Cleanup


3.Bug Fixes:
- PulsateFactory getInstance(AuthorizationData authData) - will now properly set the authData
- Fixed inbox refreshing - when possible we update / download single cards from the server instead of doing a full refresh of the inbox
- Fixed archiving talks
- Updated GCM implementation to use GcmListenerService and InstanceIDListenerService - this solves a crash caused by GCM


4.Library Updates:
- Realm updated to version 2.2.2
- Android support libraries updated to version 25.1.0
- Play Services updated to version 10.0.1
23.08.20162.8.01. Added Simple Push Flow and Simple In App Flow
2. Fixed a bug where logoutCurrentAlias would return a callback before the user was logged out
3. Fixed a bug where sometimes a request would fail due to bad alias
4. Fixed small in app size on some phones
5. Authorization Data will now be stored in Shared Preferences
6. Inbox Caching - inbox will be now cached for every alias, before only the last user's inbox was cached
7. Fixed a bug where for some users the first session (and only the first session) would fail due to an error in generating the API Access Token
8. Update IPulsateMager Docs
29.07.20162.7.101. Added IPulsateLogoutCurrentUserListener - used with LogoutCurrentUser. Returns a callback onLogout.
2. Added setGpsManagerEnabled - allows turning on/off all location based events.
3. Fixed crash in inbox
15.07.20162.7.61. Added Inbox Authorization - for more info read - https://pulsate.readme.io/docs/inbox-authorization-android
24.06.20162.7.41. Clicking a notification / inapp will now count as an direct open for statistics
2. Clicking a card in the inbox will now count as an front click for statistics
3. Some optimizations for End Session Request and Update User Request
21.06.20162.7.31. Optimized Get Inbox Requests
2. Optimized Start Session when entering via notification
3. Get Inbox is no longer called when entering app via notification
09.06.20162.7.21. Fixed Realm Migration
2. Sending a geofence will also send current_location
3. Removed Acra
4. GetInboxItem will now show a message to the user if the request fails
5. SendCustomEvent will no longer show an JSONOBJECT exception
6. SendCustomEvent will now call onFail when the request fails
12.05.20162.7.01. Added Deduping - new methods startPulsateSessionForAlias and logoutCurrentAlias
2. Reworked beacon service to use AltBeacon
3. Services will no longer run on the main UI thread
4. Added new methods - getUnreadCount, sendLocationWithBeaconEvents, setAuthorizationData,
5. Added support for polygonal geofences
6. Updated google play service libraries to version 8.4.0
7. Session Managment has been reworked
8. Fix a bug that caused some impressions to be duplicated
9. Default Inbox style is now called PulsateInboxTheme - if you want to customize the style create a style named "PulsateInboxTheme" in your styles.xml and the default style will be overridden
10. Optimized battery usage
11. Some fixes to found bugs - possible null pointers, developers can now use realm with Pulsate
12.02.20162.6.21. Fix delaying sessions
2. After an in app message gets closed in will be removed from the memory
31.01.20162.6.11. Database optimazation
2. We no longer save and send Location Updates every 25m
3. Added Garbage Collection calls
4. Remove permissions from SDK
5. Realm udpated to 0.87.2
6. Fix beacon scans