Ways to identify BLE devices
So it seems a pretty common scenario is to have multiple BLE devices that are otherwise identical except for a serial number/ID, and to want to pair to a specific one. From my understanding, there are a couple of options for where to structure this ID: 1) in the MAC address of the device, 2) in the scan response after advertising, 3) in an unencrypted characteristic, 4) in an encrypted characteristic, 5) relying completely on the peripheral UUID assigned by iOS.
1) is impossible on iOS because of the MAC address switching/obfuscation. 4) after iOS 9 forces bonding, so that means if the user is in a room with 5 devices, the user might have to manually unpair 4 of them in the phone's Settings - probably a poor UX. With 5), after a software update/a couple weeks, the relationship between the peripheral and the phone will be in a weird limbo where the app thinks it knows the peripheral's UUID but in reality it's lost forever. There's also no way to concretely identify which device you're connecting to initially with 5).
That just leaves 2) and 3). Is that correct? Is there a standardized preference for one over the other?
Furthermore, can we guarantee that putting the device's ID in an unencrypted characteristic will not force bonding?
iPhone 7, iOS 15