Как я могу сканировать устройства BLE на Iphone 6, которые не рекламируют имя - PullRequest
0 голосов
/ 30 мая 2018

Мы используем Swift и IOS CBCentralManager.У нас Bluetooth с низким энергопотреблением (двухрежимное устройство)

У рекламного пакета двухрежимного устройства нет имени или сокращенного имени из-за недостатка места.

Когда мы вызываем "scanForPeripherals (withServices: options :) "с UUID службы, который включен в рекламную рамку, мы получаем ответ только в том случае, если у нас также есть краткое имя устройства.

Таким образом, с помощью поля имени мы можем обнаружить устройство.Без поля имени мы не сможем обнаружить устройство.Мы ожидаем возвращения CBPeripheral, очевидно, с именем NIL.

Мы получаем ответ на ранних Iphones, таких как Iphone 5, но более поздние Iphones и Ipads не получают ответ.

Программное обеспечение сторонних производителей, такое как Lightblue, может обнаруживать эти устройства.Это стороннее программное обеспечение обнаруживает правильно каждый раз на каждом тестируемом нами устройстве.

Там должно быть что-то, чего нам не хватает.

1 Ответ

0 голосов
/ 31 мая 2018

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

let CBCentralManagerScanOptionAllowDuplicatesKey: String

Apple должна увидеть дубликат ID (или ноль), если в рекламе нет имени.

Вот яблокинаписать Функция Apple Scan AllowDuplicatesKey

Это должно появляться довольно часто из-за ограничений размера рекламных рамок в BLE.

Я понимаю, почему многие разработчики предпочли не тратить пространство в рекламном кадре размером 32 байта на имя для графического интерфейса, если устройство не предназначено для потребителей.

...