Android SDK Release Notes

Latest version: 4.9.1 — implementation 'com.pulsatehq.sdk:PulsateSdk:4.9.1'

Q2 Release

Q2 Release 4.7.181

Release 4.9.1

Improvements:

  • Crash and Freeze Reports are now usable from minified (R8) builds: frames are written as Class.method:line, and minified builds send the R8 mapping id instead of line numbers so a report can be matched to mapping.txt.
  • Crash Reports now also name the throw site, the root cause, further Pulsate frames and the caller just below the SDK.
  • Freeze Reports now also name the lock the main thread was waiting on and the thread holding it.
  • Both reports carry the process uptime.
  • Added debug triggers for testing crash and freeze reporting.
  • Internal code-quality work (formatting, static analysis, public API check). No behaviour change.

Release 4.9.0

Breaking Changes:

  • Badge listener renamed to unread count listener: IPulsateBadgeUpdateListener → IPulsateUnreadCountListener, setBadgeUpdateListener → setUnreadCountListener (old names remain as deprecated aliases). onUnreadCountUpdate(count) no longer returns a value; override onNotificationNumber() to change the number shown on the notification. The setter moved from IPulsateFcmManager to IPulsateFeedManager.
  • Removed PulsateFloatingActionButton; use Material's FloatingActionButton.
  • Removed the New Relic integration.
  • Removed Timber from the SDK; declare it yourself if you relied on it transitively.
  • PulsateLogger rewritten around log levels; the old showLog / memory-log methods are removed and the PulsateLogTag constants renamed (internal, but callable before).

New Features:

  • Logging API: setPulsateLogListener(listener, minLevel) forwards SDK logs to your own logging stack; setPulsateConsoleLogLevel() controls logcat output (ERROR and above by default, OFF to silence).
  • Crash Reporting: SDK-related crashes and ANRs (Android 11+) are recorded on the device and uploaded to Pulsate, with no stack trace, alias or device identifier. On by default; turn off with setCrashReportingEnabled(false).

Improvements:

  • A refreshed FCM token is sent to Pulsate immediately instead of on the next session start.
  • HTTP body logging to logcat is off in release builds; network logs mask credentials and personal data.
  • ANRWatchDog runs only while debug mode is active.
  • Database schema moved from 20 to 21 (automatic migration, no host-visible data lost).

Bug Fixes:

  • The SDK no longer clears the host app's own notifications on logout or alias change.
  • Geofencing starts again after being stopped.
  • A failing session task no longer blocks later startSession() calls.
  • Exceeding the request limit can no longer leave the SDK permanently silent.
  • End-session requests older than 15 minutes are discarded instead of sent late.

Release 4.8.4

Bug Fixes:

  • Small In-App notifications now compute their top offset geometrically, ensuring correct placement across edge-to-edge configurations, toolbars, and OEM customizations (e.g. Samsung One UI).

Release 4.8.3

Bug Fixes:

  • Small In-Apps now show under the status bar when position is top.

Release 4.8.2

Breaking Changes:

  • Removed all logic related to beacons.

Improvements:

  • Removed FOREGROUND_SERVICE and FOREGROUND_SERVICE_DATA_SYNC permissions from the SDK and demo app manifests (no longer required; avoids Google Play permission declarations for every client).
  • Updated many dependencies.

Bug Fixes:

  • Web Feed now works with APP_ID and APP_KEY set up in AndroidManifest.xml.

Release 4.7.19 / 4.7.18

Improvements:

  • Removed the FOREGROUND_SERVICE and FOREGROUND_SERVICE_DATA_SYNC permissions from the SDK and demo app manifests.

Bug Fixes:

  • Web Feed now works with APP_ID and APP_KEY set up in AndroidManifest.xml.

Release 4.7.17

Breaking Changes:

  • Push notifications now use status_icon.xml as the notification icon.
  • Links and deeplinks now use the current Activity context where possible instead of the Application context — behavior may change for apps using custom activity flags.

Improvements:

  • HTML Feed is debuggable when the app is built in debug mode.
  • In-Apps no longer show in the Feed.

Release 4.7.14

New Features:

  • debug_mode (triggered via push or feature flag): collects extra logs, sends them to New Relic, enables on-device debug tools.
  • AckService foreground service sends push-delivery feedback (debug mode only).

Improvements:

  • All activities locked to portrait orientation.
  • Big In-App colors moved to colors.xml for theming.
  • Web Feed errors moved to strings.xml (modifiable/localizable).

Bug Fixes:

  • Fixed a fragment memory leak; HTML Feed shimmer deadlock; small in-app margins.

Release 4.7.7

Release 4.7.5 with Android 14 support/targeting. Use 4.7.5 when targeting Android 15.

Release 4.7.5

Improvements:

  • HTML Feed: shimmer fallbacks (some devices could load forever), better error handling and messaging.

Release 4.7.0

New Features:

  • HTML (Web) Feed — the Feed is now a WebView served by Pulsate: new features and theme changes no longer require SDK/app releases. (Consequence: app-side Feed theming and Feed string localization no longer apply.)

Improvements:

  • Large In-Apps reworked into their own Activity (better control, edge-to-edge support).

Bug Fixes:

  • Push stats: dismisses are deleted when a click exists.

Release 4.6.1

Release 4.6.0 with Android 15 support/targeting (compileSdk/targetSdk 35), updated Gradle and dependencies, edge-to-edge insets for Feed/Card/Thread/BigInApp fragments.

Release 4.6.0

Version Updates:

  • Java 17 (from 1.8); minSdkVersion 28.

New Features:

  • getFeedUnreadCount() — direct access to unread count.
  • showFeed gained the onFeedClose callback.
  • PulsateConfig with NOTIFICATION_CHANNEL_SHOW_BADGES and NOTIFICATION_USE_LARGE_ICON.

Bug Fixes:

  • Big In-App margins, beacon manager crash, getFcmToken() try/catch, nested res warning.

Release 4.5.6

  • Fixed possible crash when setting a custom vibration pattern for the notification channel.

Release 4.5.5

New:

  • userHasLoggedIn() / userHasLoggedOut().
  • getUnreadCount request method.
  • IPulsateLinkListener — intercept URLs/deeplinks before the SDK handles them.

Improvements:

  • More frequent stat sync; showLastInAppNotification always shows; showLastUnauthorizedMessage always opens Feed; token-failure retries + per-minute request limit; performance and threading improvements.

Bug Fixes:

  • Many crash/ANR fixes; destination-opening edge cases; unauthorized-user flicker; end-session loops; in-app button rendering.

Release 4.5.0 (2024-03-21)

  • SDK crashes and ANRs are collected and sent to New Relic. Dependency updates.

Release 4.4.0 (2024-02-27)

  • Location rework — active location updates reduced by 90%+ in some cases.
  • Periodic jobs use ExistingPeriodicWorkPolicy.KEEP; fixed ProGuard consumer rules; dependency updates.
  • Fixed start_session on older devices / old Play Services.

Release 4.3.0 (2024-02-01)

  • OkHttp 4.11.0 → 4.12.0.
  • Debounced user/privacy/location/push setting updates; job throttling; start/end session delays; request limiter (100 req/min); instant session failure after logout.
  • Race-condition fixes for rapid setting changes; empty user data no longer sent; Talk UI fixes.

Release 4.2.x (2023)

  • 4.2.3: ANR fix in default uncaught-exception handler. 4.2.2: second in-app button stats. 4.2.1: removed test button from Feed.
  • 4.2.0: Dual buttons for Big In-App / Card / Card Back (+15 new colors.xml entries); PulsateSendUpdateUserRequest thresholds for stats; UI cleanups.

Release 4.1.x (2022–2024)

  • 4.1.20: crash/ANR reporting to New Relic.
  • 4.1.12: faster location-manager restarts; user-data sync on alias change/logout; view-binding crash fixes.
  • 4.1.10: DB self-healing (VACUUM on disk errors); in-app dismiss stats; GlobalScope removal.
  • 4.1.6: in-app retry policy (10× every 5 s, then IN_APP_BOUNCED); in-apps moved RxJava → Coroutines; many crash fixes; dependency updates.
  • 4.1.0: showLastInAppNotification(force); IPulsateErrorListener + PulsateError + setPulsateErrorListener; KSP for Room/Glide; removed DB encryption (SafeRoom deprecated); migration tests.

Release 4.0.x (2022)

  • 4.0.0: SDK rewritten in Kotlin. Target SDK 33; new POST_NOTIFICATIONS permission; badge support; crash logging; geofencing accuracy improvements; many fixes.
  • 4.0.3: local badge/read-state tracking, real-time IPulsateBadgeUpdateListener updates.

Release 3.x (2020–2022) — highlights

  • 3.8.0: Android 12 support; minSdk 23; new Bluetooth permissions (beacons).
  • 3.7.1: moved from JCenter/Bintray to Maven Central; minSdk 21.
  • 3.6.0: FirebaseInstanceId → FirebaseMessaging.
  • 3.4.1: updatePhoneNumber().
  • 3.3.0: custom-inbox methods getFeed / handleFeedClick (since removed with the 4.7.0 Web Feed).
  • 3.2.0: revenue events (since removed).
  • 3.1.0: Pulsate.install() removed — SDK auto-installs.