CoreBluetooth устанавливает периферийное соединение после завершения работы приложения - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть приложение для iOS, которое действует как central и подключается к внешнему peripheral через CoreBluetooth.

После подключения к 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])

Что я делаю не так?

Спасибо большое!

1 Ответ

0 голосов
/ 23 ноября 2018

Попробуйте с кодом ниже

func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
        let connectedperipherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral]
        if let peripheral = connectedperipherals?.first {
            central.connect(peripheral, options: nil)
        }
    }
...