Приложение Angular с детектором устройств Bluetooth

Я создаю веб-приложение (запускается в мобильном браузере, а не в мобильном приложении), цель состоит в том, чтобы иметь возможность обнаруживать устройство Bluetooth поблизости, чтобы пользователь мог синхронизировать вход/выход для своей посещаемости.

У меня есть рабочий код https://stackblitz.com/edit/bluetooth-3ibcww и для запуска в https://bluetooth-3ibcww.stackblitz.io/, чтобы избежать ошибки CROS. Есть ли способ избежать подсказки? Мне нужно смоделировать процесс, в котором пользователь нажимает кнопку «Зарегистрировать посещаемость», серверная часть сканирует близлежащие устройства Bluetooth и распознает определенный Bluetooth ATTENDANCE_DETECTOR, чтобы доказать, что работник физически находится поблизости от офиса/фабрики. Вот рабочие коды

let options = {
  acceptAllDevices: true,
  optionalServices: ["battery_service"]
};

navigator.bluetooth
  .requestDevice(options)
  .then(function(device) {
    console.log("Name: " + device.name);
    // Do something with the device.
  })
  .catch(function(error) {
    console.log("Something went wrong. " + error);
  });

я проверил через официальный документ https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth кажется, что есть только один доступный метод requestDevice()


person Weilies    schedule 13.03.2021    source источник


Ответы (1)


Невозможно избежать подсказки. Требование от пользователя выбрать устройство, прежде чем сайт сможет взаимодействовать с ним, является частью модели безопасности и конфиденциальности для этого API. Если бы сайту было разрешено сканировать и обнаруживать устройства без разрешения пользователя, это могло бы использоваться для любой из ряда гнусных целей, таких как тайное отслеживание местоположения пользователя.

Существует черновик спецификации API для сканирования Bluetooth и реализация прототипа, доступная в Chromium. если вы передадите флаг --enable-experimental-web-platform-features или включите его в chrome://flags/#enable-experimental-web-platform-features. В текущем прототипе этот API отображает подсказку, показывающую пользователю, какие типы устройств сайт может обнаружить вокруг них, прежде чем предоставить доступ к сайту. Эта работа все еще находится в стадии разработки, и нет никаких сроков, когда эта функция станет общедоступной.

person Reilly Grant    schedule 16.03.2021
comment
Спасибо. Думаю, тогда я должен попробовать iBeacon. Я сталкиваюсь только с этими технологиями, и их стоит изучить :) - person Weilies; 16.03.2021