**0.9.0** **Breaking changes**: * Use `error.errorCode == BleErrorCode.OperationCancelled` instead of `error.message == 'Cancelled'` * Use `error.errorCode == BleErrorCode.BluetoothManagerDestroyed` instead of `error.message == 'Destroyed'` * Reverted implementation of `monitorCharacteristicForDevice` to properly write to descriptor when last listener is unsubscribed on Android. If you expect to get new notifications as soon as you subscribe for them please use version `0.8` for the time being, as regression is expected. Other: * All API calls return `BleError` instance in case of errors which contains additional fields: * `errorCode` - returns API independent and stable error code (defined in `BleErrorCode`). * `attErrorCode` _(optional)_ - platform independent ATT error code. * `iosErrorCode` _(optional)_ - iOS specific error code. * `androidErrorCode` _(optional)_ - Android specific error code. * `reason` _(optional)_ - platform specific message. * Updated `BleModuleInterface` type to fix flow errors related to usage. * Added `refreshGatt` option to `connectToDevice` function. * Parse short `localName` advertisement data type on Android. * Don't emit state changes when BLE is not supported. * Added `devices` and `connectedDevices` functions. * Fixed iOS issue related to `requiresMainQueueSetup`. * Added `timeout` option to `connectToDevice`. Docs: * Updated dev dependencies to the latest ones. * Added Expo section to README file. * Added About this library section to README file. * Updated Wiki pages **0.8.0** * Fix regression of Base64 encoding on Android platform. When large chunk of Base64 data was sent from Android it contained new lines characters. * Updated RxAndroidBle to version 1.4.3. * Fixed colissions in Characteristic and Service id generation on Android. The collisions had place if multiple devices with the same characteristic/service UUIDs were connected at the same time. * Fixed dropped notifications right after setup on Android. Before there was small window when notification was monitored and listener for it wasn't mounted. * Minor documentation updates. **0.7.0** **Breaking changes**: * Migrate to Swift 4 (now requires XCode 9 or higher) * Fixed spelling mistake `characteristic.isIndictable` is now `characteristic.isIndicatable`. Other: * Fixed potential memory leaks in iOS native module. * Fixed an issue when successive scans could stop emitting scanned devices. * Removed `bash` dependency in postinstall script. * Use `--cache-builds` option only when specific version of carthage is available. * Remove `--no-build` option to be able to reuse prepackages frameworks. * Added option to disable building dynamic frameworks with carthage by setting option in your app's package.json: ```json ... "react-native-ble-plx": { "carthage": false } ... ``` **0.6.5** * Fixed Null Pointer Exception when called `cancelDeviceConnection` on Android. * Updated gradle version to be able to use latest Android Studio. * Added Nullable and Nonnull annotations to Android implementation. **0.6.4** * Fail explicitly when carthage fails on postinstall. * Added `mtu` property for `Device` object which allows you to get current BLE MTU of device. * Added function `requestMTUForDevice` which allows to negotiate BLE MTU of device if it is possible. **0.6.3** * Updated RxBluetoothKit library to version 3.1.1 * Updated RxAndroidBle library to version 1.4.1 * Fixed NullPointerException when calling BLE operations without previous discovery. * iOS emits values in `monitorCharacteristicForDevice` only when no reads are pending for specific characteristic. Previously when characteristic was notified and read operation was completed, characteristic value was received both in `readCharacteristicForDevice` and `monitorCharacteristicForDevice`. Now it will only be received in `readCharacteristicForDevice` promise. **0.6.2** * Updated RxBluetoothKit library to version 3.0.14 to allow building library on XCode 9. * Added new `localName` property to `Device` object, which is set when localName is available in device's advertisement data. * Fixed build process on Windows. * Fixed compatibility with RN 0.47 * Fixed bug when `onDeviceDisconnected` callback was not called on iOS when Bluetooth was turned off on device. * Updated library setup instructions. * Added option to cache native libraries built by Carthage. **0.6.1** * Updated RxAndroidBle library to version 1.3.3 which fixes internal issues which may block execution of operation queue. * Updated dev dependencies to fix latest Flowtype issues. * Fixed bug when `restoreStateFunction` function could be called multiple times on iOS. **0.6.0** * Added basic API to support background mode. When BleManager is constructed you can pass `restoreStateIdentifier` and `restoreStateFunction` to `BleManagerOptions` object to enable support for background mode. More info about usage can be found in documentation. * All subscriptions and promises are properly "Destroyed" when `destory()` function is called. * Fixed bug on Android where notification messages could be duplicated or skipped. * Updated RxAndroidBle to version 1.3 * Updated README file. * Updated library logo **0.5.0** * Added new API for supporting unique Services and Characteristics: * `Characteristic.id`, `Service.id` fields which uniquely identify BLE objects. * All utility functions which don't require UUIDs as arguments are using internally `id` fields and therefore work faster and properly handle services/characteristics with same UUIDs. For example: `characteristic.read()`. * New option to enable native modules' logging system via `bleManager.setLogLevel()` function. * New function to read RSSI for connected devices: `bleManager.readRSSIForDevice()`. * Updated RxBluetoothKit dependency to version 3.0.12 * Updated RxAndroidBle dependency to 1.2.2 * Added tests for JS API. * Better Flow type checking and coverage. * Documentation was moved to `./docs` folder and now is generated by documentation.js. * Small fixes in examples. * Updated installation steps. **0.4.0** * Device ID properties were renamed as they are not UUIDs on Android **(breaking change)**: * `Device.uuid` -> `Device.id` * `Service.deviceUUID` -> `Service.deviceID`, * `Characteristic.deviceUUID` -> `Characteristic.deviceID` * Changed signature of `onDeviceDisconnected`, as Device object is always available. * Updated to Swift 3.0 * Updated to RxAndroidBle 1.1.0 and RxBluetoothKit 3.0.6 * Documentation was moved to `./doc` folder and now is generated by ESDoc. * Fixed `state()` invalid return type. Implemented `state()` and `onStateChange()` for Android. * Added optional parameter to `onStateChange()` function. * Fixed `monitorCharacteristicForDevice()` for Android when characteristic accepts indications only. * Updated `AndroidManifest.xml` configuration.