如何在 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-放置
问题:
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-放置