A React Native module to check Bluetooth and Location status on Android and iOS
Add react-native-connectivity-status
module to your project
$ yarn add react-native-connectivity-status
And link it
$ react-native link react-native-connectivity-status
Interactively check Location Services and Bluetooth status
import ConnectivityManager from 'react-native-connectivity-status'
// Check if Location Services are enabled
const locationServicesAvailable = await ConnectivityManager.areLocationServicesEnabled()
// Check Location permission
const locationPermission = await ConnectivityManager.isLocationPermissionGranted()
switch(locationPermission) {
case "Location.Permission.Denied":
// ...
break;
case "Location.Permission.Granted.Always":
// ...
break;
case "Location.Permission.Granted.WhenInUse":
// ...
break;
default:
// ...
}
// Check if Bluetooth is ON
const bluetoothIsOn = await ConnectivityManager.isBluetoothEnabled()
Note: On Android, Location permission state will map on Location.Permission.Denied
and Location.Permission.Granted.Always
only.
Subscribe to updates
import ConnectivityManager from 'react-native-connectivity-status'
const connectivityStatusSubscription = ConnectivityManager.addStatusListener(({ eventType, status }) => {
switch (eventType) {
case 'bluetooth':
console.log(`Bluetooth is ${status ? 'ON' : 'OFF'}`)
break
case 'location':
console.log(`Location Services are ${status ? 'AVAILABLE' : 'NOT available'}`)
break
}
})
...
// Remeber to unsubscribe from connectivity status events
connectivityStatusSubscription.remove()
NOTE: Due to possible app rejection from Apple (caused by illegal usage of private URL Scheme "prefs:root" or "App-Prefs:root"), methods for enabling bluetooth and location services have been removed from this module.
Made with ✨ & ❤️ by Mattia Panzeri and contributors