Hi,
We've been developing an peripheral HID over BLE using Nordic's SDK, connecting with iOS, Android, and Windows devices. (Board: nRF52832, SDK 14)
We've noticed an issue only with iOS devices in the discovery stage. On the first discovery, the device appears as "Accessory" on the Bluetooth menu.
After refreshing the menu, the device appears with its intended name, and then cached on the iOS device with the correct name. Subsequent discoveries show the correct name.
We can reproduce the issue by setting a new MAC address on the peripheral, so it is rediscovered as "Accessory" again on first discovery (bypasses the cache).
Right now we're sending the device name only using the srdata field (BLE_ADVDATA_FULL_NAME) since we've used all the 31 bytes in the advdata (using it mostly for UUID info). All the data is passed to the ble_advertising_init() function.
As a test we removed the include_appearance field and used it to send a short name. This seems to work and the iOS device displays the short name immediately on first discovery.
It seems then that iOS devices latch on to the name in the advertising data, and don't refresh it automatically in the Bluetooth menu to include the name sent in the scan response.
Is there a way around this? could we be doing something wrong?
Thanks