Notifications API i obsługa uprawnień
Prosić o uprawnienia do powiadomień we właściwym momencie i wysyłać powiadomienia przeglądarkowe z Reacta
Notifications API i obsługa uprawnień to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Właściwość Notification.permission
Notification.permission to statyczny ciąg znaków odzwierciedlający bieżący stan uprawnień. Może mieć wartość "granted" (użytkownik zezwolił), "denied" (użytkownik zablokował) lub "default" (użytkownik nie został jeszcze zapytany). Przed próbą wyświetlenia powiadomień należy sprawdzić tę właściwość, aby uniknąć niepotrzebnych błędów.
Żądanie zgody
Notification.requestPermission() zwraca Promise, który jest rozstrzygany z nowym ciągiem znaków określającym uprawnienie. Należy wywoływać tę metodę wyłącznie w odpowiedzi na wyraźne działanie użytkownika, a nie podczas ładowania strony. Przeglądarki ignorują lub ograniczają prośby o zgodę wyświetlane natychmiast po załadowaniu strony, a użytkownicy uznają je za uciążliwe, gdy pojawiają się bez kontekstu.
Dobra praktyka: żądanie po działaniu użytkownika
Najskuteczniejszy wzorzec polega na wyświetleniu w aplikacji komunikatu wyjaśniającego korzyści, a następnie umożliwieniu użytkownikowi kliknięcia „Włącz powiadomienia” przed wywołaniem requestPermission(). Zapewnia to odpowiedni kontekst, zwiększa odsetek udzielanych zgód i zapobiega oznaczeniu witryny przez przeglądarkę jako źródła spamu. Nigdy nie należy prosić o zgodę podczas ładowania strony.
Tworzenie powiadomienia
new Notification(title, options) tworzy i wyświetla powiadomienie systemowe. Pierwszym argumentem jest ciąg znaków z tytułem. Obiekt options jest drugim argumentem i przyjmuje właściwości takie jak body (tekst podtytułu), icon (adres URL obrazu) oraz tag do usuwania duplikatów. Działa to tylko wtedy, gdy uprawnienie ma wartość "granted".
Opcje powiadomień
Najważniejsze opcje powiadomień to: body — opisowy tekst pod tytułem, icon — mały obraz, badge — mała monochromatyczna ikona wyświetlana w obszarze powiadomień systemu operacyjnego, image — duży obraz umieszczany bezpośrednio w powiadomieniu, tag — zastępowanie poprzedniego powiadomienia z tym samym tagiem oraz requireInteraction: true — utrzymywanie powiadomienia do czasu działania użytkownika.
Zdarzenia powiadomień
Instancja Notification wywołuje kilka zdarzeń: onclick jest wywoływane po kliknięciu powiadomienia przez użytkownika i służy do uaktywnienia okna oraz nawigacji, onclose jest wywoływane po zamknięciu powiadomienia, a onerror — w razie problemu z jego utworzeniem. Procedury obsługi należy przypisać do zwróconej instancji po wywołaniu new Notification().
Programowe zamykanie powiadomień
Należy zapisać zwróconą instancję Notification w zmiennej i wywołać notification.close(), aby programowo zamknąć powiadomienie. Jest to przydatne w przypadku powiadomień zależnych od czasu, które po pewnym czasie tracą znaczenie. Można połączyć tę metodę z setTimeout, aby automatycznie zamykać powiadomienia po kilku sekundach.
Wymóg HTTPS dla powiadomień
Notifications API wymaga bezpiecznego kontekstu. Na stronach HTTP wyrażenie typeof Notification === 'undefined' zwraca 'undefined' albo API jest całkowicie wyłączone, zależnie od przeglądarki. Jest to środek bezpieczeństwa zapobiegający zalewaniu użytkowników fałszywymi komunikatami systemowymi przez złośliwe witryny. Przed użyciem zawsze należy sprawdzić dostępność API.
Tworzenie hooka useNotifications
Hook useNotifications może udostępniać dwie metody: requestPermission() i showNotification(title, options). Wewnętrznie śledzi bieżący stan uprawnień i aktualizuje go po wysłaniu żądania. Komponenty wywołują showNotification bez konieczności zajmowania się sprawdzaniem uprawnień, ponieważ hook obsługuje je wewnętrznie.
Połączenie z Visibility API
Page Visibility API udostępnia właściwość document.hidden i zdarzenie visibilitychange. Powiadomienia mają największy sens, gdy użytkownik nie przegląda aktualnie karty. Przed wyświetleniem powiadomienia należy sprawdzić document.hidden === true, aby uniknąć zbędnych alertów, gdy strona jest już na pierwszym planie.
Service Workers i powiadomienia push
Przedstawione tutaj Notifications API służy do wyświetlania powiadomień wywoływanych lokalnie przez samą stronę. Aby otrzymywać powiadomienia push nawet po zamknięciu strony, potrzebne są Push API oraz service worker. Service worker odbiera zdarzenie push i wywołuje self.registration.showNotification() w tle.
Wartości Notification.permission
Która z poniższych wartości NIE jest prawidłową wartością Notification.permission?
Podsumowanie lekcji: Notifications API
Notification.permission może mieć wartość granted, denied lub default. O zgodę należy prosić zawsze po działaniu użytkownika, a nie podczas ładowania strony. Do tworzenia powiadomień należy używać new Notification(title, options), a za pomocą onclick obsługiwać uaktywnianie okna. Notifications API warto połączyć z Page Visibility API, aby wyświetlać powiadomienia tylko wtedy, gdy karta jest ukryta.
Często zadawane pytania
Czy lekcja „Notifications API i obsługa uprawnień” jest bezpłatna?
Tak — pełny tekst „Notifications API i obsługa uprawnień” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Notifications API i obsługa uprawnień”?
Prosić o uprawnienia do powiadomień we właściwym momencie i wysyłać powiadomienia przeglądarkowe z Reacta Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Notifications API i obsługa uprawnień”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Clipboard API: kopiowanie i wklejanie w React
- Geolocation API w komponentach React
- Notifications API i obsługa uprawnień
- IntersectionObserver do efektów wyzwalanych przewijaniem