应用终止时,CoreBluetooth建立外围设备连接

时间:2018-11-22 15:55:27

标签: ios swift core-bluetooth

我有一个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])

我在做什么错了?

非常感谢!

2 个答案:

答案 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)
        }
    }