我有一个iOS应用,它充当central
并通过CoreBluetooth连接到外部peripheral
。
连接到peripheral
之后,我对其进行读写数据,然后断开连接。断开连接后,我会尝试再次建立连接,以便下次peripheral
进入advertise
模式时,应用程序将以如下方式连接到它:
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
central.connect(peripheral, options: nil)
// More actions here...
}
当应用位于foreground
/ background
中时,效果很好,但是当terminated
时,它根本不起作用。
我已经用CBCentralManager
定义了CBCentralManagerOptionRestoreIdentifierKey
,就像这样:
self.central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey: Application.bluetoothRestoreIdentifier])
我还实现了willRestoreState
中央委托方法:
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])
我在做什么错了?
非常感谢!
答案 0 :(得分:0)
您可以保存外设的标识符。然后根据标识符连接到外围设备。
答案 1 :(得分:0)
尝试以下代码
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
if let peripheral = connectedperipherals?.first {
central.connect(peripheral, options: nil)
}
}