2013-04-13 3 views
37

Как мы можем запросить доступ камеры/микрофона с помощью getUserMedia() после отказа?reprompt для разрешений с помощью getUserMedia() после первоначального отказа

Я работаю с getUserMedia, чтобы получить доступ к камере пользователя и передать данные на холст. Этот бит работает отлично.

При тестировании я ударил один раз. На этом этапе в Chrome и Firefox любые последующие запросы с getUserMedia() по умолчанию будут отменены.

Мы, очевидно, не хотим раздражать всех наших пользователей, запрашивая разрешения для камеры/микрофона при каждой загрузке страницы после отказа. Это уже достаточно раздражает с geolocation api.

Однако должен быть способ запросить его еще раз. Просто потому, что пользователь ударил один раз, это не означает, что они хотят отрицать доступ к веб-камерам на все время.

Я читал о спекуляции и поиске по всему миру, но я не нашел ничего конкретного в этой проблеме.

Редактировать: Дальнейшие исследования, кажется, что нажатие кнопки «Запретить» в Chrome добавляет текущий сайт в список блоков. К этому можно обращаться вручную через chrome: // settings/content. Перейдите к Media. Управление исключениями, удалите заблокированные сайты (сайты).

Ссылка на chrome: // настройки/содержимое не работает (в случае, если мы хотим добавить полезную ссылку, чтобы люди могли повторно разрешать разрешения).

Весь UX для разрешения разрешений вокруг getUserMedia воняет. = (

+1

Спасибо за это.Я не мог видеть раздел «Медиа» при прямом доступе через «Настройки»> «Показать дополнительные параметры», но через «Хром: // настройки/контент» – Teknotica

+0

Отказ в последующих запросах после однократного отказа от работы - это поведение Chrome, а не Firefox. Только если вы выберете «Всегда отрицать» в раскрывающемся списке на сайте https, это произойдет в Firefox. – jib

+1

В Chrome пользователи могут щелкнуть значок камеры в строке url, чтобы отменить предыдущий блок или управлять списком блоков. Не нужно возиться с хром: // ссылки – jib

ответ

13

Использование HTTPS. Когда пользователь дает разрешение один раз, он запоминается, и Chrome не запрашивает разрешения на эту страницу еще раз, и вы сразу получаете доступ к медиа. Это не дает вам возможность принудительно активировать панель разрешений на пользователя еще раз, но по крайней мере гарантирует, что вы не должны постоянно спрашивать за это, как только пользователь дает разрешение раз

Если ваше приложение работает с SSL (https: //)., это разрешение будет постоянным, то есть пользователям не придется предоставлять/запрещать доступ каждый раз.

См. http://www.html5rocks.com/en/tutorials/getusermedia/intro/

+1

HTTP-файлы на Firefox не будут сохраняться в этом разрешении. –

+1

Теперь это работает в firefox, но опция «Всегда делиться» немного скрыта под стрелкой вниз. – xdumaine

+0

«Всегда делиться» немного спрятан в Firefox так же, как и «Всегда отрицать». Проблема с OP не происходит в Firefox. – jib

10

Ответ jeffreyveon поможет уменьшить вероятность того, что ваш пользователь выберет отрицание, так как ей нужно будет только один раз выбрать.

В случае, если она нажимает кнопку «Отказать», вы можете предоставить сообщение, объясняющее, почему вам нужно разрешение и как обновить ее выбор. Например:

navigator.getUserMedia (
    // constraints 
    { 
     video: true, 
     audio: true 
    }, 

    // successCallback 
    function(localMediaStream) { 
     var video = document.querySelector('video'); 
     video.src = window.URL.createObjectURL(localMediaStream); 
     video.onloadedmetadata = function(e) { 
     // Do something with the video here. 
     }; 
    }, 

    // errorCallback 
    function(err) { 
    if(err === PERMISSION_DENIED) { 
     // Explain why you need permission and how to update the permission setting 
    } 
    } 
); 
+0

Могу ли я избегать щелчка по разрешению доступа камеры при загрузке страницы. Можно ли управлять с помощью JavaScript –

+0

Нет, вы не можете, и к счастью !!! Это позволит веб-сайтам, приложениям и тому подобное получать доступ к медиа-устройствам людей без их согласия, что было бы изнасилованием в частной жизни ... –

0

Похоже, что сегодня эти вещи оживились. Chrome начиная с версии 46.0.2490.71 м больше не запрашивает у меня правдоподобные разрешения от localhost.

0

Обратите внимание на приведенные ниже пункты.

1. Localhost: In Localhost Chrome Browser asking permission only one time and Firefox every pageload.

2. HTTPS: Both Browsers Chrome and Firefox asking permission only one time.

 Смежные вопросы

  • Нет связанных вопросов^_^