Sprawdzone metody dotyczące uprawnień internetowych

Prośby o przyznanie uprawnień to główny mechanizm w internecie, który chroni zaawansowane funkcje przed potencjalnym zagrożeniem dla prywatności i bezpieczeństwa użytkowników. Poprzez wyświetlanie promptów dotyczących uprawnień przeglądarki starają się zapewnić, aby użytkownik zezwalał stronie internetowej na dostęp do danej funkcji. Prośby o uprawnienia są używane w przypadku wielu interfejsów API, w tym interfejsów do przechwytywania multimediów (aparatu i mikrofonu), geolokalizacji, dostępu do pamięci, MIDI i powiadomień (więcej informacji znajdziesz w dokumentacji interfejsu Permissions API na stronie MDN).

W tym przewodniku przedstawiamy sprawdzone metody wyświetlania użytkownikom próśb o przyznanie uprawnień na podstawie statystyk dotyczących korzystania z Chrome i badań dotyczących użytkowników. Dzięki stosowaniu tych sprawdzonych metod użytkownicy powinni otrzymywać mniej niepotrzebnych promptów, co oznacza, że deweloperzy będą podejmować mniej decyzji o blokowaniu. Na końcu artykułu znajdziesz wzorce kodu do pracy z interfejsami API wymagającymi uprawnień oraz sprawdzone metody pomagające użytkownikom w przywróceniu zablokowanego stanu.

Sprawdzone metody dotyczące promptów

Prośbę o zgodę należy kierować do użytkownika po jego interakcji, gdy może on zrozumieć, dlaczego prosisz o zgodę i jakie korzyści może odnieść dzięki jej udzieleniu. W miarę możliwości należy umożliwić użytkownikom korzystanie z alternatywnych sposobów realizacji tej samej funkcji. Zgodnie z ogólnymi wytycznymi rzadsze proszenia o uprawnienia i staranne wybieranie momentów, w których prosisz o nie, zmniejsza ryzyko, że użytkownicy trafią do stanu zablokowania, z którego trudno się wydostać. Poniższe sprawdzone metody zawierają więcej informacji o każdej z tych sugestii.

Nigdy nie proś o to podczas wczytywania strony lub bez interakcji użytkownika.

Proszenie użytkowników o zgodę podczas wczytywania strony jest równoznaczne z proszeniem klienta o poufne informacje podczas wizyty w sklepie stacjonarnym. Wyświetlanie prośby o udzielenie uprawnień (być może w ramach kilku innych próśb o subskrypcję newslettera i zgodę na używanie plików cookie) może być bardzo nieprzyjemne. Użytkownicy nie będą wiedzieć, dlaczego otrzymują takie pytanie i jakie korzyści z tego będą mieli.

Nawet jeśli aplikacja internetowa nie może działać bez dostępu do określonej funkcji, powinnaś dać użytkownikom możliwość zrozumienia, dlaczego jest ona potrzebna. Możesz to zrobić, na przykład poprzedzając prośbę o uprawnienia własnym komunikatem, który wyjaśnia, dlaczego są one potrzebne, i daje użytkownikom wybór (np. podając alternatywne sposoby uzyskania tej samej funkcjonalności). Jeśli nie możesz wymyślić lepszego momentu na poproszenie o uprawnienia niż podczas wczytywania strony, w tym przewodniku znajdziesz kilka przykładów.

Inną niekorzystną sytuacją jest proszenie o pozwolenie bez wcześniejszej interakcji z użytkownikiem (zwanej też przelotną aktywacją użytkownika). Telemetria Chrome pokazuje, że 77% prośby o uprawnienia w Chrome na komputery jest wyświetlanych bez takiego bardzo podstawowego sygnału o zamierze użytkownika, w konsekwencji tylko 12% takich próśb jest zezwalanie. Po interakcji z użytkownikiem współczynniki dopuszczenia wzrastają do 30%. Proś o pozwolenie tylko wtedy, gdy użytkownik w jakimś stopniu wejdzie w interakcję ze stroną.

Pytaj tylko wtedy, gdy użytkownicy mogą zrozumieć, dlaczego to robisz

Decyzje dotyczące uprawnień często dotyczą prywatności. Zgodnie z ramami integralności kontekstowej wiemy, że decyzje dotyczące prywatności są bardzo kontekstowe. Kluczowym aspektem jest zrozumienie, dlaczego dostęp jest potrzebny. Dlatego powinieneś poprosić o możliwości, które są Ci potrzebne do zapewnienia użytkownikom wartości (i w przypadku których użytkownicy prawdopodobnie zgodzą się, że rzeczywiście uzyskają wartość). Dodatkowo prośbę o pozwolenie należy kierować w momencie, gdy użytkownikowi jest jasne, dlaczego dana funkcja jest przydatna. Celem jest ułatwienie użytkownikom zrozumienia kontekstu użycia.

Z naszych badań dotyczących użytkowników wynika, że użytkownicy znacznie częściej zezwalają na dostęp, gdy rozumieją, dlaczego witryna prosi o dostęp, i widzą korzyści. Zauważyliśmy też, że użytkownicy chcą najpierw zapoznać się z nieznaną stroną, aby lepiej zrozumieć, jaką wartość mogą uzyskać w zamian za przyznanie dostępu. W tym czasie często ignorują one prośby o zgodę. W przypadku jednorazowych zezwoleń mogą one zezwolić na jedną wizytę. Aplikacja musi obsługiwać te zachowania.

W miarę możliwości zapewnij alternatywne sposoby realizacji tej samej funkcji.

Wyniki niektórych funkcji mogą nie być przydatne dla użytkowników. Na przykład geolokalizacja urządzenia stacjonarnego bez czujnika GPS może zwrócić niewłaściwą lokalizację, ponieważ użytkownik jest połączony z siecią VPN. Inni użytkownicy mogą nie chcieć udostępniać dostępu do schowka, ponieważ wolą zachować kontrolę i uruchamiać te zdarzenia ręcznie za pomocą kombinacji klawiszy. W takich sytuacjach ważne jest zapewnienie alternatywnych sposobów osiągnięcia tych samych wyników. Jeśli na przykład prosisz o dostęp do lokalizacji, użyj pola tekstowego, w którym użytkownicy mogą wpisać kod pocztowy lub adres. W przypadku schowka upewnij się, że elementy do skopiowania można też zaznaczyć i skopiować za pomocą kombinacji klawiszy lub menu kontekstowego. W przypadku powiadomień oferuj użytkownikom wysyłanie e-maili zamiast powiadomień push.

Przydatnym wzorcem jest użycie alternatywnego interfejsu użytkownika jako wyjaśnienia, dlaczego dostęp może być korzystny. Użytkownicy, którzy obok przycisku wywołującego interfejs API geolokalizacji zobaczą opcję wprowadzenia lokalizacji, będą mieli poczucie kontroli nad tym, co się stanie, ponieważ będą wiedzieć, że mogą też po prostu wpisać swój adres. Podobnie, jeśli użytkownik ma do wyboru otrzymywanie powiadomień przez powiadomienia push lub e-maila albo dołączanie do spotkania bez zezwalania na dostęp do kamery i mikrofonu, łatwiej mu zrozumieć, jakie kompromisy musi podjąć.

Nie pozwól, aby Twoje konto zostało zablokowane, ponieważ trudno jest je odblokować.

Gdy użytkownik zdecyduje się na trwałe zablokowanie dostępu do funkcji wymagającej zgody, przeglądarki będą respektować tę decyzję. Jeśli można by było wielokrotnie wyświetlać prośby o dostęp, złośliwe witryny mogłyby bombardować użytkowników tymi prośbami. Dlatego przywrócenie zablokowanej funkcji wymaga od użytkownika świadomego działania. Dlatego unikaj proszenia użytkowników o pozwolenie w sytuacjach, w których wielu użytkowników prawdopodobnie nie zezwoli na dostęp.

Najczęstszym sposobem jest użycie tzw. promptu wstępnego, w którym wyjaśniasz użytkownikom, co się zaraz stanie i dlaczego aplikacja potrzebuje uprawnień, o które prosisz. Prośbę o udzielenie uprawnień w przeglądarce należy wyświetlać tylko wtedy, gdy użytkownicy zareagują na prośbę wstępną. W niektórych sytuacjach użytkownicy mogą potrzebować pomocy w odzyskaniu danych. Więcej informacji znajdziesz w sekcji Pomaganie użytkownikom w przywróceniu dostępu po zablokowaniu.

Zwracaj uwagę na treści innych firm

Pamiętaj, że prośby o uprawnienia mogą pochodzić z nieoczekiwanego źródła. Jeśli w swojej witrynie używasz skryptów innych firm, mogą one wywoływać prośby o zgodę, których nie chcesz wyświetlać. Może to wpływać na komfort korzystania z Twojej witryny, zwłaszcza jeśli takie prompty nie są zgodne ze sprawdzonymi metodami. Aby zachować kontrolę nad wrażeniami użytkowników, dokładnie przeczytaj dokumentację bibliotek i skryptów innych firm, które dodajesz do własnego kodu.

Kiedy poprosić o zgodę

Oto kilka przykładów sytuacji, w których warto poprosić o pozwolenie, stosując sprawdzone metody:

  • Gdy użytkownik kliknie przycisk „Użyj mojej lokalizacji” obok pola formularza służącego do ręcznego wpisywania adresu.
  • Po tym, jak użytkownik subskrybuje kanał wideo lub posty i kliknie przycisk potwierdzający w oknie informującym, że aktualizacje mogą być dostarczane w postaci e-maili lub powiadomień na telefon lub komputer.
  • Gdy użytkownik dotrze na stronę, która przygotowuje go do dołączenia do rozmowy wideo, i potwierdzi, że chce być widziany i słyszany w ramach wstępnego promptu (patrz studium przypadku z Google Meet).

Wzorce kodu dotyczące prośby o uprawnienia

Uprawnienia do korzystania z interfejsu API uzyskuje się na różne sposoby, w zależności od interfejsu API. Niektóre interfejsy API (zwykle starsze) korzystają z modelu, w którym przeglądarka automatycznie prosi o pozwolenie przy pierwszym użyciu interfejsu API. Przykładem może być wywołanie interfejsu Geolocation API w przypadku interfejsu navigator.geolocation.getCurrentPosition().

try {
  navigator
.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
  console
.error(error);
}

Inne interfejsy API korzystają z modelu, w którym musisz najpierw poprosić o pozwolenie, używając metody statycznej. Dobrym przykładem jest Notification.requestPermission(), który służy do zezwalania na powiadomienia, lub rzadziej używany DeviceOrientationEvent.requestPermission(), który jest częścią interfejsu Device Orientation Events API. Pamiętaj, że niektóre przeglądarki mogą automatycznie przyznawać uprawnienia do określonych interfejsów API. Na przykład Chrome zawsze zezwala na dostęp do orientacji urządzenia, a Safari wyświetla prompt.

const result = await DeviceOrientationEvent.requestPermission();
console
.log(`The user's decision when prompted to use the Device Orientation
Events API was: ${result}.`);
if (result === 'granted') {
 
/* Use the API. */
}

Jak sprawdzić stan uprawnień

Aby sprawdzić, czy możesz korzystać z danego interfejsu API, użyj metody navigator.permissions.query() z interfejsu API dotyczącego uprawnień.

const result = await navigator.permissions.query({ name: 'geolocation' });
console
.log(`The result of querying for the Geolocation API is:
$
{result.state}.`);
if (result.state === 'granted') {
 
// Use the API.
}

Obsługa przeglądarek

  • Chrome: 43.
  • Edge: 79.
  • Firefox: 46.
  • Safari: 16.

Źródło

Pomoc użytkownikom w przywracaniu dostępu po zablokowaniu

Aby pomóc użytkownikom rozwiązać problemy z dostępem, wykryj, że zablokowali dostęp za pomocą interfejsu API uprawnień, i zaproponuj im przewodnik dotyczący zmiany ustawień. Jeśli na przykład użytkownicy korzystają z elementów interfejsu, które są powiązane z funkcją wymagającą uprawnień, użyj wzorca opisanego w poprzedniej sekcji i otwórz okno rozwiązywania problemów. Dokładne czynności, które należy wykonać, aby zmienić stan uprawnień, różnią się w zależności od przeglądarki. Możesz więc podać odpowiednie opisy na podstawie ciągu znaków klienta użytkownika i najczęściej używanych w Twoim produkcie przeglądarek.

W Chrome użytkownicy powinni otworzyć Ustawienia witryny, klikając ikonę „zegara” po lewej stronie paska adresu. Może on włączyć odpowiednie uprawnienia. W niektórych przypadkach przed skorzystaniem z tej funkcji może być konieczne ponowne załadowanie strony. W takim przypadku u góry okna pojawi się pasek z komunikatem z prośbą o ponowne załadowanie.

Ustawienia witryn w przeglądarce Chrome.

Prośba o ponowne załadowanie po zmianie uprawnień za pomocą ustawień witryny.

Podobne interfejsy do zarządzania uprawnieniami są dostępne w innych przeglądarkach (zobacz, jak to działa w Firefoxie).