Version 3.38.0 – July 30, 2026 #
Important compatibility notice
This release includes a build-tooling upgrade that may require changes in existing integrations.
The SDK has been migrated to Gradle 8 and Kotlin 1.7.10. Applications integrating the SDK must use Kotlin 1.7.10 or newer. Applications using older Kotlin versions may fail to compile due to Kotlin metadata incompatibilities.
The SDK is now compiled and targeted against Android API level 34. Integrators should use compileSdk 34 or newer.
This upgrade keeps the SDK aligned with the current Android build ecosystem, enables compatibility with recent Android platform requirements, and allows us to maintain supported dependencies and security fixes. Keeping the previous toolchain indefinitely would increasingly limit our ability to deliver secure and compatible SDK releases.
Changed
- Updated the AltBeacon library to version 2.21.2. This enables beacon scanning while the device screen is off on Android 14 and newer devices.
- Updated the SDK build environment to Gradle 8.1.1, Android Gradle Plugin 8.1.4 and Kotlin 1.7.10.
- Updated the SDK compile and target Android API level to 34.
Fixed
- Updated Okio to version 3.4.0 to mitigate CVE-2023-3635, affecting the transitive dependency included by OkHttp 4.10.0.
- Fixed diagnostic SIM log segment timestamps. This is an internal change with no impact on users.
Version 3.37.1 – July 24, 2026 [STABLE] #
Fixed
- Fixed an issue where Configuration.setToken(String) could throw an unexpected exception when an invalid token was provided. It now consistently throws IllegalArgumentException if the token parameter is null, empty or cannot be parsed.
- Fixed an issue that prevented access to SitumSdk managers after logout. Managers can now be safely accessed during cleanup and other post-logout operations.
Version 3.37.0 – June 30, 2026 #
Added
- New method Configuration.setToken() that allows you to use the SDK using a jwt token as authorization. Check the documentation to know more about how this work
Version 3.36.7 – June 09, 2026 #
Changed
- Updated the RTLS library to version 2.57.5. This update fixes a positioning issue that could cause location jumps in outdoor geofences. To address this, a threshold based on the number and strength of Wi-Fi signals detected outdoors has been introduced. As a result, when conditions require it, outdoor GPS signals are prioritized over distant Wi-Fi signals originating from the building, improving positioning stability.
Version 3.36.6 – May 28, 2026 #
Fixed
- Fixed a rare issue that could occur when receiving delayed sensor status updates after stopping indoor positioning. The SDK now safely ignores late callbacks in this scenario.
Version 3.36.5 – May 20, 2026 #
Added
- Added third-party license attribution files (LICENSE, NOTICE, and THIRD_PARTY_NOTICES) to the AAR package to ensure compliance with open-source requirements.
- Improved WiFi scanning component by introducing a pluggable throttling interface, enabling better testability and extensibility.
Fixed
- Fixed an issue in building geometry parsing where longitude values were incorrectly mapped, which could lead to inaccurate location data.
Removed
- Removed legacy networking library (android-async-http) to reduce dependencies and improve maintainability.
Version 3.36.4 – May 05, 2026 #
Changed
- Updated rtls (libserver) to 2.57.4. Fixes an internal initialization issue in the positioning engine that prevented it from starting, resulting in no user positions being returned. The issue was reproducible in very large buildings.
Version 3.36.3 – April 13, 2026 #
Changed
- Fixed a crash due to a SecurityException when starting positioning with FG service while the app is in a non-eligible state. The error is now reported through LocationListener.onError() instead, as a LocationManager.Code.FOREGROUND_SERVICE_NOT_ALLOWED
Version 3.36.2 – April 09, 2026 #
Misc
- Internal refactor to simplify the code.
Version 3.36.1 – March 18, 2026 [STABLE] #
Improved readiness for newer versions of Gradle and the Android SDK
Performance and stability enhancements introduced in recent releases
Security and dependency updates
Please note that versions earlier than 3.31.0 are outside the current active maintenance scope. Existing integrations may continue to operate as currently deployed; however, ongoing support, corrective updates, and compatibility improvements are focused on version 3.31.0 and later.
For applications still using an earlier version, we recommend considering the upgrade as part of regular lifecycle and maintenance planning. Backward compatibility is maintained from version 3.31.0 onward.
Changed
- Update rtls to version 2.56.26. Update internal dependencies (no functional impact).
Internal changes
- Removed the internal logic of SITMapView in charge of using the SDK as a navigation engine, since this “navigation mode” was not being used for a long time. The following WebCommunicationInterface messages were removed:
- navigation.stopped: MapView tells SDK to stop the current navigation.
- navigation.requested: MapView tells SDK to start a new navigation.
- navigation.updated: SDK tells MapView about a navigation update.
- directions.requested: MapView tells SDK to calculate directions.
- directions.update: SDK tells MapView about a directions update.
- Navigation.kt and Directions.kt were directly removed.
Version 3.36.0 – February 23, 2026 #
DEPRECATION NOTICE
Versions of the Situm Android SDK earlier than 3.36.1 (including 3.36.0) are now considered deprecated. To benefit from the latest improvements and ensure ongoing compatibility with the Android ecosystem, we recommend planning an upgrade to version 3.36.1 or later.
Why upgrade
– Improved readiness for newer versions of Gradle and the Android SDK
– Performance and stability enhancements introduced in recent releases
– Security and dependency updates
Please note that versions earlier than 3.36.1 are outside the current active maintenance scope. Existing integrations may continue to operate as currently deployed; however, ongoing support, corrective updates, and compatibility improvements are focused on version 3.36.0 and later.
For applications still using an earlier version, we recommend considering the upgrade as part of regular lifecycle and maintenance planning. Backward compatibility is maintained from version 3.36.1 onward.
Changed
- Changed the default value of NetworkOptions.preloadImages from true to false.
Image preloading is now disabled by default and must be explicitly enabled using:
NetworkOptions.Builder#setPreloadImages(true).
This change improves performance and reduces resource consumption, as POI category images can be numerous and floor plans can be large, avoiding unnecessary preloading unless explicitly required.
Internal improvements
- Improved internal configuration handling to simplify maintenance and reduce complexity.
- Centralized default configuration and normalization logic.
- Optimized CommunicationConfig resolution flow.
Breaking change: Image preloading is now disabled by default.
Integrations that relied on automatic POI category or floor plan image downloads must explicitly enable it using the CommunicationConfig overloads and NetworkOptions.Builder#setPreloadImages(true).
Explicit image downloads continue to work as expected; only the automatic prefetch behavior has changed.
Version 3.35.0 – February 11, 2026 #
Added
- Added Share Live Location functionality, you can find more details about it here.
- New method MapViewController.setShareLiveLocationSession(sessionIdentifier) that allows a user to start visualizing the locations of other user in real time.
- Internal functionality that allows to share the user location (a Share Live Location Session) with another user.
Fixed
- Fix Poi.fromMap() custom fields not being parsed correctly when used from React Native.
- Fixed a crash that was thrown due to directly casting a null value when returning results in CommunicationManager.fetchGeofencesFromBuilding(Building, CommunicationConfig, Handler<List<Geofence>>) and CommunicationManager.fetchBuildings(CommunicationConfig, Handler<Collection<Building>>) . Defensive code was added to report a failure through
onFailure(Error)callback, preventing crashes from taking place.
Version 3.34.1 – February 04, 2026 #
Fixed
- Fixed an issue where starting navigation multiple times consecutively without stopping the previous session could cause onStart and onProgress callbacks to report inconsistent data, as the ongoing navigation was not properly stopped before starting a new one.
Version 3.34.0 – January 20, 2026 [STABLE] #
Changed
- Deprecated Configuration#setApiKey(String, String). The recommended method is now setApiKey(String). The email parameter is ignored, and an internal deterministic email will be generated automatically based on the API key.
Fixed
- Fixed an issue that caused incorrect positioning on outdoor geofences when floor IDs exceeded 65535 due to an unsigned integer overflow.
Disclaimer: Updating to this version will automatically invalidate any existing cached data for users. This is expected behavior and does not cause errors; the cache will be repopulated as needed. Users may experience a temporary rebuild of cached data upon first use after the update.
Version 3.33.3 – November 26, 2025 #
Added
- Added a new method SitumSdk.navigationManager().getRoute() to obtain the on-going route.
Changed
- Added defensive code to avoid IllegalStateException to be thrown when the user clicks on the Situm’s Foreground Notification “STOP” button but the SDK is already being destroyed. This is an extremely rare condition but has now been resolved.
Version 3.33.2 – November 12, 2025 #
Added
- Added an internal configuration message to MapView: This message informs the web layer that spoken messages are now handled natively. It is used internally — no action is required on your side.
Changed
- Added defensive code to NavigationManager.updateNavigationState(ExternalNavigation) to prevent crashes if the MapView sends malformed navigation messages.
Version 3.33.1 – October 06, 2025 [STABLE] #
Changed
- Now when positioning in Global Mode, SDK will also notify the following location statuses:
Version 3.33.0 – September 15, 2025 #
Added
- Now MapView will automatically speak aloud indications during navigation if the TTS feature is enabled in the viewer profile specified. From now on, integrators won’t need to write any code for TTS functionality to work correctly.
Changed
- Changed global mode behavior: Previously, disabling outdoor positioning in the Situm SDK also disabled building detection based on GPS and GPS+WIFI/BLE. With this update, the configuration is decoupled: you can now disable outdoor positioning while still using the building detection features.
- Changed the module name in the dokka task to avoid undesired symbols in the doc links.
Version 3.32.3 – September 09, 2025 #
Changed
- When you start positioning and the RealtimeUpdateInterval is BatterySaver, the first locations are uploaded immediately, instead of waiting 30 minutes.
Version 3.32.2 – August 27, 2025 #
Fixed
- Fixed a bug in DirectionsManager that caused the coordinates of the Points in the returned Route object to be inaccurate.
Version 3.32.1 – August 22, 2025 #
Fixed
- Fixed a bug on fetchRemoteConfig() that returned the remote configuration 2 times when already cached.
Version 3.32.0 – July 11, 2025 #
Added
- New method in Poi and PoiCategory getLocalizedName that returns the name of the POI or POI category in the language specified. If there is no name for that language returns the default value.
Version 3.31.2 – June 23, 2025 [STABLE] #
Changed
- Default URL used internally by our SDK changed from dashboard.situm.com to api.situm.com.
Version 3.31.1 – June 11, 2025 #
Fixed
- Resolved an issue that prevented the LOCATION_DISABLED status from being properly notified when Location Services were turned off (on the phone itself), under certain conditions.
Version 3.31.0 – June 06, 2025 #
Changed
- The TIMED_CACHE strategy has been updated to prioritize faster response times, especially in scenarios with poor network connectivity.
- Previous behavior: If the cache had expired, a network request was triggered before returning any data, causing delays while fresh data was fetched.
- New behavior: Cached data is now returned immediately, even if it has expired. If the cache is stale, a background network request is triggered to refresh the data for future use.
Note: This change means that users may not see updates immediately after the cache expires—they’ll be visible on the next call that uses this strategy. However, this trade-off leads to a significantly smoother experience in low-connectivity environments, where waiting for a network response can take considerable time.