Как исправить ошибку «DOMException» в веб-API Bluetooth? - PullRequest
1 голос
/ 01 июня 2019

Я настраиваю сервер Bluetooth LE GATT в Android и хочу использовать Web Bluetooth API в Chrome в качестве клиента GATT, чтобы проверить, правильно ли он работает.На самом деле, это мой первый шаг к созданию FIDO Authenticator в Android позже.

Во-первых, я попытался установить uuid моей службы 0000fffd-0000-1000-8000-00805f9b34fb в моем приложении для Android.Примерно так:

// start gatt server

bluetoothGattServer = bluetoothManager.openGattServer(this, callback);
bluetoothGattServer.addService(
new BluetoothGattService(UUID.fromString("0000fffd-0000-1000-8000-00805f9b34fb"),
BluetoothGattService.SERVICE_TYPE_PRIMARY));

// start advertising
// ...

Затем я выполнил следующий код Javascript в Chrome, чтобы проверить, можно ли установить соединение.

navigator.bluetooth.requestDevice({ 
filters: [{ services: ['0000fffd-0000-1000-8000-00805f9b34fb'] }] })
.then(device => { console.log(device); })
.catch(error => { console.log(error); });

Однако я получил только исключение, как показано ниже

DOMException

Когда я изменил uuid на другой, такой как 62893031-5e68-4a71-94e4-01fb81f16818, в моем коде Android, это сработало!(Я имею в виду, что он мог подключиться к моему телефону, и я мог видеть информацию о моем устройстве в консоли Chrome)

Я не знал, в чем именно проблема.В чем была проблема с моим бывшим uuid?Как я могу отладить его, чтобы узнать причину?

Спасибо за проверку!

1 Ответ

2 голосов
/ 01 июня 2019

Вы можете попробовать

console.log(error.messsage);

вместо

console.log(error);

. Вы увидите

requestDevice (), вызванный с фильтром, содержащим UUID из списка блоков,https://webbluetoothcg.github.io/web-bluetooth/#attacks-on-devices

Проверьте, чтобы узнать причину безопасности.

...