Как исправить ошибку "DOMException" в веб-API Bluetooth?
Я настраиваю сервер 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 ответ
Ты можешь попробовать
console.log(error.messsage);
вместо
console.log(error);
Ты увидишь
Метод requestDevice() вызывается с помощью фильтра, содержащего UUID в блок-листе. https://webbluetoothcg.github.io/web-bluetooth/
Проверьте это, чтобы увидеть причину безопасности.