Как подключиться к BLE-устройству, которое не рекламирует сервис UUID в приложении iOS - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь подключить модуль ESP32 к своему iPhone через BLE и использую centralManager.scanForPeripherals(withServices: [carServiceCBUUID], options: nil), где let carServiceCBUUID = CBUUID(string: "c0de0001-feed-f00d-c0ff-eeb3d05ebeef"). Я следую учебному пособию по сердечному монитору Рэя Вендерлиха, но поскольку модуль Bluetooth ESP32 не объявляет основной UUID службы, он не обнаружит устройство, когда я выполню scanForPeripherals. В приложении приведен скриншот информации LightBlue на устройстве BLE. Есть ли способ изменить рекламные данные, чтобы я мог рекламировать услугу? Я использую этот код на ESP32 https://thejeshgn.com/2018/06/11/esp32-ble-building-an-echo-service-gatt-server/

снимок экрана подключения LightBlue

1 Ответ

0 голосов
/ 16 ноября 2018

В соответствии с документацией scanForPeripheralsWithServices:options: параметр serviceUUIDs может быть nil - в этом случае

все обнаруженные периферийные устройства возвращаются независимо от их поддерживаемых услуг (не рекомендуется)

Так что, если вы не планируете использовать фоновые режимы для сканирования, когда приложение находится в фоновом режиме, вы можете просто передать nil как serviceUUIDs параметр

...