如何在 Chrome 移动浏览器中检查增强现实权限 granted/blocked?

How to check if augmented reality permissions granted/blocked in Chrome mobile browser?

问题:

Chrome 浏览器中的 WebXR 需要明确的用户同意(权限)才能进行空间跟踪,但我们遇到了阻止它的用户的问题。因此,为了向遇到此问题的用户提供相关的用户体验(而不是可能发生的其他错误),我们需要检查 Chrome 中的权限(增强现实)是否被授予,如下图所示:

Augmented reality blocked img

我试过的:

虽然'xr'权限描述符名称没有在permissions registry, it is described in WebXR device API specification 14.2中列出。但是下面的代码returns出错了。

navigator.permissions.query({name: 'xr'});

错误(我猜这是预料之中的,因为它不在权限注册表中,我只是认为 Chrome 可能以某种方式扩展了它):

TypeError: Failed to execute 'query' on 'Permissions': The provided value 'xr' is not a valid enum value of type PermissionName.

我也试过'immersive-ar'、'xr-spatial-tracking'等,但都没有成功。 'xr-spatial-tracking' 是一项功能政策,但如果我理解正确,功能政策的目的不是授予权限,而是限制页面上某些元素(例如 iframe)的权限。

WebXR 还使用摄像头,很可能还使用陀螺仪和加速度计,但这些的权限不受“增强现实 allowed/blocked”的影响。我认为这是由于 camera/tracking 部分 运行 本机在设备上而不是在浏览器中(我可能弄错了)。

示例

您可以在 Chrome 浏览器上使用移动设备访问 this three.js example,以在 url 旁边的 tablock 按钮下查看“增强现实 allowed/blocked”权限。

如何检查这些权限是被授予还是被阻止?我不是在问如何提示用户权限请求,权限状态的只读值将是完美的。

谢谢!

您现在可以做的最好的事情是在用户手势期间请求空间跟踪,并在承诺被拒绝时显示 UI。

您可以通过阅读 ParsePermissionDescriptor in the Chromium source. It doesn't support "xr". I have filed this Chromium bug to add it, and this Web Platform Tests issue 查看 Chrome 支持的权限名称集,将其添加到 W3C 的 WebXR 测试套件中。

这是 Chrome 在 API 中支持的内容列表。其中一些可能是实验性的。

  • 加速度计
  • 辅助功能事件
  • 环境光传感器
  • 后台获取
  • 后台同步
  • 相机
  • 剪贴板读取
  • 剪贴板写入
  • 显示-捕捉
  • 字体访问
  • 地理位置
  • 陀螺仪
  • 空闲检测
  • 磁力计
  • 麦克风
  • midi
  • nfc
  • 通知
  • 付款处理程序
  • 周期性背景同步
  • 持久存储
  • 推送(仅限 {userVisible: true})
  • 屏幕唤醒锁定
  • 存储访问
  • 系统唤醒锁
  • window-放置