javascript - webkitGetUserMedia din Google Chrome - ce se întâmplă dacă utilizatorul ignoră dialogul?


Deci, modul standard în care navigator.webkitGetUserMedia este folosit este astfel:

function success() {
    console.log('User accepted');
}

function deny() {
    console.log('User rejected');
}

navigator.webkitGetUserMedia({video: true, audio: true}, success, deny);

Site-ul pe care îl dezvolt are absolută nevoie de utilizarea camerei web și a microfonului utilizatorului (de fapt, folosind Flash, dar se pare că acum trece prin acest API), așa că încerc să fac tot posibilul pentru a mă asigura că utilizatorul știe întotdeauna pe ce trebuie să facă clic pentru ca site-ul să funcționeze.

  • Dacă nicio funcție nu este apelată, presupuneți că dialogul este afișat și afișați instrucțiuni utilizatorului.
  • Dacă se apelează refuz, explicați că este necesar accesul la camera web și arătați-le că pot face clic pe pictograma camerei din bara de adrese a Chrome pentru a-și schimba decizia.
  • Desigur, dacă succesul este apelat, atunci utilizatorul a acceptat și continuă normal.

Iată partea surprinzătoare; și ai putea să urmezi exemplul lipind codul Javascript de mai sus pe orice site dorești (în Chrome). Dacă utilizatorul navighează către o pagină nouă, sau reîmprospătează pagina curentă fără a accepta, refuza sau închide meniul derulant, nu va mai vedea un dialog de permisiuni pentru domeniul curent pe durata sesiunii browserului.

Apelarea din nou a navigator.webkitGetUserMedia(...) nu va afișa un dialog de permisiuni, nici nu va apărea pictograma camerei în bara de URL. Consola nici măcar nu înregistrează „Utilizatorul a refuzat”. Mai mult, pentru mulți utilizatori acest meniu derulant este foarte ușor de ignorat accidental. Singura soluție disponibilă este închiderea completă a browserului și redeschiderea acestuia (sau navigarea manuală prin meniuri de setări complicate în care NU vrem să forțăm utilizatorii noștri).

Pot confirma cu cineva aici dacă acest lucru este „cumva” intenționat sau dacă există ceva ce scapă?

Răspuns #1

Se pare că acesta este un bug cunoscut.

Problema 252904: Fereastra pop-up Infobar la permisiunea de microfon/cameră duce la o stare neașteptată a permisiunii; cauzează lipsa irecuperabilă a permisiunii la reîncărcare

În prezent, există două patch-uri în firul de comentarii al acelei erori, așa că cel puțin știți că lucrează pentru a rezolva problema. Din păcate, nu par să existe soluții reale pentru eroare între timp.

Un lucru demn de menționat: dacă închizi fila și apoi redeschizi URL-ul, se pare că aceasta obligă dialogul de permisiuni să apară din nou. Știu că nu e o soluție reală, dar măcar este mai bine decât să închizi întregul browser (ceea ce cred că ai făcut până acum).