Make sure to add a restoration identifier to the CBCentralManager's options dict when you instantiate it e.g.
let options = [CBCentralManagerOptionRestoreIdentifierKey : "com.xy.XYCentralManager"]
centralManager = CBCentralManager(delegate: self, queue: nil, options:options)
Then on an iOS 11 device power off the device while it's making a bluetooth connection from your app. When you relaunch -[CBCentralManager willRestoreState:] should be invoked with the active peripherals and services passed in the incoming dictionary.