Is there an API via which I can tell if the Apple device (iPad/iPod/iPhone) that my App is running on supports Bluetooth Low Energy (BTLE).
There are two types of Bluetooth in Apple devices, Bluetooth Classic and Bluetooth Low Energy (BLE).
This allows Android apps to communicate with BLE devices that have low power requirements, such as proximity sensors, heart rate monitors, fitness devices, and so on. To check if your device support Bluetooth Low Energy programmically, check (getPackageManager(). hasSystemFeature(PackageManager. FEATURE_BLUETOOTH_LE)).
Apple supports the use of Bluetooth Low Energy (LE) hearing aids. Apps don't have control over routing to these devices. Instead, the system automatically decides when routing to Bluetooth LE is appropriate.
Assuming you have an iOS5 or iOS6 device and that you have a CBCentralManager object, you can check its CBCentralManagerState with the following:
switch ([_manager state])
{
case CBCentralManagerStateUnsupported:
state = @"This device does not support Bluetooth Low Energy.";
break;
case CBCentralManagerStateUnauthorized:
state = @"This app is not authorized to use Bluetooth Low Energy.";
break;
case CBCentralManagerStatePoweredOff:
state = @"Bluetooth on this device is currently powered off.";
break;
case CBCentralManagerStateResetting:
state = @"The BLE Manager is resetting; a state update is pending.";
break;
case CBCentralManagerStatePoweredOn:
state = @"Bluetooth LE is turned on and ready for communication.";
break;
case CBCentralManagerStateUnknown:
state = @"The state of the BLE Manager is unknown.";
break;
default:
state = @"The state of the BLE Manager is unknown.";
}
You'll want to watch for centralManagerDidUpdateState:central
delegate updates as well, then take the appropriate action in your app.
Another option is to check whether the device supports iBeacons. This is because the device must support Bluetooth LE (i.e. Bluetooth 4) in order to find an iBeacon. Just import CoreLocation and use the following:
Swift:
if (CLLocationManager.isMonitoringAvailable(for: CLBeaconRegion.self)){
print("Bluetooth LE is supported")
}
Objective C:
if ([CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]]){
NSLog(@"Bluetooth LE is supported");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With