Angular 带有蓝牙设备检测器的应用

Angular app with bluetooth device detector

我正在构建一个网络应用程序(运行 在移动浏览器上,而不是移动应用程序),目的是能够检测附近的蓝牙设备,以便用户可以为他们的时钟 in/out出勤率

我有一个工作代码 https://stackblitz.com/edit/bluetooth-3ibcww and has to run in https://bluetooth-3ibcww.stackblitz.io/ 可以避免 CROS 错误。 有没有办法避免“提示”?我需要模拟一个流程,用户点击“注册考勤”按钮,后端将扫描附近的蓝牙设备并识别特定的“ATTENDANCE_DETECTOR”蓝牙,以证明工作人员就在附近 office/factory。 这是工作代码

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()

无法避免提示。要求用户 select 设备才能与网站通信是此 API 的安全和隐私模型的一部分。如果允许该站点在未经用户许可的情况下扫描和检测设备,则这些设备可能会被用于多种恶意目的,例如秘密跟踪用户的位置。

如果您传递 --enable-experimental-web-platform-features 标志或在 chrome://flags/#enable-experimental-web-platform-features 启用它,Chromium 中有一个 draft specification 用于特定于蓝牙扫描的 API 和原型实现。按照目前的原型,此 API 会显示一个提示,向用户显示网站在授予网站访问权限之前可以在他们周围发现的设备类型。这项工作仍处于开发阶段,尚无使此功能普遍可用的时间表。