2016-10-26 3 views
0

Я работаю над приложением BLE, которое требует от меня подключения BT-устройства к iPhone-приложению.Как фильтровать устройства BLE, прежде чем показывать их пользователю?

Я могу сканировать все устройства, и пользователь может подключить его тоже. Но вопрос в том, как отфильтровать устройства после сканирования (и до его показания для подключения), может быть количество BT-устройств (на всякий случай), и пользователь может подключиться к другому BT-устройству из нашего приложения, однако он будет не использовать, но все же для целостности приложения, я хочу показать только те устройства, которые я тоже хочу. Я знаю, что мы можем отфильтровывать устройства, передавая UUID, но подождите, эти устройства могут быть любым устройством по всему миру, поэтому я просто не могу его исправить.

Любое предложение?

+0

Обычно вы сканируете только те устройства, которые рекламируют интересующую вас услугу, и отображают их только. – Paulw11

ответ

0

Вы можете использовать "Proximity" устройств BLE, чтобы получить диапазон. Я использовал тот же сценарий для своих устройств BLE. Вы можете получить близость устройств BLE и сообщить пользователю, какое устройство является самым близким.

Поместив устройство ближе к вашему мобильному устройству (при условии, что приложение создано для мобильного приложения). Вы можете подключиться к ближайшему устройству BLE и настроить его. Надеюсь, поможет.

+0

все в порядке, но как узнать, какое устройство мне нужно подключить? Если я поставлю три мобильных устройства BT рядом с мобильным телефоном, он покажет мне все устройства, но я хочу показать только те устройства, которые мне нужны. – Hemang

+0

@Hemang Вы можете поместить уникальную строку или номер в 'adsData', вот что мы сделали, при желании вы можете сканировать с помощью служб, а затем создать уникальный UUID службы. – ColdSteel

+0

В общем, вы можете показать самое ближайшее устройство в верхней части списка в приложении. Вы можете упомянуть об этом в своем приложении таким образом, как помощь: ** _ «Пожалуйста, переместите устройство BLE ближе к телефону, чтобы настроить его» _ ** ИЛИ если вы знаете устройства BLE, вы можете пометить их каким-либо ярлыком на TOP, как BLE ID: 1 с наклейкой, а в приложении вы можете показать устройство, которое вы хотите настроить на основе близости. Поэтому пользователь будет знать, какое устройство будет настроено. –

0

Вы можете отфильтровать устройства по MAC-адресу (это часть параметра «BluetoothDevice» ScanResponse). Это полезно, если MAC-адрес содержит организационно уникальный идентификатор (OUI). См. Здесь: http://standards.ieee.org/develop/regauth/tut/eui.pdf для получения дополнительной информации.

Обычно первые три байта содержат OUI, гарантируя тем самым, что вы можете легко отфильтровать все устройства, принадлежащие организации. Поэтому было бы предпочтительным, если бы первые три байта всех ваших BT-устройств были всегда исправлены. В этом случае вы можете фильтровать эти байты и видеть только ваши устройства.

Редактировать: Поскольку на iOS невозможно напрямую получить MAC-адрес через ScanResponseData, вы можете изменить специфическую часть ответа на сканирование, включая MAC-адрес.

+1

В iOS вы не можете получить доступ к MAC-адресу устройства. Только это UUID, и это может измениться, если вы не спали с ним. – Larme

+0

О да, вы правы, извините. Я забыл, что это iOS. Но не хотите ли вы использовать имя устройства для фильтрации? Кроме того, вы можете явно указать MAC-адрес в данных ответа сканирования. – Nebr

+0

Вы можете получить имя, но могут быть дубликаты. Для их дифференциации следует использовать только UUID. – Larme

Смежные вопросы