Как отмечает Дориан Рой, хорошим базовым подходом является кодирование MAC в специфические данные производителя в рекламном пакете. MAC составляет 6 байтов, поэтому вам, как правило, должно быть место, если вы еще не храните там слишком много. Обычно вы можете сойти с младшими 3 байтами, если все ваши устройства имеют одинаковый OUI (префикс производителя).
Я на самом деле разработал системы, которые просто объявляют последний байт MAC, а затем перепроверяют, подключаясь для получения полного MAC. У вас больше, чем 50% вероятности отсутствия столкновений, пока в одной комнате не будет размещено около 20 рекламных устройств. Если в одной комнате, вероятно, менее 3 устройств, вероятность столкновения составляет менее 2% (но помните, что это означает, что 1 из 50 ситуаций будет иметь столкновение, поэтому вы не можете его игнорировать). Очевидно, что чем больше байтов вы включите, тем лучше.
Существует тонкий угловой корпус с этим дизайном, который может иметь или не иметь значения для вас. Возможно, устройство уже подключено к телефону BLE. Это может произойти из-за другого приложения (например, LightBlue), но также из-за вашего собственного приложения. Скажем, вы подключаетесь к устройству, и тогда ваше приложение умирает, и вы перезапускаетесь. Устройство все еще может быть подключено к системе BLE телефона, и оно не будет рекламироваться. То, как вы обнаруживаете это устройство с помощью retrieveConnectedPeripherals
. Но в этом случае вы никогда не увидите рекламный пакет. Если эта MAC-проверка является однократным событием, то эта ситуация, возможно, не является для вас серьезной проблемой, но стоит кое-что помнить, если клиенты жалуются, что ваше приложение не может найти устройство. (Самое простое решение - перезагрузить устройство и, если это невозможно, перезагрузить телефон.)
Предложение Пола разоблачить ваш MAC с помощью характеристики - это необходимая часть, но она сравнительно медленная и немного сложная на практике, поскольку реклама на нескольких устройствах может быть. Я обычно начинаю с рекламного пакета, если вы можете, и подключаетесь только к наиболее подходящим устройствам, а затем проверяете их характеристики. Подключение дорого. Подключайтесь, только если есть большая вероятность, что вы правы.