Я пытаюсь сделать вызов API Chrome Bluetooth, и я не получаю успеха через машинописный текст. Я уже пробовал применить файл в html() но тоже безрезультатно. Но если вы скопируете код и вставите его в консоль браузера, код работает отлично :(
Ошибка в консоли (если запустить код в Ts):
DOMException: Must be handling a user gesture to show a permission request.
// Машинопись/ТС:
requestBluetooth() {
(window.navigator as any).bluetooth.requestDevice({ filters: [{ services: [this.PRINT_SERVICE_CODE] }] })
.then(device => {
return device.gatt.connect();
})
.then(server => {
return server.getPrimaryService(this.PRINT_SERVICE_CODE);
})
.then(service => {
return service.getCharacteristic('00002af1-0000-1000-8000-00805f9b34fb');
})
.then((characteristic) => {
this.sendTextData(characteristic);
})
.catch(error => console.log(error));
}
sendTextData(characteristic) {
// Get the bytes for the text
const encoder = new TextEncoder('UTF-8');
const text = encoder.encode('TESTETSETS' + '\u000A\u000D');
return characteristic.writeValue(text)
.then(() => console.log('Write done.'));
}
// Работа в браузере консоли:
const PRINT_SERVICE_CODE = '000018f0-0000-1000-8000-00805f9b34fb';
const sendTextData = (function (characteristic) {
const encoder = new TextEncoder('UTF-8');
const text = encoder.encode('TESTETSETS' + '\u000A\u000D');
return characteristic.writeValue(text)
.then(() => console.log('Write done.'));
})
const request = (function () {
navigator.bluetooth.requestDevice({ filters: [{ services: [PRINT_SERVICE_CODE] }] })
.then(device => {
return device.gatt.connect();
})
.then(server => {
return server.getPrimaryService(PRINT_SERVICE_CODE);
})
.then(service => {
return service.getCharacteristic('00002af1-0000-1000-8000-00805f9b34fb');
})
.then((characteristic) => {
this.sendTextData(characteristic);
})
.catch(error => console.log(error));
})
request();
// Информация о проекте:
Угловой интерфейс командной строки: 6.0.8
Узел: 8.11.3
ОС: линукс х64
Угловой: 6.0.9