Gdy napotkasz problem z funkcją push, może być trudno go debugować lub znaleźć pomoc. W tym dokumencie opisujemy niektóre typowe problemy i opisujemy, co należy zrobić wykonaj te czynności, jeśli znajdziesz błąd w przeglądarce Chrome lub Firefox.
Zanim zagłębimy się w debugowanie push, mogą pojawić się problemy z debugowaniem. mechanizmy Service Worker, plik nie jest aktualizowany, nie udaje się zarejestrować lub co zwykle jest po prostu nietypowe. Istnieje doskonały dokument na temat debugowania service worker gorąco polecam, jeśli dopiero zaczynasz korzystać z tworzenie mechanizmów Service Worker.
Podczas programowania i testowania funkcji web push należy wykonać 2 czynności: z innymi typowymi problemami:
- Wysyłanie wiadomości: sprawdź, czy wysyłanie wiadomości się udało.
Powinien wyświetlić się kod HTTP 201. W przeciwnym razie :
- Sprawdź błędy autoryzacji: jeśli otrzymasz autoryzację. Zapoznaj się z Sekcja Problemy z autoryzacją.
- Inne błędy interfejsu API: jeśli otrzymasz odpowiedź z kodem stanu inny niż 201, zapoznaj się z sekcją Kody stanu HTTP dla wskazówek dotyczących przyczyny problemu.
- Odbieranie wiadomości: jeśli możesz wysłać wiadomość,
ale komunikat nie został odebrany w przeglądarce:
- Sprawdzanie problemów z szyfrowaniem: patrz Szyfrowanie ładunku Sekcja dotycząca problemu.
- Sprawdź, czy występują problemy z połączeniem: jeśli problem dotyczy Chrome, może stanowić połączenie. Zobacz sekcję „Problemy z połączeniem”. .
Jeśli nie możesz wysyłać i odbierać wiadomości push, a także odpowiednie sekcje podane w tym dokumencie nie pomagają w debugowaniu problemu, być może w trakcie w mechanizmie wypychania. W takim przypadku zapoznaj się z Przekazywanie zgłoszeń o błędach by przesłać dobry raport o błędzie ze wszystkimi niezbędnymi informacjami naprawianie błędów.
Zanim zaczniemy, chcę wspomnieć, że Firefox Usługa Mozilla AutoPush zawiera świetne komunikaty o błędach. Jeśli utkniesz, nie wiesz, na czym polega problem, użyj przeglądarki Firefox i sprawdź, czy by otrzymać bardziej pomocny komunikat o błędzie.
Problemy z autoryzacją
Problemy z autoryzacją to jeden z najczęstszych problemów na początku od web push. Zazwyczaj jest to problem z konfiguracją klucze serwera aplikacji (klucze VAPID) witryny .
Najprostszym sposobem obsługi push zarówno w Firefoksie, jak i w Chrome jest dodanie
applicationServerKey
w rozmowie subscribe()
. Wadą jest to,
wszelkie rozbieżności między kluczami interfejsu użytkownika i serwera będą powodować
.
W Chrome i FCM
W przypadku Chrome, który używa FCM jako usługi push, otrzymasz wiadomość
UnauthorizedRegistration
odpowiedź z FCM dotycząca zakresu różnych
czy występują błędy, które dotyczą kluczy serwera aplikacji.
UnauthorizedRegistration
błąd wystąpi w:
w sytuacjach:
- Jeśli nie zdefiniujesz nagłówka
Authorization
w żądaniu wysyłanym do FCM. - Twój klucz aplikacji użyty do subskrypcji użytkownika nie jest zgodny z używanym kluczem aby podpisać nagłówek autoryzacji.
- Data wygaśnięcia tokena JWT jest nieprawidłowa, tzn. przekracza 24 godziny lub token JWT wygasł.
- Token JWT ma nieprawidłowy format lub zawiera nieprawidłowe wartości.
Pełna odpowiedź na błąd wygląda tak:
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
Jeśli w Chrome pojawi się ten komunikat o błędzie, przeprowadź test w przeglądarce Firefox, by zobaczyć, i źródeł informacji o problemie.
Firefox i Mozilla AutoPush
Przeglądarki Firefox i Mozilla AutoPush oferują łatwy zestaw komunikatów o błędach dla
Authorization
problemu.
Otrzymasz też odpowiedź o błędzie Unauthorized
z
Mozilla AutoPush, jeśli plik push nie zawiera nagłówka Authorization
użytkownika.
{
"errno": 109,
"message": "Request did not validate missing authorization header",
"code": 401,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Unauthorized"
}
Jeśli termin ważności tokena JWT wygaśnie, otrzymasz też
Unauthorized
błąd z komunikatem wyjaśniającym, że token zawiera
wygasła.
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid bearer token: Auth expired"
}
Jeśli klucze serwera aplikacji są różne w zależności od tego, kiedy użytkownik
zasubskrybowano, a po podpisaniu nagłówka autoryzacji Not Found
, w przypadku których zostanie zwrócony błąd:
{
"errno": 102,
"message": "Request did not validate invalid token",
"code": 404,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Not Found"
}
Jeśli token JWT zawiera nieprawidłową wartość (np. „alg”) jest nieoczekiwaną wartością), pojawi się następujący błąd od Mozilli Automatyczne wypychanie:
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid Authorization Header"
}
Kody stanów HTTP
Istnieje wiele problemów, które mogą spowodować wyświetlenie kodu odpowiedzi innego niż 201 w usługi push. Poniżej znajdziesz listę kodów stanu HTTP i ich znaczenia w relacji do web push.
Kod stanu | Opis |
---|---|
429 | Zbyt wiele żądań. Serwer aplikacji osiągnął limit liczby żądań z usługi push. Odpowiedź usługi powinna zawierać polecenie „Ponów próbę po” nagłówek do określić, po jakim czasie można przesłać kolejne żądanie. |
400 | Nieprawidłowe żądanie. Jeden z nagłówków jest nieprawidłowy lub źle sformatowany. |
404 | Nie znaleziono. W takim przypadku usuń subskrypcję PushSubscription z i poczekać na możliwość odnowienia subskrypcji. |
410 | Brak. Subskrypcja jest już nieważna i należy ją usunąć z w tle. Można to odtworzyć, wywołując funkcję „unsubscribe()” na `PushSubscription`. |
413 | Rozmiar ładunku jest zbyt duży. Minimalny rozmiar ładunku, jaki musi mieć usługa push obsługiwany rozmiar to 4096 bajtów (lub 4 kB). Ten błąd może spowodować użycie większych elementów. |
Jeśli kodu stanu HTTP nie ma na tej liście, a komunikat o błędzie nie jest przydatny, zapoznaj się z protokołem Web Push Protocol specyfikację, aby sprawdzić, czy wskazywany jest kod stanu wraz ze scenariuszem, kiedy ten kod może i sposobu ich wykorzystania.
Problem z szyfrowaniem ładunku
Jeśli możesz wywołać komunikat push (np. wysłać wiadomość na stronie internetowej) usługi push i otrzymują kod odpowiedzi 201), ale zdarzenie push nigdy nie jest uruchamiane procesu service worker, zwykle oznacza to, że przeglądarka nie wykonała odszyfrować otrzymaną wiadomość.
W takim przypadku w Narzędziach deweloperskich w Firefoksie powinien pojawić się komunikat o błędzie. w konsoli tak:
Aby sprawdzić, czy na tym polega problem w Chrome, wykonaj te czynności:
- Wejdź na about://gcm-internals i kliknij „Rozpocznij nagrywanie”. Przycisk
- Aktywuj komunikat push i zajrzyj do sekcji „Dziennik niepowodzenia odszyfrowywania wiadomości”.
Jeśli wystąpił problem z odszyfrowaniem ładunku, wyświetli się komunikat o błędzie
podobne do przedstawionej powyżej. (Zwróć uwagę na AES-GCM decryption failed
w kolumnie szczegółów).
W przypadku Twojego problemu jest kilka narzędzi, które mogą pomóc w debugowaniu szyfrowania:
- Narzędzie Push Encryption Verifier od Petera Beverloo
- Web Push: strona testowa szyfrowania danych utworzona przez Mozilla
Problem z połączeniem
Jeśli nie otrzymujesz zdarzenia push w skrypcie service worker i nie jesteś wyświetlane są błędy odszyfrowywania, przeglądarka może mieć problemy z nawiązaniem połączenia usługi push.
Aby w Chrome sprawdzić, czy przeglądarka odbiera wiadomości, przejrzyj
okno „Odbieraj dziennik wiadomości” (sic) w języku: about://gcm-internals
.
Jeśli wiadomość nie dotrze w odpowiednim czasie, upewnij się,
stan połączenia Twojej przeglądarki to CONNECTED
:
Jeśli profil nie ma stanu „POŁĄCZONO”, konieczne może być usunięcie bieżącego profilu utwórz nową. Jeśli Problem nadal nie ustąpił. Prześlij raport o błędzie w proponowany poniżej sposób.
Zgłaszanie błędów związanych z przesyłaniem raportów
Jeśli żadna z tych odpowiedzi nie pomoże Ci rozwiązać problemu i nic nie wskazuje na to, Jeśli masz inny problem, zgłoś go w sprawie przeglądarki, w której problem z:
W przypadku Chrome problem należy zgłosić tutaj: https://bugs.chromium.org/p/chromium/issues/list W przypadku przeglądarki Firefox problem powinien dotyczyć: https://bugzilla.mozilla.org/
Aby raport o błędzie był rzetelny, podaj te informacje:
- Przeglądarki, w których testowano funkcję (np. Chrome 50, Chrome 51, Firefox) (wersja 50, Firefox w wersji 51).
- Przykładowy element
PushSubscription
ilustrujący problem. - Dołącz dowolne przykładowe żądania (tj. treść żądań sieciowych do przekazywania wraz z nagłówkami).
- Dołącz też wszystkie przykładowe odpowiedzi z żądań sieciowych.
Jeśli możesz podać możliwy do odtworzenia przykład, może to być kod źródłowy lub hostowana witryna często przyspiesza zdiagnozowanie i rozwiązanie problemu.
Co dalej
- Omówienie powiadomień push w internecie
- Jak działa push
- Subskrybowanie użytkownika
- UX uprawnień
- Wysyłanie wiadomości za pomocą bibliotek Web Push
- Protokół Web Push Protocol
- Obsługa zdarzeń push
- Wyświetlanie powiadomienia
- Działanie powiadomień
- Typowe wzorce powiadomień
- Najczęstsze pytania na temat powiadomień push
- Typowe problemy i zgłaszanie błędów