didDisconnectPeripheral вызывается сам по себе

У меня есть приложение, которое должно использовать CoreBluetooth для подключения к различным устройствам одновременно. Моя проблема здесь в том, что происходят неожиданные отключения. Однажды я подключился к любому периферийному устройству

func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {

вызывается сам по себе, что означает, что устройство отключено. Я хожу по документации, но ничего полезного не нашел. Я знаю, что BLE может быть один ко многим, так откуда эта проблема? Я проверяю ответы в iOS BLE периферийные устройства продолжают отключаться сразу после вызова DiscoverServices, и я уже храню CBPeripherals в массиве, но проблема все еще существует.

пример выводов я получил

Connect to <CBPeripheral: 0x15e85a80, identifier = 1BD21078-B2B7-1EE9-5BDC-324DEC7A1BD6, name = Mac mini, state = connected>

Connect to <CBPeripheral: 0x15d83b20, identifier = 6BA160A7-55E7-501D-F195-437CDCD2B558, name = Mac mini, state = connected>

Disconnect from <CBPeripheral: 0x15e85a80, identifier = 1BD21078-B2B7-1EE9-5BDC-324DEC7A1BD6, name = Mac mini, state = disconnected> Ошибка домена =CBErrorDomain Code=6 "Время соединения неожиданно истекло." UserInfo={NSLocalizedDescription= Время соединения неожиданно истекло.}

2 ответа

Есть несколько разных причин, по которым ссылка отключается. Любая из сторон инициирует процедуру отключения. Ошибка 6 "Время соединения неожиданно истекло" означает, что канал Bluetooth потерял соединение на уровне радиосвязи, например, из-за выхода за пределы диапазона или другого рода помех.

После долгих поисков я обнаружил, что проблема связана с подключением к нескольким устройствам. https://spin.atomicobject.com/2016/01/20/multiple-ble-devices-in-ios/

Другие вопросы по тегам