javascript - stop - reprompt para permisos con getUserMedia() después de la denegación inicial
webrtc chat example (4)
La respuesta de jeffreyveon ayudará a reducir la posibilidad de que su usuario elija negar, ya que solo tendrá que elegir una vez.
En caso de que ella haga clic en negar, puede proporcionar un mensaje que explique por qué necesita el permiso y cómo actualizar su elección. Por ejemplo:
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
}
}
);
¿Cómo hacemos para solicitar acceso a la cámara / micrófono con getUserMedia () después de haber sido denegado una vez?
Estoy trabajando con getUserMedia para acceder a la cámara del usuario y canalizar los datos a un lienzo. Ese poco todo funciona bien.
En las pruebas, toco negar una vez. En este momento en Chrome y Firefox, cualquier solicitud posterior con getUserMedia () se establece de forma predeterminada en el estado denegado.
Obviamente, no queremos molestar a nuestros usuarios al solicitar permisos de cámara / micrófono en cada carga de página después de que se rechacen. Eso ya es lo suficientemente molesto con la API de geolocalización.
Sin embargo, tiene que haber una manera de solicitarlo nuevamente. Simplemente porque un usuario acceda a denegar una vez no significa que quiera negar el acceso a la cámara web para siempre.
He estado leyendo sobre las especificaciones y haciendo búsquedas en Google por un tiempo, pero no encuentro nada explícito sobre este problema.
Editar: Investigando más, parece que presionar Denegar en Chrome agrega el sitio actual a una lista de bloqueo. Se puede acceder manualmente a través de chrome: // settings / content. Desplázate a Medios. Administrar excepciones, eliminar los sitios bloqueados.
La vinculación a chrome: // settings / content no funciona (en el caso de que deseemos agregar un enlace útil para que las personas vuelvan a habilitar los permisos).
Todo el UX para tratar con permisos alrededor de getUserMedia apesta. = (
Parece que las cosas se han iluminado esta mañana. Chrome desde la versión 46.0.2490.71 m ya no me pide persistentemente los permisos de localhost.
Tenga en cuenta los puntos a continuación.
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.
Use HTTPS. Cuando el usuario da permiso una vez, se recuerda y Chrome no solicita permiso para esa página nuevamente y usted obtiene acceso a los medios de inmediato. Esto no le proporciona una forma de forzar nuevamente la barra de permisos en el usuario, pero al menos se asegura de que no tenga que seguir solicitándola una vez que el usuario otorga el permiso una vez.
Si su aplicación se ejecuta desde SSL (https: //), este permiso será persistente. Es decir, los usuarios no tendrán que otorgar / negar el acceso cada vez.
Ver: http://www.html5rocks.com/en/tutorials/getusermedia/intro/