问题:
Chrome 浏览器中的 WebXR 需要明确的用户同意(权限)才能进行空间跟踪,但我们遇到了阻止它的用户的问题。因此,为了向有此问题的用户提供相关的用户体验(而不是可能发生的其他错误),我们需要检查 Chrome 中的权限(增强现实)是否被授予,如下图所示:
我尝试过的:
尽管“xr”权限描述符名称未在权限注册表中列出,但在WebXR 设备 API 规范 14.2中对其进行了描述。但是,以下代码返回错误。
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 还使用相机和最有可能的陀螺仪和加速度计,但这些权限不受“允许/阻止增强现实”的影响。我认为这是由于相机/跟踪部分在设备上本地运行,而不是在浏览器中运行(我可能弄错了)。
示例:
您可以在 Chrome 浏览器上使用移动设备访问此 three.js 示例,以查看 url 旁边的 tabblock 按钮下的“允许/阻止增强现实”权限。
如何检查这些权限是被授予还是被阻止?我不是在问如何用权限请求提示用户,只是权限状态的只读值会是完美的。
谢谢!