CoreBluetooth scan response contains old data set of previous discovery result

Originator:BilalReffas
Number:rdar://FB8990568 Date Originated:2021-02-04
Status:Open Resolved:No
Product:CoreBluetooth Product Version:iOS 14.3
Classification:Bug Reproducible:
 
When discovering our peripheral the scan response of this delegate contains an old data set of the previous discovery process. We did some BLE package sniffing on our end to make sure this is not an issue on the peripheral level. 
As this can only be reproduced on iOS and not on Android it could be an issue on your end. 
```
public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi RSSI: NSNumber)
``` 
As CBCentralManagerScanOptionAllowDuplicatesKey is default set to false it could be either the case that iOS is caching the result or the filtering of CoreBluetooth contains a bug. 

We have a workaround where we set CBCentralManagerScanOptionAllowDuplicatesKey too true, after we drop the first 5 results to make sure we are getting the latest result. 

Central: iPhone 11 Pro / iOS 14.3
Peripheral: nRF52840 Dongle

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!