Проблема:
WebXR в браузере Chrome требует явного согласия (разрешений) пользователя для пространственного отслеживания, но у нас возникают проблемы с пользователями, которые его блокируют. Поэтому, чтобы предоставить пользователям с этой проблемой соответствующий UX (в отличие от других ошибок, которые могут возникнуть), нам нужно проверить, были ли предоставлены разрешения (дополненная реальность) в Chrome или нет, как показано на изображении ниже:
дополненная реальность заблокирована img
Что я пробовал:
Хотя имя дескриптора разрешений 'xr' не указано в реестре разрешений, оно описано в Спецификация API устройства WebXR 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-space-tracking и т. Д., Но безуспешно. «Xr-space-tracking» - это политика функций, но, если я правильно понимаю, цель политики функций - не предоставлять разрешения, а скорее ограничивать разрешения определенных элементов на вашей странице (например, фреймов).
WebXR также использует камеру и, скорее всего, гироскоп и акселерометр, но разрешения для них не зависят от разрешенной / заблокированной дополненной реальности. Я думаю, это связано с тем, что часть камеры / отслеживания работает изначально на устройстве, а не в браузере (я могу ошибаться).
Пример:
Вы можете посетить этот пример three.js с мобильным устройством в браузере Chrome, чтобы увидеть разрешенное / заблокированное разрешение дополненной реальности под кнопкой блокировки рядом с URL-адресом.
Как я могу проверить, были ли эти разрешения предоставлены или заблокированы? Я не спрашиваю, как побудить пользователя запросить разрешение, просто значение статуса разрешения только для чтения было бы идеально.
Спасибо!