Skip to main content

Release Notes

V3.0.3

New Features

  • Implemented reverse gear in Vehicle Status
  • Created an enum class GattError to represent GATT errors with descriptive names and descriptions

Bug Fixes

  • Corrected the VehicleStatus.lightIsOn to display the accurate value
  • Resolved slow connection issues
  • Addressed ANR (Application Not Responding) problems related to connection
  • Prevented heartbeat calls when an action has not received a response to avoid timeout

Improvements

  • Added new log message for onConnectionStateChange to provide information about the GATT status and connection state: GattStatus = [gatt description], Connection State = [Connect/Disconnect]

Download 📦

V3.0.2

New Features

  • Reintroduced BleTerminal.hasKey()
  • Added BleError.LocationUnauthorised to return an error when the user disallows location permission
  • Added BleError.CtgError.TooManyRequest to return an error when exceeding more than 3 concurrent commands
  • Added BleError.GATTError to return Bluetooth Gatt errors

Bug Fixes

  • Fixed SDK failure to compile
  • Fixed BleListener.onSignalStrength to read the RSSI for a connected remote device

Download 📦

V3.0.1

  • Added BleError.LocationUnauthorised to return an error when the user disallows location permission

Download 📦

V3.0

Notice: This version has breaking changes

Before

The management of Bluetooth keys was handled by the SDK, which communicated with the Cartrack servers from the initial version to version 2.4:

  • Obtaining the key
  • Key randomisation

This increased complexity for mobile integrations, and keys could only be fetched (or randomized) while the smartphone had the app open. In many cases, users may be in environments with limited cellular connectivity (for example, parking garages), which made the process cumbersome.

After

This new SDK is more straightforward, and we have exported the key management into the Cartrack Fleet API. Using the API, you can now fetch the BlueTooth keys ahead of time and reuse them for multiple bookings. Have a look at the following endpoints:

  • GET /mikey/:registration, to get the key for a given vehicle registration

  • GET /mikey, to get the keys for all your vehicles

  • POST /mikey/:registration, to randomise the key for a given vehicle registration

  • API documentation: https://developer.cartrack.com/fleet-api

To enhance security, it is advisable to randomize keys periodically. We suggest rotating keys when there is enough time between two users, allowing the vehicle to receive the new key and the user to load it on their phone.

You can then provide the key to the user’s smartphone using the SDK key functions.

  • BleListener.onSaveAuthKeySuccess called when save authentication key successfully
  • BleTerminal.saveAuthKey, BleTerminal.getAuthKey and BleTerminal.removeAuthKey to handle authentication key
Release details
  • Remove VendorId,API keyandcountry code
  • Remove Random Key,Fetch Key,Save KeyandRemove Key from API
  • Combine BleConnectionError,BleActionErrorandBleKeyError to BleError
  • Remove unused Error
  • Added connection timeout parameter for scanAndConnectToPeripheral

Download 📦

V2.4.2

  • Added ErrorHandler.BleConnectionError.LocationUnauthorised to return an error when the user disallows location permission

Download 📦

V2.4.1

  • Reintroducing BleTerminal.hasKey()

Download 📦

2.4

  • Added ErrorHandler to handle all possible errors
  • Added ErrorHandler.BleConnectionError to indicate bluetooth connection and authentication failures and provide an error type
  • Added ErrorHandler.BleActionError to indicate when a BLE action failed and provide an error type
  • Added ErrorHandler.CtgError to indicate when a terminal action failed and provide an error type
  • Added BleListener.onError to return all error from BleListener
  • Added BleAction.VEHICLE_GET_STATUS to get the current state of the vehicle’s ignition
  • Removed BleListener.onTerminalConnectionFailed and merge it to BleListener.onError
  • Changed BleListerner.onGetAuthKey to BleListener.onGetAuthKeySuccess to return success API, failure will return in BleListener.onError
  • Changed BleListerner.onRemoveAuthKey to BleListener.onRemoveAuthKeySuccess to return success API, failure will return in BleListener.onError
  • Changed BleListerner.onRandomAuthKey to BleListener.onRandomAuthKeySuccess to return success API, failure will return in BleListener.onError
  • Moved errors so that they are returned in BleListener.onError
  • Added BleListener.onTerminalDidGetVehicleStatus for showing IgnitionState
  • Updated error code and localized description for Error Handler

Download 📦

V2.3

  • Added a function BleAction.unlockNoKeyFob to send an unlock command Unlock_0 that doesn't activate the key fob. The driver won't be able to start the engine.
  • Receive BleAction.unlockNoKeyFob response in BleTerminalDelegate.bleTerminalDidAction(terminal:action:error:)

Download 📦

V2.2.1

  • Add BleTerminal.removeAuthKey() to remove authentication key from local memory
  • Add BleListener.onRemoveAuthKey(error: String?, success: Boolean?) to receive a call back when removeAuthKey() called
  • Add BleTerminal.randomAuthKey() to random the terminal authentication key , call back will be received in BleListener.onGetAuthKey (error: String?, success: Boolean?)
  • We now have two separate functions removeAuthKey and randomAuthKey, please consider it when upgrading to this new version.
  • The Shared Preference will only save one authentication key with a static name. If you want to use another it for a different vehicle or a new authentication key, you will need to remove the current authentication key before fetching the new one.
  • Bugfix for the default url

Download 📦

V2.2

  • Add a new parameter apiUrl in BleService.configure().
  • Add BleService.setApiUrl(apiUrl: String) for changing the apiUrl at runtime.
  • Add BleService.setDefaultApiUrl() for changing the apiUrl to the default apiUrl at runtime.

Download 📦

V2.1

  • Fix unicode characters which fail to convert to proper bytes.

Download 📦

V2.0

  • Add a new parameter countryCode in BleService.configure().
    • Please refer to iban.com/country-codes for the country code alpha-2 format.
  • Add BleService.clear() for clearing BleService instance.

Download 📦

V1.5

  • Fix a situation where the terminal name is null on specific smartphones, causing a crash

Download 📦

V1.4

  • Fix an issue where the SDK fails to fetch the key, when the smartphone does not have stable connection

Download 📦

V1.3

  • Fix a crash when phone goes outside of the terminal BLE antenna's range

Download 📦

V1.2

  • Add BleTerminal.getBleConnectionState() to indicate the state of the BLE
  • Fix an intermittent CRC fail at the connection between smartphone and terminal

Download 📦

V1.1

  • Add BleTerminal.getLockState() to indicate vehicle’s lock state
  • Add BleAction.GET_LOCK_STATE action to get the latest vehicle’s lock state

Download 📦

V1.0

  • Initial release

Download 📦