Недавно я разработал APP, который отлично работает с устройствами BLE, я добавил большинство параметров и функций в свой APP. Он может сканировать устройства, показывая список, а затем пользователь может выбрать устройство для подключения. Моя проблема заключается в том, что мой код способен подключаться только к одной BLE; если пользователь хочет подключиться к другим устройствам, он должен отключиться от подключенного устройства. Есть ли какой-либо вариант или метод, который я могу использовать для решения этой проблемы?Подключение к нескольким устройствам Bluetooth LE в Xcode
ответ
Я не знаю о вашем конкретном случае, но я знаю, что можно подключиться к нескольким устройствам BLE, так как я сейчас делаю это в Linux с помощью стека Bluez. Однако аппаратное обеспечение BLE отличается от того, сколько устройств может подключаться, поэтому возможно наличие какого-либо оборудования, которое позволяет только одно соединение. У меня есть один ключ, который позволяет до 3 подключений, а другой - до 7. Когда вы пытаетесь сделать дополнительные подключения, он автоматически отключает одно из других подключений, чтобы создать новый.
Вы должны отправить код, если хотите фактическую помощь, но могу вам сказать, что ваша проблема - это просто проблема с дизайном. Кажется очевидным, что вы не внедрили свои методы CBCentralManager
масштабируемым образом, как для базовых подключений, так и для пользовательского интерфейса. Я могу сказать вам из непосредственного опыта в моих приложениях, что текущий предел Apple составляет 10 Bluetooth Low Energy соединений в любой момент времени (хотя люди могут попытаться заявить разные). Однако, хотя система способна обрабатывать 10, процесс BTServer
(процесс bluetooth от Apple) начинает часто возникать из-за этого множества подключений и сбоев.
Вам нужно переосмыслить, как вы разработали свои варианты классов CBPeripheral
и CBCentralManager
. Убедитесь, что они не привязаны к определенным периферийным устройствам, а только к экземплярам периферийных устройств, с которыми вы можете столкнуться. Внесите некоторые изменения в дизайн, и вы сможете исправить свою проблему.