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/