Najczęstsze pytania dotyczące powiadomień push

Dlaczego nie można przekazać aplikacji push, gdy przeglądarka jest zamknięta?

Pytanie to pojawia się dość często, głównie dlatego, że jest kilka scenariuszy, które sprawiają, że trudno go zrozumieć i zrozumieć.

Zacznijmy od Androida. System operacyjny Android jest zaprojektowany tak, aby nasłuchiwać komunikatów push, a po ich otrzymaniu wybudzać odpowiednią aplikację na Androida do obsługi wiadomości push, niezależnie od tego, czy jest zamknięta.

Działa to tak samo z każdą przeglądarką na Androidzie. Przeglądarka wybudza się po otrzymaniu wiadomości push, a następnie wybudza skrypt service worker i wysyła zdarzenie push.

W systemach operacyjnych komputerowy system operacyjny jest bardziej szczegółowy i łatwiejszy do wyjaśnień jest w systemie Mac OS X, ponieważ zawiera wizualny wskaźnik, który wyjaśnia różne scenariusze.

W Mac OS X program można określić na podstawie oznaczenia pod ikoną aplikacji w Docku.

Gdy porównamy 2 ikony Chrome w następnym Docku, ta po lewej stronie jest aktywna, jak widać na tym oznaczeniu pod ikoną, a po prawej nie działa, stąd brak oznaczenia pod ikoną.

Przykład systemu OS X

Jeśli chodzi o odbieranie wiadomości push na komputerze, są one wysyłane, gdy przeglądarka działa. Oznacza to, że jest on oznaczony ikoną pod ikoną.

Oznacza to, że przeglądarka nie może mieć otwartych okien i nadal będziesz otrzymywać komunikat push w mechanizmie Service Worker, ponieważ przeglądarka działa w tle.

Komunikaty nie są odbierane tylko wtedy, gdy przeglądarka jest całkowicie zamknięta, czyli w ogóle nie jest uruchomiona (brak oznaczenia). To samo dotyczy systemu Windows, ale określenie, czy Chrome działa w tle, jest trochę trudniejsze.

Jak sprawić, aby aplikacja internetowa na ekranie głównym otwierała się w trybie pełnoekranowym?

W Chrome na Androida aplikację internetową można dodać do ekranu głównego, a po otwarciu z poziomu ekranu głównego może ona uruchamiać się w trybie pełnoekranowym bez paska adresu URL, jak widać poniżej.

Ikona na pełny ekran

Aby zachować spójność, deweloperzy chcą, aby klikane powiadomienia otwierały też aplikację internetową w trybie pełnoekranowym.

W Chrome jest to choćby zawodne i trudne do ustalenia. Szczegóły implementacji:

Oznacza to, że jeśli użytkownik regularnie odwiedza witrynę za pomocą ikony na ekranie głównym, powiadomienia otwierają się w normalnym interfejsie przeglądarki.

Przeanalizujemy ten problem.

Dlaczego jest to coś lepszego niż gniazdo sieciowe?

Skrypt service worker może zostać wywołany, gdy okno przeglądarki jest zamknięte. Gniazdo internetowe będzie działać tylko wtedy, gdy przeglądarka i strona internetowa będą otwarte.

O co chodzi z GCM, FCM, Web Push i Chrome?

Pytanie to ma wiele aspektów, a najprostszym sposobem jego wyjaśnienia jest zapoznanie się z historią web push i Chrome. (Nie martw się, tekst jest krótki).

Grudzień 2014

Gdy po raz pierwszy wdrożono w Chrome funkcję web push, wykorzystała ona Google Cloud Messaging (GCM) do przesyłania komunikatów push z serwera do przeglądarki.

To nie dotyczyło web push. Istnieje kilka powodów, dla których tak wczesna konfiguracja Chrome i GCM nie była „prawdziwa” typu web push.

  • GCM wymaga od programistów skonfigurowania konta w Google Developers Console.
  • Aby można było prawidłowo skonfigurować wiadomości, Chrome i GCM wymagały specjalnego identyfikatora nadawcy, który został udostępniony przez aplikację internetową.
  • Serwery GCM zaakceptowały niestandardowe żądanie interfejsu API, które nie było standardem internetowym.

lipiec 2016 r.

W lipcu udostępniliśmy nową funkcję Web push – klucze serwera aplikacji (lub VAPID, jak jest znana specyfikacja). Dodanie obsługi nowego interfejsu API w Chrome używało Komunikacji w chmurze Firebase (nazywanej też FCM) zamiast GCM jako usługi do przesyłania wiadomości. Jest to ważne z kilku powodów:

  • Klucze Chrome i klucza serwera aplikacji nie wymagają konfigurowania żadnego projektu w Google ani Firebase. To będzie działać.
  • FCM obsługuje protokół web push, czyli interfejs API obsługiwany przez wszystkie usługi Web push. Oznacza to, że niezależnie od usługi push, z której korzysta przeglądarka, wystarczy wysłać takie samo żądanie i wysłać wiadomość.

Dlaczego mylisz dzisiaj?

Obecnie wiele osób nieporozumień, ponieważ treści zostały napisane o temacie webpush, a większość z nich dotyczy GCM lub FCM. Jeśli treści odnoszą się do GCM, należy je traktować jak przestarzałe treści LUB nadmiernie skupiające się na Chrome. (Jestem winny tego, że robię to w wielu starych postach).

Zamiast tego postrzegamy push to przeglądarkę, która używa usługi push do zarządzania wysyłaniem i odbieraniem wiadomości, w której usługa push akceptuje żądanie „internetowego protokołu push”. Jeśli myślisz o tych terminach, możesz zignorować przeglądarkę, której używa i której usługi push używa, i zacząć działać.

Ten przewodnik koncentruje się na standardowym podejściu do przekazywania danych w ramach web push i celowo ignoruje wszystkie inne elementy.

Firebase ma pakiet SDK JavaScript. Co i dlaczego?

Osoby, które znalazły pakiet SDK Firebase i zauważyły, że zawiera on interfejs API do przesyłania wiadomości w języku JavaScript, pewnie zastanawia się, czym różni się on od funkcji web push.

Pakiet SDK do przesyłania wiadomości (nazywany pakietem SDK Firebase Cloud Messaging JS SDK) działa w kilku sztuczkach, aby ułatwić wdrożenie web push.

  • Zamiast martwić się o PushSubscription i jego różne pola, musisz martwić się tylko o token FCM (ciąg znaków).
  • Korzystając z tokenów poszczególnych użytkowników, możesz użyć zastrzeżonego interfejsu FCM API do aktywowania komunikatów push. Ten interfejs API nie wymaga szyfrowania ładunków. Możesz wysłać ładunek w postaci zwykłego tekstu w treści żądania POST.
  • Zastrzeżony interfejs API FCM obsługuje funkcje niestandardowe, np. Tematy FCM (działa też w internecie, ale jest słabo udokumentowana).
  • I na koniec, FCM obsługuje Androida, iOS i internet, więc niektóre zespoły mogą łatwiej pracować z nimi w istniejących projektach.

Wykorzystywane są w nim materiały zza kulis, ale ich celem jest skupienie się na tych treściach.

Jak już wspomnieliśmy w poprzednim pytaniu, jeśli uważasz, że web push to tylko przeglądarka i usługa push, możesz rozważyć pakiet SDK do przesyłania wiadomości w Firebase jako bibliotekę, która upraszcza wdrażanie push.

Co dalej

Laboratoria kodu