2013-04-13 9 views
37

Come si fa a richiedere l'accesso alla telecamera/microfono con getUserMedia() dopo essere stato negato una volta?reprompt per autorizzazioni con getUserMedia() dopo il diniego iniziale

Sto lavorando con getUserMedia per accedere alla telecamera dell'utente e inviare i dati su una tela. Quel po 'tutto funziona bene.

Nel test, ho colpito negare una volta. A questo punto in Chrome e Firefox, qualsiasi richiesta successiva con getUserMedia() imposta automaticamente lo stato negato.

Ovviamente non vogliamo annoiare i nostri utenti richiedendo autorizzazioni per telecamera/microfono su ogni caricamento di pagina dopo essere stato negato. Questo è già abbastanza fastidioso con l'API di geolocalizzazione.

Tuttavia, deve esserci un modo per richiederlo di nuovo. Semplicemente perché un utente nega una volta non significa che vuole negare l'accesso alla webcam per tutto il tempo.

Ho letto delle specifiche e ho cercato su Google per un po ', ma non trovo nulla di esplicito riguardo a questo problema.

Modifica: Ulteriori ricerche, sembra che colpendo Deny in Chrome aggiunge il sito corrente a un elenco di blocco. Questo può essere manualmente accessibile tramite chrome: // settings/content. Scorri fino a Media. Gestisci le eccezioni, rimuovi i siti bloccati.

Collegamento a chrome: // impostazioni/contenuto non funziona (nel caso in cui si desidera aggiungere un collegamento utile per consentire alle persone di riattivare le autorizzazioni).

L'intero UX per gestire le autorizzazioni relative a getUserMedia. = (

+1

Grazie per questo.Non sono riuscito a vedere la sezione Media quando si passa direttamente a Impostazioni> Mostra impostazioni avanzate, ma tramite chrome: // impostazioni/contenuto – Teknotica

+0

Negare le richieste successive dopo aver premuto nega una volta, è il comportamento di Chrome, non di Firefox. Solo se selezioni "Disattiva sempre" nel menu a discesa di un sito https, ciò avviene in Firefox. – jib

+1

In Chrome, gli utenti possono fare clic sull'icona della fotocamera nella barra degli indirizzi per annullare un blocco precedente o gestire l'elenco dei blocchi. Non c'è bisogno di scherzare con chrome: // link – jib

risposta

13

Usa HTTPS .Quando l'utente concede il permesso una volta, viene ricordato e Chrome non chiede più l'autorizzazione per quella pagina e si ottiene immediatamente l'accesso al supporto. Ciò non fornisce un modo per forzare la barra dei permessi ancora sull'utente, ma almeno una volta l'utente concede il permesso di continuare a chiedere.

Se l'app è in esecuzione da SSL (https: //), questa autorizzazione essere persistente, ovvero gli utenti non dovranno concedere/negare l'accesso ogni volta

Vedere: http://www.html5rocks.com/en/tutorials/getusermedia/intro/

+1

HTTPs su Firefox non permetteranno questa autorizzazione. –

+1

Ora funziona in firefox, ma l'opzione "Condividi sempre" è un po 'nascosta sotto la freccia del menu a discesa. – xdumaine

+0

"Condividi sempre" è un po 'nascosto in Firefox allo stesso modo "Negare sempre" è. Il problema dell'OP non si verifica in Firefox. – jib

10

La risposta di jeffreyveon contribuirà a ridurre le possibilità che l'utente sceglierà di negare, dal momento che dovrà scegliere solo una volta.

Nel caso in cui faccia clic su Nega, è possibile fornire un messaggio che spiega perché è necessario il permesso e come aggiornare la propria scelta. Ad esempio:

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

È possibile evitare di fare clic su Consenti all'accesso della fotocamera quando la pagina viene caricata. Può essere controllato utilizzando JavaScript –

+0

No non è possibile, e per fortuna !!! Permetterebbe a siti web, app e qualsiasi cosa accedere ai dispositivi multimediali di persone senza il loro consenso, che sarebbe uno stupro sulla privacy ... –

0

Sembra che le cose siano migliorate stamattina. Chrome dalla versione 46.0.2490.71 m non mi chiede più persistentemente le autorizzazioni da localhost.

0

Si prega di notare i seguenti punti.

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.

Problemi correlati