When your peripheral disconnects, the centralManager:didDisconnectPeripheral:error
callback is called. In this callback you can immediately start a connection request to the same peripheral with the connectPeripheral:options:
method. This request will stay active until the connection happens. It doesn't require any user interaction.
iOS: Bluetooth LE peripheral no longer updating after coming back into range
-
21-06-2023 - |
Question
I have written an iOS app that reads data from a TI SensorTag. Following the advice Apple provides in the "Core Bluetooth Programming Guide", I have subscribed to the service characteristic's value by calling the peripheral object's setNotifyValue:forCharacteristic:
method. Periodically, the peripheral calls the peripheral:didUpdateValueForCharacteristic:error:
method to inform me the value of interest has changed, and I read it, as described in the documentation.
When I move the iOS device a certain distance from the SensorTag, the didUpdateValueForCharacteristic
method stops being called (apparently) because the two are "out-of-range". But when I move the devices back "in-range", updating does not resume. Somehow, my "peripheral" object no longer represents the real peripheral device.
What steps can I follow to 1) programmatically "notice" the peripheral is no longer "valid", and 2) re-connect to my device without user intervention?
Thanks!
--Bill
Solution