Dlaczego powiadomienia push nie działają, gdy przeglądarka jest zamknięta?
To pytanie pojawia się dość często, głównie dlatego, że istnieje kilka scenariuszy, które utrudniają zrozumienie tej kwestii.
Zacznijmy od Androida. System operacyjny Android jest zaprojektowany tak, aby nasłuchiwać wiadomości push i po ich otrzymaniu wybudzać odpowiednią aplikację na Androida, aby obsłużyła wiadomość push, niezależnie od tego, czy aplikacja jest zamknięta czy nie.
Tak samo jest w przypadku każdej przeglądarki na Androidzie – przeglądarka zostanie wybudzona po otrzymaniu wiadomości push, a następnie wybudzi skrypt service worker i wyśle zdarzenie push.
W przypadku systemów operacyjnych na komputery jest to bardziej skomplikowane i najłatwiej wyjaśnić to na przykładzie systemu Mac OS X, ponieważ zawiera on wskaźnik wizualny, który pomaga wyjaśnić różne scenariusze.
W systemie Mac OS X możesz sprawdzić, czy program jest uruchomiony, patrząc na oznaczenie pod ikoną aplikacji w Docku.
Jeśli porównasz 2 ikony Chrome w poniższym Docku, ta po lewej jest uruchomiona, co widać po oznaczeniu pod ikoną, a Chrome po prawej nie jest uruchomiony, dlatego nie ma pod nim oznaczenia.
W kontekście otrzymywania wiadomości push na komputerze będziesz otrzymywać wiadomości, gdy przeglądarka jest uruchomiona, czyli pod ikoną znajduje się oznaczenie.
Oznacza to, że przeglądarka może nie mieć otwartych żadnych okien, a Ty i tak otrzymasz wiadomość push w skrypcie service worker, ponieważ przeglądarka działa w tle.
Powiadomienie push nie zostanie odebrane tylko wtedy, gdy przeglądarka jest całkowicie zamknięta, czyli nie działa w ogóle (brak oznaczenia). To samo dotyczy systemu Windows, chociaż w tym przypadku nieco trudniej jest określić, czy Chrome działa w tle.
Jak sprawić, aby aplikacja internetowa na ekranie głównym otwierała się na pełnym ekranie po kliknięciu powiadomienia push?
W Chrome na Androida aplikację internetową można dodać do ekranu głównego. Po otwarciu aplikacji internetowej z ekranu głównego można ją uruchomić w trybie pełnoekranowym bez paska adresu URL, jak pokazano poniżej.
Aby zachować spójność, deweloperzy chcą, aby kliknięte powiadomienia otwierały aplikację internetową na pełnym ekranie.
Chrome „w pewnym sensie” to zaimplementował, ale może się okazać, że jest to zawodne i trudne do zrozumienia. Odpowiednie szczegóły implementacji:
Oznacza to, że jeśli użytkownik nie odwiedza Twojej witryny dość regularnie za pomocą ikony na ekranie głównym, powiadomienia będą się otwierać w normalnym interfejsie przeglądarki.
Będziemy dalej pracować nad tym problemem.
Dlaczego jest to lepsze niż gniazda internetowe?
Skrypt service worker może zostać uruchomiony, gdy okno przeglądarki jest zamknięte. Gniazdo internetowe będzie aktywne tylko tak długo, jak długo przeglądarka i strona internetowa będą otwarte.
What is the deal with GCM, FCM, Web Push and Chrome?
To pytanie ma wiele aspektów, a najłatwiej wyjaśnić je, przechodząc przez historię powiadomień push w internecie i Chrome. (Nie martw się, jest krótka).
Grudzień 2014
Gdy w Chrome po raz pierwszy wdrożono powiadomienia push w przeglądarce, do wysyłania wiadomości push z serwera do przeglądarki używana była usługa Google Komunikacja w chmurze (GCM).
To nie było powiadomienie push w internecie. Istnieje kilka powodów, dla których ta wczesna konfiguracja Chrome i GCM nie była „prawdziwym” mechanizmem powiadomień push w przeglądarce.
- GCM wymaga od deweloperów skonfigurowania konta w Google Developers Console.
- Chrome i GCM potrzebowały specjalnego identyfikatora nadawcy, który musiał być udostępniany przez aplikację internetową, aby można było prawidłowo skonfigurować wiadomości.
- Serwery GCM akceptowały niestandardowe żądanie do interfejsu API, które nie było standardem internetowym.
lipiec 2016 r.
W lipcu pojawiła się nowa funkcja powiadomień push w internecie – klucze serwera aplikacji (lub VAPID, jak nazywa się specyfikacja). Gdy w Chrome dodano obsługę tego nowego interfejsu API, jako usługa przesyłania wiadomości używana była Komunikacja w chmurze Firebase (FCM) zamiast GCM. Jest to ważne z kilku powodów:
- Klucze serwera aplikacji i Chrome nie wymagają konfigurowania żadnego projektu w Google ani Firebase. Będzie działać.
- FCM obsługuje protokół Web Push, czyli interfejs API, który będzie obsługiwany przez wszystkie usługi Web Push. Oznacza to, że niezależnie od tego, jakiej usługi push używa przeglądarka, wystarczy wysłać to samo żądanie, a wiadomość zostanie wysłana.
Dlaczego dziś jest to mylące?
Obecnie panuje duże zamieszanie, ponieważ powstało wiele treści na temat powiadomień push w internecie, z których wiele odnosi się do GCM lub FCM. Jeśli treść odnosi się do GCM, prawdopodobnie jest to znak, że jest to stara treść LUB że skupia się zbyt bardzo na Chrome. (Sama mam to na sumieniu w przypadku wielu starych postów).
Zamiast tego pomyśl o powiadomieniach push w internecie jako o przeglądarce, która używa usługi push do zarządzania wysyłaniem i odbieraniem wiadomości, przy czym usługa push akceptuje żądanie „protokołu push w internecie”. Jeśli będziesz myśleć w ten sposób, możesz zignorować przeglądarkę i usługę push, z której korzysta, i zacząć pracę.
Ten przewodnik został napisany z myślą o standardowym podejściu do powiadomień push w przeglądarce i celowo ignoruje inne kwestie.
Firebase ma pakiet JavaScript SDK. Co i dlaczego?
Jeśli znasz pakiet SDK Firebase dla aplikacji internetowych i zauważysz, że zawiera on interfejs API do obsługi wiadomości w języku JavaScript, możesz się zastanawiać, czym różni się on od powiadomień push w internecie.
Pakiet SDK do obsługi wiadomości (znany jako pakiet SDK Komunikacji w chmurze Firebase (FCM) JS) wykonuje kilka czynności za kulisami, aby ułatwić implementację powiadomień push w internecie.
- Zamiast przejmować się obiektem
PushSubscriptioni jego różnymi polami, musisz tylko zadbać o token FCM (ciąg znaków). - Korzystając z tokenów poszczególnych użytkowników, możesz używać zastrzeżonego interfejsu FCM API do wywoływania wiadomości 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, takie jak tematy FCM (działa też w internecie, choć jest słabo udokumentowany).
- FCM obsługuje też Androida, iOS i internet, więc niektórym zespołom łatwiej jest pracować z nim w istniejących projektach.
Za kulisami używa powiadomień push w internecie, ale jego celem jest ich abstrakcja.
Jak już wspomnieliśmy, jeśli uważasz, że powiadomienia push w internecie to tylko przeglądarka i usługa push, możesz uznać pakiet SDK do obsługi wiadomości w Firebase za bibliotekę upraszczającą wdrażanie powiadomień push w internecie.
Co dalej
- Internetowe powiadomienia push – omówienie
- Jak działa Push
- Subskrybowanie użytkownika
- Interfejs uprawnień
- Wysyłanie wiadomości za pomocą bibliotek Web Push
- Protokół Web Push
- Obsługa zdarzeń push
- Wyświetlanie powiadomienia
- Zachowanie powiadomień
- Typowe wzorce powiadomień
- Najczęstsze pytania dotyczące powiadomień push
- Typowe problemy i zgłaszanie błędów