BLE Device Not Appearing in Scan List on iOS After Name Change

I'm encountering an issue related to BLE device discovery on iOS.

I have a BLE peripheral device that I initially connected to using an iOS device. After this connection, the BLE device's advertised name was programmatically changed by the peripheral. Now, when I try to scan for this device using other iOS devices, it does not appear in the scan results in most apps — including nRF Connect and our own custom BLE app that uses CoreBluetooth.

A few observations:

The device is definitely powered on and advertising (confirmed via Android). The name change is reflected correctly on Android and on the iOS device that originally connected to it. Other iOS devices no longer see the device in their scan list.

BLE devices have 2 names. GAP name and the advertised name.

An iOS device will report the advertised name for accessories it has not connected to. And will report the GAP name afterwards, regardless of the advertised name.

That would be the reason you are seeing a difference between the iOS device that had been connected to it and the ones that have not.

What does "see the device in their scan list" mean. They don't see the device at all, or don't they see the name you thought you would see?

Are you seeing the advertised name which might be different than what you think it is? Is there an advertised name after the change in the advertising packets at all?

Keep in mind that the advertised name will probably in the SCAN_RSP packet, and will be sent to your app in the second didDiscover() callback for the accessory. So make sure you are gathering the data from both callbacks for the same accessory.

BLE Device Not Appearing in Scan List on iOS After Name Change
 
 
Q