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 的权限和安全性
XRPermissionStatus
navigator.permissions
和WorkerNavigator.permissions
Permissions