XRPermissionDescriptor - 用于描述应用程序需要使用的和授权的 WebXR 功能
XRPermissionDescriptor 词典用于描述应用程序需要使用的 WebXR 功能,以及在授予权限的情况下希望使用的功能。WebXR 设备 API 中的用户权限使用权限 API 进行管理。
XRPermissionDescriptor 的 name 必须设置为 xr ,以指示权限 API 正确处理应用于 WebXR 的请求。
属性
除了继承父接口 PermissionDescriptor 的属性外,XRPermissionDescriptor 还提供以下属性。
mode
一个 XRSessionMode 值,指示请求权限的 XR 模式(inline,immersive-vr 或 immersive-ar)。
optionalFeatures
一个包含字符串的数组,每个字符串指定 WebXR 功能的名称,该名称是应用程序所请求的,但不是应用程序运行所必需的。可用功能与 XRSessionInit 使用的功能相同。有关更多信息,请参见 XRSessionInit 中的默认功能。
requiredFeatures
一个包含字符串数组,提供要使用您的应用程序或网站必须获得权限的 WebXR 功能的名称。
实例
下面的实例演示了如何在 immersive-vr(“沉浸式 vr”)环境中对需要 local-floor(“本地楼层”)参考空间的应用程序执行权限请求。
如果权限 API 可用(通过检查是否定义了 navigator.permissions),则其调用其 query() 方法,指定我们已建立的权限描述符 xrPermissionDesc 。
当返回的 promise 解析后,我们将检查返回的状态。如果已授予权限,我们将调用 setupXR() 函数来处理准备使用的 WebXR 环境。如果权限是基于提示的条件条件,则我们调用函数 setupXR() ,该函数将在启用和启动环境之前处理请求权限。对于任何其他返回状态(几乎可以肯定是 “被拒绝”,这是本文撰写时唯一的其他选择),我们什么也不做,因为我们无法使用 WebXR。
如果权限是基于提示的条件,则我们调用 promptAndSetupXR() 函数,该函数将在启用和启动环境之前处理请求权限。对于任何其他返回状态(几乎可以肯定是 denied,这是本文撰写时唯一的其他选择),我们什么也不做,因为我们无法使用 WebXR。
如果权限请求承诺被拒绝,则将处理该错误(当前仅使用 console.log())将其转储到控制台中)。
如果权限 API 不可用,则本实例假定 WebXR 将报告相应的错误,接着尝试使用相同的 setupXR() 函数来启动 WebXR 会话。
let xrPermissionDesc = {
name: "xr",
mode: "immersive-vr",
requiredFeatures: [ "local-floor" ]
};
if (navigator.permissions) {
navigator.permissions.query(xrPermissionDesc).then(({state}) => {
switch(state) {
case "granted":
setupXR();
break;
case "prompt":
promptAndSetupXR();
break;
default:
/* 否则不做任何事情 */
break;
}
.catch(err) {
console.log(err);
}
} else {
setupXR();
}
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| WebXR Device API XRPermissionDescriptor 的定义 |
工作草案 | 初始定义。 |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
mode | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
optionalFeatures | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
requiredFeatures | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
mode | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
optionalFeatures | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
requiredFeatures | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
相关链接
- WebXR 的权限和安全性
XRPermissionStatusnavigator.permissions和WorkerNavigator.permissionsPermissions