Is it possible to be notified when a Bluetooth Device is connected or disconnected from iOS even when my app is in background ?
On Android, I use the ACTION_ACL_CONNECTED
and ACTION_ACL_DISCONNECTED
events. But I cannot find equivalents for iOS.
I found the CBCentralManager
that can be used to monitor Bluetooth events, but my functions aren't called when a bluetooth device is connected/disconnected, only when I enable/disable the bluetooth. Is it an error on my side or is it normal ?
I also found the doc about Audio Route changes, that can also be an idea to detect the bluetooth connections/disconnections. Just check the kind of new route and detect the connected bluetooth devices at that time.
In the doc, I also found NSNotification
types like IOBluetoothHostControllerXXX
but nothing is explained about them. Did someone already used them ?
Is there something better or am I missing something ?
Ensure that Bluetooth is enabled on your iPhone (Settings > Bluetooth). Also, ensure that your Bluetooth accessory is turned on and in pairing mode. You may need to review your Bluetooth accessory documentation for help if needed. Ensure that Airplane Mode is not enabled.
There may be too many apps running in the background of the device the Bluetooth is attempting to pair with. Certain applications cause interference with the connection, and some devices are limited in the number of applications that can run concurrently. If in doubt, check with the headset manufacturer.
Select the device which you want to disconnect from the list. In the device dialog box, switch the Connection switch to off, or to remove the device from the Devices list, click Remove Device.
You cannot receive notifications about the connection and disconnection of Bluetooth peripherals generally. You can get connection and disconnection events for BLE peripherals that your app connects to.
For example, if your app initiates a connection to a heart rate sensor then you will get a call to your CBCentralManagerDelegate
connection function when the connection succeeds. If that device subsequently is switched off or goes out of range then you will get a call to the disconnection delegate method.
If some other app initiates and makes the connection then you will not get a callback.
As you mentioned, you can monitor audio route changes to infer that a Bluetooth audio device has been connected/disconnected, but this will also fire when headphones are plugged in.
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