Older iOS Release Notes
Learn more about your drivers with Zendrive's powerful driver insight platform. Contact [email protected].
Please send product and platform questions to [email protected].
Would you like to participate in our customer stories blogging series to promote your company's success? Please email [email protected].
iOS SDK 7.2.1
New Features and Improvements
Trip Start Extrapolation
The iOS SDK now uses the end location of a trip to calculate the start location of the next trip. It extrapolates distance between this location and the point of trip detection and captures this mileage under a new field called Extrapolated Distance
.
This field is optional and is useful for pay-per-mile programs. See our Trip Detection and Tracking product guide.
Vehicle Tagging using Beacons
The iOS SDK now supports physical bluetooth beacons that can be attached to cars and used to associate particular vehicles with the SDK.
The support for beacons comes with a set of APIs to interact with beacons via the SDK. See the updated Vehicle Tagging product guide to understand more about beacons, and contact [email protected] to explore a beacon solution for your business.
Continued Improvements to Detectors
Our over-speeding detector now leverages map matching technology to detect speed limits and breaches more accurately.
Our Phone Use detector has been updated to further reduce false positives caused in the case of phone mounts coming loose.
Maintenance
User Feedback API
There is new documentation available for our User Feedback API that allows users to report whether they were drivers or passengers for particular trips. See User Feedback API.
iOS Permission Guide
There is a new guide for iOS permissions and errors to help you integrate the Zendrive SDK correctly. See iOS Permissions.
Documentation References
iOS SDK 7.1
New Features and Improvements
(Beta) Bluetooth Beacon Trip Start - The Vehicle Tagging feature has now been upgraded to allow for near-instant trip start using bluetooth beacons affixed in a user's car. This feature will reduce lost mileage at the start of a trip. Contact us at [email protected].
Bluetooth Device Discovery API - We've added an API that returns a list of active bluetooth audio playback devices on iOS. This API can be used to create UI elements such as device lists for vehicle tagging. See Device Discovery API.
Continuing Improvements to Detectors - This update comes with V2 of our phone use detector and V8 of our collision detection algorithm. The phone use detector now uses our Sensor-Fusion technology and has improved recall of phone handling events. The collision detection algorithm has improved filters around collision detection, leading to even further reduction in missed collisions, especially when phone fall is detected.
Bug Fixes and Maintenance
The following bugs were fixed in SDK 7.1:
Fixed a database crash that affected few users who upgraded from SDK version
5.5.0
to7.0.0
.If a drive is in progress during teardown, the
processEndOfDrive
callback would not get sent on the Swift SDK. This is now fixed.
The following maintenance changes were made in SDK 7.1:
Changed
ZendriveError
enum case fromkZendriveUnsupportedVehicleType
tokZendriveErrorUnsupportedVehicleType
for better consistency.
Documentation References
iOS SDK 7.0
New Features and Improvements
(SDK 7.0.1+) Improved Collision Detection - In this cherry-pick release, we've implemented the latest version of our collision detection algorithm. Collision detection will have better precision and recall than previous releases.
Motorcycle Trip Support - The Zendrive SDK can now detect if the user is riding a motorcycle or driving a car. A new field called ZendriveVehicleType
has been added to the DriveInfo
class.
To enable this feature, contact us.
Motorcycle Specific Driving Events - If the vehicle type is known before the drive starts, the Zendrive SDK can tailor the driving events to a motorcycle ride. The thresholds for these events are updated to reflect the difference in driving styles and risk on motorcycles when compared to cars. The ZendriveScore
has also been updated according to these updated events. To use this, ZendriveVehicleType
must be set to MOTORCYCLE in ZendriveConfiguration
.
This feature is incompatible with the motorcycle classification feature. To enable this, please contact us.
New Settings API - Previously, Zendrive managed sensor permissions on its own. However, we want to leave that to your app so that you can manage them according to your needs. For that reason, we've deprecated a number of APIs and replaced them with a single Settings API. See below.
Upgrade Instructions
1. To switch to the settings API, remove any instances of the following APIs.
@available(*, deprecated, message: "Use `settingsChanged(_:)` callback instead.")
@objc optional func processLocationDenied()
@available(*, deprecated, message: "Use `settingsChanged(_:)` callback instead.")
@objc optional func processLocationApproved()
@available(*, deprecated, message: "Use `settingsChanged(_:)` callback instead.")
@objc optional func processActivityDenied()
@available(*, deprecated, message: "Use `settingsChanged(_:)` callback instead.")
@objc optional func processLocationApproved()
2. Set the following APIs to false
.
// This property needs to be set to false. and the application should
// completely control the user experience related to asking location permission.
@objc public var managesLocationPermission: Bool
// This property needs to be set to false and the application should
// completely control the user experience related to asking motion
// and fitness permission.
@objc public var managesActivityPermission: Bool
3. Implement the settingsChanged
callback and the getZendriveSettings
API.
/// Returns a valid Settings object that contains information
/// about errors in device or application settings affecting Zendrive SDK.
let settings = Zendrive.getSettings()
///
/// This callback gives information about errors in device or application settings that
/// may be affecting Zendrive SDK.
///
/// This callback is fired on the main thread after SDK setup and whenever
/// location permission or `Configuration.driveDetectionMode` changes,
/// provided the location permission is determined.
///
/// The recommended flow is to ask for the permissions before SDK is setup
/// because if the location permission is not determined this callback will not be
/// fired.
///
/// If you receive this callback in the foreground you can show the errors using any UI
/// constructs like alert controllers, if this callback is received in the background you can
/// use a notification. If you want to add actions to the notification then please don't
/// rely on errors received at the time of notification as they might have changed by
/// the time the user clicks on the notification. Instead use `Zendrive.getSettings()`
/// to get the latest errors and show appropriate message to the user.
///
/// - Parameter settings A valid `Settings` object that contains
/// information about errors affecting the Zendrive SDK.
///
@objc optional func settingsChanged(_ settings: Settings)
Documentation References
iOS SDK 6.3.x
New Features and Improvements
Xcode 12 Beta Support (SDK v6.3.1 only): We now support Xcode 12 beta 3 and above. Xcode 12 beta 3 would report build failures while building ZendriveSDKSwift
framework. This patch contains minor changes to fix these failures.
Collision 2-Tier Notification System: We've added a new feature to our collision detection service that generates an early callback of a probable collision. This is in addition to the normal callback generated after a collision, which now serves to confirm or invalidate the quicker notification. This is an advanced feature for which you'd need to opt-in. See Automatic Collision Notification.
Vehicle Tagging: We've added the ability to pair the Zendrive SDK with a car's bluetooth stereo to identify a vehicle and tie it to a user account. This is useful for vehicle-restricted insurance, and tracking usage of particular cars in a fleet, along with family safety features. See Vehicle Tagging.
Heartbeat: The Zendrive SDK contains a new diagnostic tool called Heartbeat. Heartbeat is a periodic service within the SDK to check if it is running properly. Heartbeat logs minimal information about the SDK or device periodically. See Heartbeat.
Documentation References
iOS SDK 6.2.x
New Features and Improvements
Improved Collision Detection: The Zendrive iOS SDK now deploys a deep learning algorithm to detect collisions. This is a revolutionary change that will yield the following benefits:
Collision detection is now more accurate and reliable
The SDK has a smaller size
CPU performance is better
Bug Fixes
SDK v6.2.2
Trips with no Score - We identified a bug in SDK 6.2.0 and 6.2.1 that caused some trips to not have a trip score. To ensure this doesn't happen again, we released a patch with SDK 6.2.2.
SDK v6.2.1
Outdated Bundles - Old versions of Crashlytics and Lumberjack were mistakenly bundled in SDK 6.2.0. This is fixed in SDK 6.2.1+.
Trip Analysis Timeout - Previously, in the rare event that there was a backend failure or no network was available on the device for more than 24 hours, trips would not get analyzed. A fix has been applied where processAnalysis(ofDrive:)
will be called whenever network becomes available, even after 24 hours.
Integration Changes
Minimum Swift Version: Zendrive iOS SDK 6.2.0+ needs Swift 5.1 or above.
New Dependencies: The iOS SDK now uses a few more dependencies. If you directly link the framework, see our step-by-step integration instructions. Note: CocoaPods users only have to update to the latest version of CocoaPods (1.9.0+).
Deprecated Obj-C APIs: Objective-C Public APIs are now deprecated. Future development will only be done on our Swift APIs and will not be ported to Objective-C. While the Objective-C APIs will still work in iOS SDK 6.2, we will stop supporting them later in the year when we add iOS 14 support. We strongly recommend migrating to our Swift APIs.
Drop Support for iOS 10 Devices: The Zendrive iOS SDK 6.2 has a minimum OS version of 11. This means that we no longer support some older iPhones with iOS 10 or below.
Documentation References
iOS SDK 6.1.0
New Features and Improvements
Airplane Trips: The Zendrive SDK now identifies airplane journeys as “non driving” trips. This classification is available only after a trip ends.
Data Residency: Developers can now select a data residency region for the Zendrive SDK. A region stores and processes your application data. By default, your application’s region is set to the US. If your policy mandates data residency, please contact us at [email protected].
Invalid Trip Reduction: The Zendrive SDK can now use Motion and Activity data from the user’s phone to detect and eliminate invalid trips. However, this would require additional permissions. To use this feature, please contact us at [email protected].
Documentation References
iOS SDK 6.0.0
This is a major release of the Zendrive iOS SDK to prepare for iOS 13.
New Features and Improvements
iOS 13 Compatibility: The Zendrive iOS SDK is now compatible with the upcoming iOS 13 and its new permissions model. With iOS’s increased focus on privacy, our documentation recommends solutions to get permissions from users.
In particular, iOS 13 does not allow apps to get Always Allow permission for location on the first request. End-users are prompted for Always access when the app uses location in the background. This is troublesome for trip detection in the background, hence our solution is to request the user to manually change their settings. See Permissions Flow in iOS 13.
Improved Collision Detection: The collision detection model has been significantly improved to detect collisions at speeds as low as 10 MPH with much better accuracy.
Scores and Events for Transit and Bike Trips: The driveInfo
value now contains trip events and scores for all trips, including transit lines and bike trips. This can be used to provide additional value to users.
Other Updates
Swift 5 APIs: Our documentation now provides both Objective-C and Swift-friendly versions of our public APIs. The Swift-variant of our SDK, along with the sample app, will be available through CocoaPods.
pod 'ZendriveSDK', :git => 'https://bitbucket.org/zendrive-root/zendrive_cocoapod.git', :tag => '6.0.0'
pod 'ZendriveSDKSwift', :git => 'https://bitbucket.org/zendrive-root/zendrive_cocoapod.git', :tag => '6.0.0'
Documentation References
Get Started with iOS SDK Integration.
iOS SDK 5.10.2
New Features and Improvements
Improved trip detection: Trips can be detected earlier with an alternative mode of trip detection. This mode requires the app user to grant permission to access motion and fitness data. Further, this also requires multiple regions to be monitored by the SDK and may not be suitable for apps already using region monitoring for enable other features.
This feature is available upon request.
Disaster recovery: The Zendrive SDK can switch seamlessly between servers across data centres in case of a disaster. This will ensure that there is minimal data loss and billing parameters like mileage remain unaffected.
Other Updates
AWS dependency update: If using AWS library with their apps, app developers need to migrate to version 2.9.7
Trip warnings API: For trips terminated due to an abnormally long trip duration - greater than 16 hours - a warning would be available in DriveInfo.
Bug fixes
A fix has been applied to an issue when - in some rare cases - the app would crash when the trip ends and transit detector was enabled. (Only for customers when transit is enabled)
Documentation References
Get Started with iOS 5.10.2 SDK Integration.
Please send product and platform questions to [email protected]. Would you like to participate in our customer stories blogging series to promote your company's success? Please email [email protected].
iOS SDK 5.9.0
New Features and Improvements
Event ratings API: Developers can now access event ratings for each trip in driveInfo. Each trip will receive performance ratings for acceleration, speeding, braking, hard turns and phone use based on frequency and distribution of these events at the end of a trip. Ratings are available on a scale from 1 to 5 and can be displayed as stars or grades in your trip details screen.
Event ratings will be available as ZendriveStarRating after the end of a trip.
Privacy-first: In the interest of protecting the privacy of users, Zendrive no longer collects personally identifiable information from the SDK. This means that userfields like firstName, lastName, email, phoneNumber, driverStartDate are no longer available. Instead, a convenience string field called alias can be mapped to a driver. See upgrade instructions for details.
State API: Zendrive iOS SDK is now introducing an asynchronous getZendriveState API. This ensures that the apps can get more reliable result about the current and internal state of the SDK always. To display information about an ongoing trip to the user, activeDriveInfo can still be queried when the SDK state indicates that a trip is in progress.
Asynchronous APIs: The SDK now features asynchronous APIs which allows for developers to manage errors safely and ensure UI updates are made when queried data is ready. An example is available in the upgrade instructions.
Upgrade Instructions
After moving to 5.9, developers will need to modify their implementation of trip lifecycle methods to support asynchronous callbacks. The sample app includes an exhaustive code example for implementing asynchronous methods.
[Zendrive startManualDrive:@"my_tracking_id" completionHandler:^(BOOL success, NSError * _Nullable error) {
if(success) {
// Any code succeeding the start of drive can go here
// eg: ui updates, any local state updates post drive start
NSLog(@"Manual Drive started");
} else {
NSLog(@"Start drive failed with error code: \
%ld and description:%@",error.code,error.description);
}
}]
Personally identifiable information can no longer be accepted as driver attributes upon configuration. Instead a convenience field ‘alias’ is available.
ZendriveDriverAttributes *driverAttrs = [[ZendriveDriverAttributes alloc] init];
[driverAttrs setAlias:firstName];
ZendriveConfiguration *configuration = [[ZendriveConfiguration alloc] init];
configuration.driverAttributes = driverAttrs;
Documentation References
See iOS SDK Appledoc.
SDK Integration documentation is no longer publicly available. Please send questions to [email protected].
Was this helpful?