react-native-ble-qz
Version:
React Native Bluetooth Low Energy library
123 lines (103 loc) • 5.29 kB
Markdown
<p align="center">
<img alt="react-native-ble-plx" src="logo.png" />
</p>
React Native Bluetooth Low Energy library using [RxBluetoothKit](https://github.com/Polidea/RxBluetoothKit) and [RxAndroidBle](https://github.com/Polidea/RxAndroidBle) as it's backend libraries.
This is a specified version.
manufactureData is modified to array
I have add Screen on/off event to this module
Example apps are available in [Google Play](https://play.google.com/store/apps/details?id=com.polidea.sniffator) and [App Store](https://itunes.apple.com/us/app/sniffator/id1147266354?ls=1&mt=8)!
[](https://play.google.com/store/apps/details?id=com.polidea.sniffator) [](https://itunes.apple.com/us/app/sniffator/id1147266354?ls=1&mt=8)
---
[](https://nodei.co/npm/react-native-ble-plx/)
---
## Recent Changes
**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.
## Documentation
Documentation can be found under `./doc` folder.
## Configuration & Installation
**iOS:**
* Add `react-native-ble-plx` to a project as a dependency in `package.json` file.
For example `"react-native-ble-plx": "Polidea/react-native-ble-plx"` will install
latest version from Polidea's Github repository.
* Make sure that you have [Carthage](https://github.com/Carthage/Carthage) installed on your system.
* Execute `npm install` to fetch and install a library.
* Open iOS project located in `./ios` folder.
* Move `BleClient.xcodeproj` located in `.node_modules/react-native-ble-plx/ios`
using drag & drop to `Libraries` folder in your project.
* In general settings of a target add `libBleClient.a` to Linked Frameworks and Libraries.
* In `Build Settings`/`Search Paths`/`Framework search paths` add path: `$(SRCROOT)/../node_modules/react-native-ble-plx/ios/BleClientManager/Carthage/Build/iOS`.
* In `Build Settings`/`Build Options`/`Always Embed Swift Standard Libraries` set to `Yes`.
* In `Build Phases` click on top left button and add `New Run Script Phase`.
* Shell command: `/usr/local/bin/carthage copy-frameworks`
* Input Files:
* `$(SRCROOT)/../node_modules/react-native-ble-plx/ios/BleClientManager/Carthage/Build/iOS/BleClientManager.framework`
* `$(SRCROOT)/../node_modules/react-native-ble-plx/ios/BleClientManager/Carthage/Build/iOS/RxSwift.framework`
* `$(SRCROOT)/../node_modules/react-native-ble-plx/ios/BleClientManager/Carthage/Build/iOS/RxBluetoothKit.framework`
* Minimal supported version of iOS is 8.0
**Android**:
* Add `react-native-ble-plx` to a project as a dependency in `package.json` file.
For example `"react-native-ble-plx": "Polidea/react-native-ble-plx"` will install
latest version from Polidea's Github repository.
* Execute `npm install` to fetch and install a library.
* Open Android project located in `./android` folder.
* In `settings.gradle` add following lines:
```groovy
include ':react-native-ble-plx'
project(':react-native-ble-plx').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-ble-plx/android')
```
* In `build.gradle` of `app` module add following dependency:
```groovy
dependencies {
...
compile project(':react-native-ble-plx')
...
```
* Additionaly make sure that min SDK version is at least 18:
```groovy
android {
...
defaultConfig {
minSdkVersion 18
...
```
* In `MainApplication.getPackages` import and add BleModule package:
```java
import com.polidea.reactnativeble.BlePackage;
...
public class MainApplication extends Application implements ReactApplication {
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new BlePackage()
);
}
```
* In `AndroidManifest.xml` add Bluetooth permissions and update `<uses-sdk/>`:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- Add this line if your application always requires BLE. More info can be found on:
https://developer.android.com/guide/topics/connectivity/bluetooth-le.html#permissions
-->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<uses-sdk
android:minSdkVersion="18"
...
```