Skip to content

React-Native library to query and manage bluetooth state of the device (iOS and Android)

License

Notifications You must be signed in to change notification settings

innovactorybv/react-native-bluetooth-status

 
 

Repository files navigation

react-native-bluetooth-status

React Native library to monitor and manage bluetooth state. Monitoring the bluetooth state works cross-plaform (iOS & Android).

V2 introduced new Hooks API!

Installation

$ npm install react-native-bluetooth-status --save

On RN 0.60+ with autolinking run pod install in your ios/ folder.

RN < 0.60

$ react-native link react-native-bluetooth-status

Manual installation on older RN versions

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-bluetooth-status and add RNBluetoothManager.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNBluetoothManager.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainApplication.java

1.1 Add import com.solinor.bluetoothstatus.RNBluetoothManagerPackage; to the imports at the top of the file

1.2 Add new RNBluetoothManagerPackage() to the list returned by the getPackages() method in that file
Note: If you add it to the end of the list it should look something like this:

 @Override
 protected List<ReactPackage> getPackages() {
   return Arrays.<ReactPackage>asList(
       new MainReactPackage(),         // Note the addtional comma needed for the original last item in the list
       new RNBluetoothManagerPackage() // For https://github.com/solinor/react-native-bluetooth-status
   );
 }
  1. Append the following lines to android/settings.gradle:
    include ':react-native-bluetooth-status'
    project(':react-native-bluetooth-status').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-bluetooth-status/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-bluetooth-status')
    
## Usage

Hooks API:

import { useBluetoothStatus } from 'react-native-bluetooth-status';

...

const [btStatus, btGranted, isPending, setBluetooth] = useBluetoothStatus();
return (
  {!isPending && <Text>{btStatus ? 'On' : 'Off'}</Text>}
  {!isPending && <Text>{btGranted ? 'Granted' : 'Denied'}</Text>}
  <Button title="Toggle BT" onPress={() => setBluetooth(!btStatus)} />
)
Variable Description
btStatus Current bluetooth status. Starts undefined, but updated asynchronously right away. Updated automatically if status changes.
btGranted Current bluetooth permission granted status. Starts undefined, but updated asynchronously right away. Updated automatically if status changes.
isPending Starts at true and after getting first Bluetooth status, is set to false. Helps to know when btStatus is not undefined anymore.
setBluetooth Function to set the bluetooth status. On android it can be toggled on / off using a boolean parameter. On iOS this method can be used to prompt for permission and/or enable bluetooth.

Imperative API

import { BluetoothStatus } from 'react-native-bluetooth-status';

...

async getBluetoothState() {
  const isEnabled = await BluetoothStatus.state();
}

For further usage examples, see the example project using this library.

Method Description
state Returns a promise, which will return a boolean value, true if bluetooth is available, false if unavailable.
addListener Takes function parameter, which will be run when BT status changes, with the new BT on/off status (true / false).
removeListener Removes listener.
enable Function to set the bluetooth status. On android it can be toggled on / off using a boolean parameter. On iOS this method can be used to prompt for permission and/or enable bluetooth.
disable Android only Disables bluetooth, same end result as calling enable(false).

About

React-Native library to query and manage bluetooth state of the device (iOS and Android)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 34.3%
  • Objective-C 31.0%
  • JavaScript 26.8%
  • Ruby 7.9%