Omówienie powiadomień push

Omówienie powiadomień push: czym są, dlaczego warto z nich korzystać i jak działają.

Czym są powiadomienia push?

Powiadomienia push umożliwiają przekazywanie informacji użytkownikom nawet wtedy, gdy nie korzystają oni z Twojej witryny. Nazwa push oznacza, że możesz „przesyłać” informacje do użytkowników, nawet gdy nie są aktywni. Aby lepiej zrozumieć tę koncepcję, porównaj technologię push z technologią pull.

Powiadomienia zawierają niewielkie porcje informacji. Witryny mogą używać powiadomień, aby informować użytkowników o ważnych wydarzeniach lub działaniach, które muszą wykonać. Wygląd i działanie powiadomień różni się w zależności od platformy:

Przykłady powiadomień na macOS i Androidzie
Przykłady powiadomień w systemach macOS i Android

Powiadomienia push i powiadomienia to 2 oddzielne, ale uzupełniające się technologie. Powiadomienia push to technologia umożliwiająca wysyłanie wiadomości z serwera do użytkowników, nawet gdy nie korzystają aktywnie z Twojej witryny. Powiadomienia to technologia wyświetlania informacji wysyłanych na urządzenie użytkownika. Powiadomienia można wysyłać bez wiadomości push. Może się zdarzyć, że w przyszłości będzie można wysyłać wiadomości push bez powiadomień dla użytkowników (cicha transmisja push), ale obecnie przeglądarki nie umożliwiają tego. W praktyce są one zwykle używane razem. Użytkownik nietechniczny prawdopodobnie nie zrozumie różnicy między wiadomościami push a powiadomieniami. W tej kolekcji, gdy mówimy o powiadomieniach push, mamy na myśli połączenie wysłania wiadomości z jej wyświetleniem jako powiadomienia. Termin wiadomości push odnosi się do samej technologii push. Gdy mówimy o powiadomieniach, mamy na myśli samą technologię powiadomień.

Dlaczego warto korzystać z powiadomień push?

  • Powiadomienia push to dla użytkowników sposób na otrzymywanie aktualnych, istotnychdokładnych informacji.
  • Dla Ciebie (właściciela witryny) powiadomienia push to sposób na zwiększenie zaangażowania użytkowników.

Jak działają powiadomienia push?

Ogólnie rzecz biorąc, najważniejsze kroki do wdrożenia powiadomień push to:

  1. Dodanie logiki klienta, która prosi użytkownika o pozwolenie na wysyłanie powiadomień push, a potem wysyła informacje o identyfikatorze klienta na serwer do przechowywania w bazie danych.
  2. Dodawanie logiki serwera do wiadomości push na urządzeniach klienckich.
  3. Dodawanie logiki klienta do odbierania wiadomości wysłanych na urządzenie i wyświetlania ich jako powiadomień.

W dalszej części tej strony znajdziesz bardziej szczegółowe informacje o tych czynnościach.

Uzyskiwanie uprawnień do wysyłania powiadomień push

Po pierwsze, Twoja witryna musi uzyskać zgodę użytkownika na wysyłanie powiadomień push. Powinna być wywoływana przez użytkownika, np. przez kliknięcie przycisku Tak obok prompta Do you want to receive push notifications?. Po potwierdzeniu zadzwoń pod numer Notification.requestPermission(). System operacyjny lub przeglądarka na urządzeniu użytkownika prawdopodobnie wyświetli interfejs użytkownika, aby formalnie potwierdzić, że użytkownik chce otrzymywać powiadomienia push. Ten interfejs różni się na poszczególnych platformach.

Subskrypcja powiadomień push przez klienta

Po uzyskaniu zgody Twoja witryna musi zainicjować proces subskrypcji powiadomień push przez użytkownika. Robi się to za pomocą JavaScriptu i interfejsu Push API. Podczas procesu subskrypcji musisz podać klucz uwierzytelniania publicznego. Więcej informacji znajdziesz w dalszej części tego artykułu. Po rozpoczęciu procesu subskrypcji przeglądarka wysyła żądanie sieciowe do usługi internetowej zwanej usługą push. Więcej informacji na ten temat znajdziesz w dalszej części artykułu.

Zakładając, że subskrypcja została pomyślnie utworzona, przeglądarka zwraca obiekt PushSubscription. Te dane trzeba przechowywać przez dłuższy czas. Zwykle odbywa się to przez wysłanie informacji na serwer, który jest pod Twoją kontrolą, a następnie przechowywanie ich w bazie danych.

Uzyskaj uprawnienia do wysyłania wiadomości push. Pobieranie PushSubscription. Wyślij PushSubscription na serwer.

Wysyłanie powiadomienia push

Twój serwer nie wysyła wiadomości push bezpośrednio do klienta. Robi to usługa push. Usługa push to usługa internetowa zarządzana przez dostawcę przeglądarki użytkownika. Aby wysłać powiadomienie push do klienta, musisz przesłać żądanie usługi internetowej do usługi push. Żądanie usługi internetowej wysyłane do usługi push jest nazywane żądaniem protokołu web push. Żądanie protokołu web push powinno zawierać:

  • Jakie dane uwzględnić w wiadomości.
  • do którego klienta ma zostać wysłana wiadomość.
  • instrukcje dotyczące tego, jak usługa push powinna dostarczać wiadomości; Możesz na przykład określić, że usługa push powinna przestać próbować wysyłać wiadomość po 10 minutach.

Zwykle żądanie dotyczące protokołu web push przesyłasz za pomocą serwera, który jest pod Twoją kontrolą. Oczywiście serwer nie musi tworzyć żądania usługi WWW w postaci surowych danych. Istnieją biblioteki, które mogą za Ciebie to wykonać, np. web-push-libs. Jednak mechanizm bazowy to żądanie usługi sieci Web przez HTTP.

Twój serwer wysyła żądanie protokołu web push do usługi push, a usługa push wysyła wiadomość na urządzenie użytkownika.

Usługa przesyłania powiadomień push odbiera Twoje żądanie, uwierzytelnia je i przekierowuje powiadomienie do odpowiedniego klienta. Jeśli przeglądarka klienta jest offline, usługa przesyłania wiadomości push umieszcza wiadomość w kolejce do wysłania, dopóki przeglądarka nie połączy się z internetem.

Każda przeglądarka używa dowolnej usługi push. Jako deweloper witryny nie masz nad tym kontroli. Nie stanowi to problemu, ponieważ żądanie protokołu web push jest ustandaryzowane. Innymi słowy, nie musisz się martwić, której usługi push używa dostawca przeglądarki. Musisz tylko sprawdzić, czy żądanie protokołu web push jest zgodne ze specyfikacją. Specyfikacja określa m.in., że żądanie musi zawierać określone nagłówki, a dane muszą być wysyłane jako strumień bajtów.

Musisz jednak upewnić się, że wysyłasz żądanie protokołu web push do właściwej usługi push. Te informacje są zawarte w danych PushSubscription, które przeglądarka zwraca podczas procesu subskrypcji. Obiekt PushSubscription wygląda tak:

{
  "endpoint": "https://fcm.googleapis.com/fcm/send/c1KrmpTuRm…",
  "expirationTime": null,
  "keys": {
    "p256dh": "BGyyVt9FFV…",
    "auth": "R9sidzkcdf…"
  }
}

Domena endpoint to w podstawie usługa push. Ścieżka endpoint to informacje o identyfikatorze klienta, które pomagają usłudze powiadomień push określić, do którego dokładnie klienta wysłać powiadomienie.

keys są używane do szyfrowania, co zostanie wyjaśnione w następnym kroku.

Szyfrowanie wiadomości push

Dane wysyłane do usługi push muszą być zaszyfrowane. Zapobiega to wyświetlaniu przez usługę push danych wysyłanych do klienta. Pamiętaj, że to dostawca przeglądarki decyduje, z której usługi push korzystać, a ta usługa może teoretycznie być niebezpieczna lub niezabezpieczona. Twój serwer musi używać keys podanego w PushSubscription do szyfrowania żądań protokołu web push.

Podpisywanie żądań protokołu web push

Usługa push umożliwia zapobieganie wysyłaniu wiadomości do Twoich użytkowników przez inne osoby. Technicznie nie musisz tego robić, ale najprostsza implementacja w Chrome tego wymaga. W Firefoxie jest to opcjonalne. W przyszłości może być ona wymagana w innych przeglądarkach.

Ten proces obejmuje klucz prywatny i klucz publiczny, które są unikalne dla Twojej aplikacji. Proces uwierzytelniania przebiega mniej więcej tak:

  • Klucze prywatny i publiczny generujesz jako jednorazowe zadanie. Kombinacja klucza prywatnego i publicznego jest nazywana kluczami serwera aplikacji. Mogą też być nazywane kluczami VAPID. VAPID to specyfikacja definiująca ten proces uwierzytelniania.
  • Gdy subskrybujesz klienta do powiadomień push z kodu JavaScript, przekazujesz klucz publiczny. Gdy usługa przesyłania informacji generuje endpointna urządzeniu, powoduje to powiązanie podanego klucza publicznego z endpoint.
  • Gdy wysyłasz żądanie protokołu web push, podpisujesz niektóre informacje w formacie JSON za pomocą klucza prywatnego.
  • Gdy usługa przesyłania powiadomień otrzymuje żądanie protokołu web push, używa zapisanego klucza publicznego do uwierzytelnienia podpisanych informacji. Jeśli podpis jest prawidłowy, usługa push wie, że żądanie pochodziło z serwera z odpowiadającym kluczem prywatnym.

Dostosowywanie sposobu dostarczania powiadomienia push

Specyfikacja żądania protokołu web push definiuje też parametry, które umożliwiają dostosowanie sposobu wysyłania wiadomości push do klienta przez usługę push. Możesz na przykład dostosować:

  • Czas życia danych (TTL) wiadomości, który określa, jak długo usługa push będzie próbować dostarczyć wiadomość.
  • pilność wiadomości, co jest przydatne, gdy usługa push oszczędza czas pracy baterii klienta, wysyłając tylko wiadomości o wysokim priorytecie.
  • Temat wiadomości, który zastępuje wszystkie oczekujące wiadomości o tym samym temacie najnowszą wiadomością.

otrzymywać i wyświetlać jako powiadomienia;

Po wysłaniu żądania protokołu web push do usługi push żądanie to jest przechowywane w kolejce do momentu wystąpienia jednego z tych zdarzeń:

  1. Klient łączy się z internetem, a usługa wiadomości push dostarcza wiadomość push.
  2. wygasa się.

Gdy przeglądarka klienta otrzyma wiadomość push, odszyfruje dane wiadomości push i wyśle zdarzenie push do elementu sterującego usługi. Skrypt service worker to w podstawie kod JavaScript, który może działać w tle, nawet gdy Twoja witryna jest zamknięta lub przeglądarka zamknięta. W obiekcie service worker w obiekcie push eventhandler wywołujesz metodę ServiceWorkerRegistration.showNotification(), aby wyświetlić informacje jako powiadomienie.

Wiadomość dociera na urządzenie. Przeglądarka budzi pracownika usługi. Wyślij zdarzenie push.

Co dalej

Code labs