iOS
- Stability improvements to home and work venue detection.
- A bug introduced in v6.3.0, which delayed the SDK's reaction to location permission changes.
- A new Driving Insights feature, which provides information about a user's driving behaviour. In this first version, the SDK detects harsh driving events (e.g. acceleration, braking, and turning), which are then used to compute a vehicular transport's smooth driving score. This data is available via the new APIs in the Sentiance class, which allows the subscription to, and retrieval of DrivingInsights and HarshDrivingEvents. This feature must be enabled by Sentiance before use.
- New API methods in the Sentiance class which allow the subscription to, and retrieval of TransportSessions. A transport session corresponds to a transport that was detected by the SDK, and includes information such as the mode of transport, and the raw sensor data that was used to classify it. This API is primarily intended to be used for accessing the raw sensor data. To simply be notified of new transports, it's more efficient to utilize the UserContext info.
- A short history of locations inside SENTVehicleCrashEvent, which represent the preceding locations leading up to the crash event.
- Several minor stability issues.
- Incorrect device low-power-mode indicator when checking the SDK status. This bug also impacted the system API result when calling
ProcessInfo.isLowPowerModeEnabled
.
- An exception caused by deadlocking logic, when checking the background app refresh status and device thermal state.
- An exception related to incompatible bundled models, caused by build-time SDK Bundle merge by Xcode.
- An issue where the SDK would start running in the background without detections being started, due to a conflict with a geofence set at the app level.
- An exception caused by deadlocking logic, when checking if the device is in low power mode.
- CocoaPods:
$(PODS_ROOT)/**
path fromSWIFT_INCLUDE_PATHS
that was being set by the SDK Podspec configuration. This was resulting in build errors when compiling Swift files.
- High CPU usage when some on-device features were enabled, such as User Segment Detection and Stationary Venue-Type Mapping.
- Transport waypoint and distance information to SENTTransportEvent, which is part of the event list returned in SENTUserContext. Both waypoints and distance are based on unprocessed (i.e raw) location data.
- User's current semantic time info to SENTUserContext (e.g. morning, lunch, evening). See SENTSemanticTime.
- A new multi-purpose SDK background task, with identifier
com.sentiance.backgroundtask.task_processing
. Adding this identifier to your app's Info.plist is mandatory. Please update your project settings, and enable Background fetch and processing capabilities. - isDeviceLowPowerModeEnabled property to SENTSDKStatus, to indicate whether the device is in low power mode.
- isMotionActivityPermissionGranted property to SENTSDKStatus, to indicate whether the motion activity permission has been granted.
- Support for uploading additional SDK status information to the Sentiance Cloud Platform.
- Stationary venue mapping has been update to an improved version, but that is limited to venue-type mapping. i.e. a stationary will no longer reference a specific venue, but a venue type instead.
- Improved support for on-device user segment detection.
- The SDK's background task identifier com.sentiance.backgroundtask.segment_detection is no longer required. You may remove it from your app's Info.plist file.
- Disabled SDK logging to the device system log (i.e. console).
- Rare exception when uploading logs to the Sentiance Cloud Platform.
- BREAKING: SENTUserContextUpdateCriteriaActiveMoments criteria type.
- BREAKING: SENTMoment class. SENTUserContext no longer returns moments.
- BREAKING: venueSignificance is removed from SENTStationaryEvent, and moved to SENTVenue. SENTStationaryEvent now references a SENTVenue.
- BREAKING: SENTVenueCandidates and SENTVisit classes are removed. venueCandidates has been removed from SENTStationaryEvent.
- BREAKING: SENTVenue now has a nullable location, which previously was not nullable. The location can be nil when it's unknown, such as when a stationary has a venue significance of "point of interest". In this case, only the venue type is known, but not its exact location.
- BREAKING: SENTVenue no longer has venue name or labels.
- Runtime exception when processing a detected stationary for venue mapping purposes.
- Missing vehicle crash information in the trip data that is uploaded to the Sentiance Platform.
- An issue where the SDK continues detections after the location permission is downgraded to "while using the app."
- Potential runtime exception related to the vehicle crash diagnostic feature.
- App-configurable rules to control SDK data transmission to the Sentiance Cloud Platform. The app can specify which of the following data types are allowed to be transmitted to the Sentiance platform: vehicle crash data, SDK and device info, general detection data, all data. See setTransmittableDataTypes:
- Support for car, bus, train, and tram/metro transport mode detection, part of the user's current context information.
- Internal support in the SDK to notify the Sentiance Cloud Platform that the SDK has been reset.
- Improve the detection of vehicle crashes that occur towards the end of a trip.
- Rare occurrence of a EXC_BAD_ACCESS crash.
- File operation exception at runtime, causing the process to crash.
- Inaccurate stationary venue information in some instances.
- Runtime exception when attempting to remove CLCircularRegions that were created by the SDK, while the app is also monitoring CLBeaconRegions.
- Runtime exception when attempting to remove CLCircularRegions that were created by the SDK, while the app is also monitoring CLBeaconRegions.
Starting with this release, you can add the Sentiance SDK to your project as Swift Package. See these instructions.
- Sentiance's custom TensorFlowLiteC v2.7.0 XCFramework has been repackaged as a dynamic library framework. If you've integrated the SDK manually or by using Carthage, and will use the TensorFlowLiteC framework bundled in this release, make sure to update your project settings to embed and sign the TensorFlowLiteC framework. For other integration types, no changes are required.
- Improved the vehicle crash detection algorithm.
- Occasional slow initialization while loading the SDK's resource bundle on some devices.
- Unterminated background processing and app refresh tasks, after the tasks have finished.
- Motion & Fitness permission dialog triggered by the SDK, when the step counting feature is activated.
- Optimized the download of venue data, used for on-device processing.
- An issue where a handler/listener that was set on the SDK would be lost after resetting the SDK.
- An issue where the SDK stops immediately after being initialized, when using the deprecated initializer.
- A rare issue where the main thread gets blocked while processing location data.
- Improved the vehicle crash detection algorithm.
- Failure to update the deep learning crash detection model under certain circumstances, after an SDK update.
- Usage of incorrect trip-end location.
- Incorrectly returned NSDictionary as the user creation error detail, instead of an NSString.
- Invalid SDK state, when user creation is interrupted by app termination or unfinished user linking, requiring an SDK reset to be able to complete user creation.
- Failure to deliver SDK status updates when the location permission or precision changes.
- Blocking of the main thread during app startup, under rare circumstances.
- Restored support for the armv7 architecture.
- Failure to update the deep learning crash detection model under certain circumstances, after an SDK update.
- Usage of incorrect trip-end location.
- Rare stack overflow issue when submitting detections during SDK initialization.
Breaking Changes
Version 6.0 is a major release and includes multiple deprecations and breaking changes. Please read our migration guide to learn how to upgrade to this version.
Given the significance of the changes in this version, we recommend testing your app carefully, before making it available to your wider audience.
- A Sentiance user creation method that supports the existing user-linking flow, and a new authentication-code based flow. The new flow is the recommended approach for future integrations.
- A dedicated SDK initializer that does not create a Sentiance user. To be used in combination with the user creation method.
- Improved versions of asynchronous SDK methods that accept a result and error returning handler, offering more flexibility and Swift friendliness.
- Detection enabling and disabling methods that are persistent across app restarts, and that replace the SDK's start and stop methods.
- User Context information, which can be requested or subscribed for, and which includes a user's recent timeline events, the home and work locations (if detected), and a user's segments (if detected). This feature is released as Early Access and must be enabled by Sentiance first. For more information about it, see our On-Device Features page.
- On-device user event timeline generation, with support for real-time transport classification using Sentiance's ML-based transport classifier. This feature is released as Early Access and must be enabled by Sentiance first. The timeline is made available via the User Context data.
- On-device venue mapping of stationary locations, using Sentiance's ML-based classifier. This feature uses venue data that is downloaded and stored offline. It is released as Early Access. The venue information is made available via the User Context. For more information about this feature, see our On-Device Features page.
- On-device segment detection. This feature is released as Early Access and must be enabled by Sentiance first. The segment data is made available via the User Context. For more information about this feature, see our On-Device Features page.
- Limited support for running detections when the location permission is while-in-use, and when the app is in the foreground.
- Nullability annotations for all public methods and classes.
SENTSDKStatus.userExists
,SENTSDKStatus.backgroundRefreshStatus
, andSENTSDKStatus.detectionStatus
userExists
andisUserLinked
methods in theSentiance
class, accessible without initializing the SDK.isPreciseLocationAuthorizationGranted
to indicate whether precise location permission is granted.
- Bumped the minimum support iOS version to 13.0.
- The
SENTSDK
class has been renamed toSentiance
. - Most
Sentiance
methods can no longer be called without initializing the SDK first. Exceptions are mentioned in each method's corresponding documentation. MetaUserLinker
is renamed toUserLinker
.isVehicleCrashDetectionSupported
no longer accepts an argument..- Modifications to
SENTConfig
after passing it toinitWithConfig:success:failure
are now ignored.
initWithConfig:success:failure:
reset:failure:
start:
,startWithStopDate:completion:
,stop
getUserId
,getUserActivity
,getInitState
,getSdkStatus
,getVersion
,getWifiQuotaLimit
,getWiFiQuotaUsage
,getMobileQuotaLimit
,getMobileQuotaUsage
,getDiskQuotaLimit
,getDiskQuotaUsage
(deprecated in favor of properties).getUserAccessToken:failure:
startTrip:transportModeHint:success:failure
andstopTrip:failure
submitDetections:failure:
SENTSDKStatus.startStatus
andSENTSDKStatus.locationPermission
- Prevent blocking the main thread during startup under certain conditions.
- Improve the handling of false-trip detections.
- Stability fixes when resetting the SDK.
- OOM when uploading data to the Sentiance platform continuously fails.
setCrashListener:
isInitialized
setTripProfileHandler:
,setFullTripProfilingEnabled:
,setSpeedLimit:
SdkStatus.isLocationPermGranted
- The TensorFlowLiteC framework bundled in our fat framework and xcframework artifacts have been replaced with a custom TensorFlowLiteC v2.7.0 framework, which includes support for arm64 (device), arm64 (simulator), and x86_64 (simulator) architectures.
- Failure to clean up the keychain under certain circumstances, after app reinstallation. This resulted in restoring the previous Sentiance user on the device.
- Failure to run the vehicle crash detector when triggered-trips mode is enabled on the SDK.
- Support for armv7 (device) and i386 (simulator) architectures.
- API to control background task identifier registration (details). This is currently relevant only when the SDK's step-counter feature is being utilized.
- Improved the vehicle crash detection algorithm.
- An issue that was introduced in v5.14.0, where iOS terminates the app when scheduling a background task. This was caused by the SDK registering background task identifiers outside of the app delegate.
This release updates the SDK's TensorFlow Lite dependency version to 2.7.0. If your app depends on a different version of TensorFlow Lite, make sure to test it for compatibility before updating.
- Updated the TensorFlow Lite dependency to v2.7.0.
- Updated the vehicle crash detection ML model for TensorFlow Lite v2.7.0 compatibility.
- Step count tracking (disabled by default).
- Support scheduling background tasks.
Changed
- Improved the vehicle crash detection algorithm.
- Improved the vehicle crash detection algorithm.
- Added support for vehicle crash detection when motion activity permission is not granted.
Fixed
- A bug that was introduced in v5.11.2, where reinstalling the app did not clear the previous Sentiance user.
- Trip recording consistency upon unexpected app restart.
- Stability of background task usage in the SDK.
- Improved vehicle crash detection.
- Inability to detect trips after toggling the location precision setting on iOS 14+.
Deprecated
- Legacy on-device trip profiling. This feature will be removed in the next major release.
- Fixed updating debug log configuration received from backstage.
- Removed obsolete linker flag '-all_load' from podspec which lead to linker issues in recent react native environments.
- Fixed an issue where detections were not able to start on iOS 15 devices due to the updated authorization status.
- Fixed TensorFLowLite model updating mechanism at runtime.
- Removed embedded TensorFlowLite library from SENTSDK pod by providing a separate thinned package and adding a pod dependency to TensorFlowLite (applies to CocoaPods integration only and requires CocoaPods 1.10.0 or above).
- Support SDK artifacts without CallKit linkage
- Fixed rare and transient runtime crashes when object references inside the SDK get released from the OS due to erroneous reference semantics.
- Fixed delayed uploading of payloads in case of outdated authentication tokens.
- Fixed missing trip detections due to erroneous flip flop checks.
Changed
- Updated embedded TensorFlowLite framework to v2.4.0.
Fixed
- Fixed potential accelerometer data gaps in trip objects due to included data from previous trips.
- Fixed swift compiler warning since Xcode 12.5 wrt a missing include in the umbrella header.
- Support for approximate location access available since iOS 14.
- Support for detection of screen lock/unlock events.
Changed
- Add fail-fast mechanism during third party user linking if linking has not been completed.
- Slightly adjust the actual stationary start time in the same way as the Android SDK.
- Missing sensor data for crash events in some cases.
- Overlapping stationary events in case of trip timeouts.
- Recovery of trip object creation in case the SDK got killed by the OS.
- Trip object creation and submission in case of a crash event.
Added
- New type to SDK artifacts which are now packaged as both Framework and XCFramework (Please make sure to have CocoaPods 1.10.0 or above installed on your machine if you integrate Sentiance SDK via CocoaPods).
- An improved and more accurate vehicle crash detection, backed by a machine learning model. You must switch to using the new Sentiance API method
setVehicleCrashHandler:
to activate it. - A new method to check if crash detection is supported on the device for a specific trip type. See
isVehicleCrashDetectionSupported:
.
Beta Feature: Support for host apps that enable Data Protection. This functionality is released as a beta feature and not yet recommended for production use.
Changed
- The trip serialization process utilizes a less intense and more optimized background processing model.
Deprecated
Fixed
- An issue where portions of accelerometer and gyroscope data might be missed
- An issue where stationary detection might overlap with past stationary and trip detections
- An issue where the SDK might continuously report an initialization state of
SENTInitInProgress
after the initialization credentials are changed - An issue where the SDK might continue collecting location fixes even after the user becomes stationary and cause excessive energy consumption
- An issue where the SDK might accidentally remove keychain items owned by the host app
- An issue where the SDK might crash during a network operation
Removed
- Location permission prompt when starting the SDK. If you rely on the SDK for prompting the user, please make sure you update your app and prompt the user during the onboarding.
- The SQLCore I/O database error
- High frequency GPS configuration
- An issue where the SDK might not register geofences after determining that the user is stationary
- An issue where the SDK might use outdated geofences during stationary state determination
- An issue when using beacon regions was causing unexpected exits
- Support added for on-device trip profiling and hard event detection.
Fixed
- An issue where the SDK might quit unexpectedly during resetting due to an internal issue
Added
- Support for resetting the SDK to factory settings, which clears all user data and allows creating a new Sentiance user.
Changed
- The geo-fence management policy so that the SDK does not intervene with the lifecycle of geo-fences owned by the enclosing app.
- Removed the motion activity permission prompt when starting the SDK. If you rely on the SDK for prompting the user, please make sure you update your app and prompt the user during the onboarding.
Fixed
- An issue where the SDK database might experience conflicts when the enclosing app also uses database instance(s) of CoreData.
- Fixed the SDK start/stop infinite loop when the user was selecting “Allow Once” for iOS 13 location permission.
Fixed
- iOS 13 background tasks crash
- Stuck in stationary (missing some trips)
- On base url change submission fix
- iOS 13 crash fix
- Payload submission stability fixes
Fixed
- An issue that caused location observation to not stop properly when
startWithStopDate:completion:
is used
- Stability and trip detection improvements.
- Fix with reachability.
- Stability improvements.
- Crash detection speed check.
- Improved trip start detection.
- Stability improvements.
- iOS update fix
- Trip overlays on off the grid events
- Other fixes and improvements
- Crash detection implemented
- Fix with small amount of waypoints
- Trip duplication fix
- Other fixes and improvements
- Fix with using beacons
- Triggered trip timeout, persisting started triggered trip
- SDK motion activity and start moving timing bug fixes
- Meta Users implemented. Documentation updated accordingly.
- Battery usage fix
Last modified 1mo ago