IOS 8 CoreBluetooth obsolete RSSI methods

So, after reading the CBPeripheralDelegate documentation, it turned out that RSSI and peripheralDidUpdateRSSI:error: are deprecated with iOS 8.

I noticed that the signal strength indicator was no longer updated, so I did some research and found a new method ( [CBPeripheralDelegate peripheral:didReadRSSI:error:] ), which, presumably, will be called asynchronously after calling the readRSSI method. Unfortunately, this method does not seem to be called either, even if I set the parent class as a CBPeripheral delegate.

Has anyone else had issues with iOS 8 CoreBluetooth updates?

+6
ios objective-c ios8 core-bluetooth
source share
4 answers

There is a known issue that has been posted about this in the Apple Developer Forums, in which I also have open radar.

The problem is that the new peripheral:didReadRSSI:error: callback method is never called on iOS 8, especially after the initial connection is made to the peripherals. The only resolution I found was to reset bluetooth on your phone by turning it on / off or restarting the phone.

Here is the link to the open radar that I filed.

UPDATE:

Just tested my example, which displayed this problem in the current release of 8.2, and I no longer see any problems with the new iOS 8 delegate method, which is never called. I mark my radar in accordance with section 8.2.

+9
source share

In iOS 8.1.1, peripheral:didReadRSSI:error: is called only for the peripheral devices to which you are connected. If you just discovered peripherals with verification and then readRSSI , the callback will not be called.

First try connecting to the periphery (via CBCentralManager connectPeripheral:options: , and then call readRSSI .

+5
source share

It runs iOS 8.0.2, but now it is throttled. I send readRSSI every 200 ms and get a response only once per second. It worked great with iOS 7.1.

+1
source share

It works again in iOS 8.0.2!

use [myPeripheral readRSSI];

-one
source share

All Articles