Как определить, к какому периферийному устройству BLE следует подключаться, если я знаю mac-адрес этого устройства BLE в iOS? - PullRequest
0 голосов
/ 15 января 2019

В iOS невозможно получить MAC-адрес CBPeripheral объекта. Теперь у меня нет. устройств BLE с разными UUID, но с одинаковым именем периферии. Пользователь должен сначала зарегистрироваться на этом устройстве BLE с помощью команды регистрации на том устройстве BLE, MAC-адрес которого будет получен во время сканирования QR-кода. Но как я могу получить то, на какое устройство пользователь выполняет регистрацию, поскольку в iOS я не получаю MAC-адрес на периферии?

1 Ответ

0 голосов
/ 15 января 2019

Как отмечает Дориан Рой, хорошим базовым подходом является кодирование MAC в специфические данные производителя в рекламном пакете. MAC составляет 6 байтов, поэтому вам, как правило, должно быть место, если вы еще не храните там слишком много. Обычно вы можете сойти с младшими 3 байтами, если все ваши устройства имеют одинаковый OUI (префикс производителя).

Я на самом деле разработал системы, которые просто объявляют последний байт MAC, а затем перепроверяют, подключаясь для получения полного MAC. У вас больше, чем 50% вероятности отсутствия столкновений, пока в одной комнате не будет размещено около 20 рекламных устройств. Если в одной комнате, вероятно, менее 3 устройств, вероятность столкновения составляет менее 2% (но помните, что это означает, что 1 из 50 ситуаций будет иметь столкновение, поэтому вы не можете его игнорировать). Очевидно, что чем больше байтов вы включите, тем лучше.

Существует тонкий угловой корпус с этим дизайном, который может иметь или не иметь значения для вас. Возможно, устройство уже подключено к телефону BLE. Это может произойти из-за другого приложения (например, LightBlue), но также из-за вашего собственного приложения. Скажем, вы подключаетесь к устройству, и тогда ваше приложение умирает, и вы перезапускаетесь. Устройство все еще может быть подключено к системе BLE телефона, и оно не будет рекламироваться. То, как вы обнаруживаете это устройство с помощью retrieveConnectedPeripherals. Но в этом случае вы никогда не увидите рекламный пакет. Если эта MAC-проверка является однократным событием, то эта ситуация, возможно, не является для вас серьезной проблемой, но стоит кое-что помнить, если клиенты жалуются, что ваше приложение не может найти устройство. (Самое простое решение - перезагрузить устройство и, если это невозможно, перезагрузить телефон.)

Предложение Пола разоблачить ваш MAC с помощью характеристики - это необходимая часть, но она сравнительно медленная и немного сложная на практике, поскольку реклама на нескольких устройствах может быть. Я обычно начинаю с рекламного пакета, если вы можете, и подключаетесь только к наиболее подходящим устройствам, а затем проверяете их характеристики. Подключение дорого. Подключайтесь, только если есть большая вероятность, что вы правы.

...