Sprawdzone metody dotyczące uprawnień internetowych

Prośby o uprawnienia to główny mechanizm ochrony użytkowników przed zaawansowanymi funkcjami, które mogą być niebezpieczne dla ich prywatności i bezpieczeństwa. Przeglądarki starają się potwierdzić, że użytkownik chce zezwolić na korzystanie z danej funkcji w określonej witrynie. Możesz wdrożyć uprawnienia dla wielu interfejsów API, w tym do przechwytywania multimediów (aparatu i mikrofonu), geolokalizacji, dostępu do pamięci, MIDI i powiadomień.

Podczas wyświetlania użytkownikom próśb o zgodę postępuj zgodnie z tymi wskazówkami, które są oparte na statystykach użytkowania Chrome i badaniach użytkowników. Jeśli użytkownicy będą postępować zgodnie z tymi wskazówkami, będą rzadziej widzieć niepotrzebne prośby, co przełoży się na mniejszą liczbę decyzji o blokowaniu.

Na końcu tego dokumentu znajdziesz wzorce kodu dla interfejsów API wymagających uprawnień oraz informacje o tym, jak pomóc użytkownikom przywrócić dostęp.

Sprawdzone metody dotyczące promptów

Proś o uprawnienia po interakcji użytkownika, gdy będzie on miał kontekst, aby zrozumieć, dlaczego prosisz o dostęp i jakie korzyści przyniesie mu jego przyznanie.

W miarę możliwości udostępniaj alternatywne sposoby wykonania tego samego zadania. Starannie wybierając odpowiedni moment na zadanie pytania, zmniejszasz prawdopodobieństwo, że użytkownicy znajdą się w stanie zablokowania, z którego trudno się wydostać.

Nigdy nie pytaj podczas wczytywania strony ani bez interakcji użytkownika

Prośba o uprawnienia przy wczytywaniu strony jest jak proszenie klienta o informacje poufne, gdy wchodzi on do sklepu stacjonarnego. Wyświetlanie prośby o uprawnienia, być może wśród kilku innych próśb o zarejestrowanie się w newsletterze i wyrażenie zgody na pliki cookie, jest nieprzyjemne dla użytkownika. Nie będzie on rozumiał, dlaczego jest o to proszony i jakie korzyści z tego odniesie.

Nawet jeśli aplikacja internetowa nie może działać bez dostępu do określonej funkcji, daj użytkownikom możliwość zrozumienia, dlaczego jest ona potrzebna. Na przykład poprzedź prośbę o uprawnienia wyjaśnieniem, dlaczego jest ona potrzebna, i daj użytkownikom wybór (np. zapewnij alternatywne sposoby osiągnięcia tej samej funkcjonalności). Jeśli nie możesz znaleźć lepszego momentu na poproszenie użytkownika o zgodę niż podczas wczytywania strony, w dalszej części tego przewodnika znajdziesz kilka przykładów.

Proszenie o zgodę bez wcześniejszej interakcji z użytkownikiem również nie jest skuteczne. Jest to tzw. tymczasowa aktywacja użytkownika. Dane telemetryczne Chrome pokazują, że 77% wyświetlanych na komputerach próśb o uprawnienia nie zawiera sygnału o intencjach użytkownika, a w konsekwencji tylko 12% takich próśb jest akceptowanych. Po interakcji użytkownika zezwól na wzrost stawek do 30%.

Proś o zgodę dopiero po interakcji użytkownika ze stroną.

Proś o to tylko wtedy, gdy użytkownicy mogą zrozumieć, dlaczego to robisz

Decyzje dotyczące uprawnień często są decyzjami dotyczącymi prywatności. Z ram kontekstowej integralności wynika, że decyzje dotyczące prywatności są w dużej mierze zależne od kontekstu. Kluczowe jest zrozumienie, dlaczego dostęp jest konieczny. Powinieneś(-aś) prosić tylko o uprawnienia, które są Ci potrzebne do zapewnienia wartości, w przypadku których użytkownicy prawdopodobnie zgodzą się, że będą dla nich przydatne. Dodatkowo proś o uprawnienia, gdy użytkownik widzi, dlaczego dana funkcja jest przydatna. Ułatw użytkownikom zrozumienie kontekstu użycia.

Z naszych badań użytkowników wynika, że użytkownicy znacznie częściej zezwalają na dostęp, gdy rozumieją, dlaczego witryna o niego prosi, i widzą w tym korzyść. Zauważyliśmy też, że użytkownicy najpierw chcą zapoznać się z nieznanymi witrynami, aby lepiej zrozumieć, co zyskają w zamian za przyznanie dostępu. W tym czasie często odrzucają lub ignorują prośby o uprawnienia. W przypadku jednorazowych zezwoleń użytkownicy mogą najpierw zezwolić na dostęp podczas jednej wizyty. Obsługuj te zachowania w aplikacji.

Przedstawianie alternatyw

Wyniki niektórych funkcji mogą być nieprzydatne dla użytkowników. Na przykład geolokalizacja urządzenia stacjonarnego bez czujnika GPS może zwrócić nieprawidłową lokalizację, ponieważ użytkownik jest połączony z siecią VPN. Inni użytkownicy mogą nie chcieć przyznawać dostępu do schowka, ponieważ wolą zachować kontrolę i ręcznie wywoływać te zdarzenia za pomocą kombinacji klawiszy. W takich sytuacjach podaj alternatywny sposób osiągnięcia tych samych wyników.

Jeśli na przykład prosisz o zezwolenie na dostęp do geolokalizacji, udostępnij pole tekstowe, w którym użytkownicy mogą wpisać kod pocztowy lub adres. Umożliwia wybieranie elementów i kopiowanie ich do schowka za pomocą skrótu klawiszowego lub menu kontekstowego. W przypadku powiadomień oferuj e-maile zamiast powiadomień push.

Przydatnym wzorcem jest używanie alternatywnego interfejsu jako wyjaśnienia, dlaczego dostęp może być korzystny. Użytkownicy, którzy widzą opcję wpisania lokalizacji obok przycisku wywołującego interfejs Geolocation API, czują, że mają kontrolę, ponieważ rozumieją, że mogą wpisać swój adres. Podobnie, jeśli mają wybór między otrzymywaniem powiadomień push lub e-maili a dołączeniem do spotkania bez zezwolenia na dostęp do kamery i mikrofonu, rozumieją, jakie są tego konsekwencje.

Unikanie zablokowanych stanów

Gdy użytkownik trwale odmówi dostępu do funkcji wymagającej uprawnień, przeglądarki będą respektować tę decyzję. Gdyby można było nadal wyświetlać prośby o dostęp, złośliwe witryny bombardowałyby użytkowników takimi prośbami. Odzyskanie możliwości zablokowanej celowo wymaga wysiłku. Unikaj proszenia o uprawnienia w sytuacjach, w których użytkownicy prawdopodobnie nie zezwolą na dostęp.

Często stosowanym sposobem jest użycie tzw. wstępnego promptu, w którym wyjaśniasz użytkownikom, co się wydarzy i dlaczego Twoja aplikacja potrzebuje funkcji, o którą zamierzasz poprosić. Prośbę o uprawnienia w przeglądarce należy wyświetlać tylko wtedy, gdy użytkownicy zareagują na wstępną prośbę w pozytywny sposób. Są sytuacje, w których użytkownicy mogą potrzebować przywrócenia tego stanu. Więcej informacji znajdziesz w sekcji Pomaganie użytkownikom w przywracaniu dostępu do konta po zablokowaniu.

Zwróć uwagę na treści osób trzecich

Uważaj na nieoczekiwane źródła próśb o uprawnienia. Skrypty innych firm w Twojej witrynie mogą wywoływać niepożądane prośby o uprawnienia. Może to wpłynąć na wrażenia użytkowników, zwłaszcza jeśli prompty nie są zgodne ze sprawdzonymi metodami. Aby zachować kontrolę nad wrażeniami użytkowników, zapoznaj się z dokumentacją bibliotek i skryptów innych firm, które dodajesz do kodu.

Kiedy prosić o pozwolenie

Oto kilka przykładów sytuacji, w których warto poprosić użytkownika o zgodę, zgodnie ze sprawdzonymi metodami:

  • Gdy użytkownik kliknie Użyj mojej lokalizacji obok pola formularza podczas ręcznego wpisywania adresu.
  • Gdy użytkownik zasubskrybuje kanał wideo lub posty i kliknie przycisk potwierdzający w oknie dialogowym z informacją, że aktualizacje mogą być dostarczane w formie e-maili lub powiadomień.
  • Gdy użytkownik dotrze na stronę, która przygotowuje go do dołączenia do rozmowy wideo, i odpowie twierdząco na pytanie wstępne, czy chce być widoczny i słyszalny. Więcej informacji znajdziesz w studium przypadku Google Meet.

Wzorce kodu

Zezwolenie na korzystanie z interfejsu API jest przyznawane na różne sposoby w zależności od interfejsu. Niektóre starsze interfejsy API używają modelu, w którym przeglądarka automatycznie prosi o zgodę przy pierwszej próbie użycia interfejsu API. Przykładem jest interfejs Geolocation API podczas wywoływania navigator.geolocation.getCurrentPosition().

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

Inne interfejsy API używają modelu, w którym najpierw musisz wyraźnie poprosić o uprawnienia za pomocą metody statycznej. Dobrym przykładem jest Notification.requestPermission(), które umożliwia włączanie powiadomień, lub rzadziej spotykane DeviceOrientationEvent.requestPermission(), które jest częścią interfejsu Device Orientation Events API.

Niektóre przeglądarki automatycznie przyznają uprawnienia do określonych interfejsów API. Na przykład Chrome zawsze zezwala na dostęp do orientacji urządzenia, a Safari wyświetla prośbę o zezwolenie.

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. */
}

Sprawdzanie stanu uprawnień

Browser Support

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

Source

Aby sprawdzić, czy możesz używać danego interfejsu API, użyj metody navigator.permissions.query() z interfejsu Permissions API.

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.
}

Pomoc użytkownikom w przywróceniu dostępu po zablokowaniu

Aby pomóc użytkownikom w rozwiązywaniu problemów z dostępem, wykrywaj, że zablokowali dostęp za pomocą interfejsu Permissions API, i oferuj przewodnik po zmianie ustawień. Gdy użytkownicy wchodzą w interakcję z elementami interfejsu powiązanymi z funkcją ograniczoną uprawnieniami, sprawdzaj stan uprawnień i otwieraj okno dialogowe 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, dlatego w przypadku najczęściej używanych przeglądarek podaj odpowiednie opisy na podstawie ciągu znaków klienta użytkownika.

W Chrome użytkownicy mogą zmieniać uprawnienia w sekcji Wyświetl informacje o witrynie > Ustawienia witryny na pasku adresu. W niektórych przypadkach przed użyciem funkcji mogą musieć ponownie załadować stronę. W takim przypadku u góry okna pojawi się pasek z komunikatem z propozycją ponownego wczytania witryny.

Ustawienia witryny w przeglądarce Chrome.

Po zmianie uprawnień za pomocą elementów sterujących witryny pojawi się prośba o ponowne załadowanie strony.

Podobne interfejsy do kontrolowania uprawnień są dostępne w innych przeglądarkach, np. w Firefox.