Why Core Bluetooth state restoration never fires

15 September 2026

This is a placeholder showing the article format. Replace the body, keep the front matter shape.

Restoration is the single most misunderstood part of Core Bluetooth. Teams set CBCentralManagerOptionRestoreIdentifierKey, see nothing happen, and conclude the feature is broken.

What the option actually does

Setting the identifier registers your central manager with the system. It does not by itself guarantee your process will be relaunched.

let manager = CBCentralManager(
    delegate: self,
    queue: nil,
    options: [CBCentralManagerOptionRestoreIdentifierKey: "com.example.central"]
)

The conditions nobody lists together

If the user force-quits the app, restoration does not happen and will not happen again until the user launches it manually. This is deliberate.

How to tell which condition you are failing

Capture a sysdiagnose while reproducing and look for the relevant subsystem. The logs distinguish these cases clearly, which is more than can be said for the API.