Summary
Our app uses CBPeer.identifier in Core Bluetooth to identify BLE peripherals. For the same non-bonded BLE peripheral, we have observed the following behavior:
- On iOS 18,
CBPeer.identifierdid not change across OS updates or device reboots. - On devices updated to iOS 27.0, the
CBPeer.identifierof the same peripheral became a different value after the OS update. - On iOS 27.0, we have also confirmed that
CBPeer.identifierchanges after a device reboot.
API documentation: https://developer.apple.com/documentation/corebluetooth/cbpeer/identifier
We would like to confirm whether this is a specification change in iOS 27 and whether it is intended behavior.
Questions
- Is it intended behavior in iOS 27 that
CBPeer.identifierfor a non-bonded BLE peripheral changes after an OS update or device reboot? - If this is by design, is there any documentation (release notes, technical documents, API reference, etc.) that describes this change?
- Under what conditions can the
CBPeer.identifierof a non-bonded BLE peripheral change? (e.g., OS update, device reboot, resetting Bluetooth settings, reinstalling the app, after a certain period of time, etc.) - If we need to keep identifying the same non-bonded BLE peripheral across reboots and OS updates, what implementation approach do you recommend?
Any information would be greatly appreciated. Thank you.