Обещание подписки PushManager никогда не выполняется и не отклоняется

В настоящее время я сталкиваюсь с проблемой в некоторых версиях Chrome (Chromium), где обещание PushManager.subscribe от ServiceWorker остается в состоянии ожидания.

Сам код довольно прост:

return serviceWorkerRegistration.pushManager.subscribe({
    userVisibleOnly: true
  });

У меня есть действительный и доступный манифест в формате JSON с идентификатором отправителя GCM. Я также пробовал разные реализации, как описано в этом сообщении, но результат все тот же.

Подписка хорошо работает со всеми версиями 47+, проблема возникает с более старыми версиями. (Я использую непрерывные сборки Chromium для тестирования различных основных версий).

Также обратите внимание, что при использовании Chromium 46 (и более ранних версий) в Ubuntu обещание отклоняется через 15 минут с Internal Server Error.


person Arturo    schedule 03.03.2016    source источник
comment
Вам нужна поддержка таких старых версий Chrome? Текущая стабильная версия — 49. Может быть, что-то изменилось в том, как Chrome взаимодействует с GCM, и более старые версии больше не поддерживаются?   -  person Marco Castelluccio    schedule 03.03.2016
comment
Действительно, поскольку в Chrome есть функция автоматического обновления, разница в 2 или 3 версии, пользователи с более старыми выпусками маргинальны. Хотя это глобальная цифра, возможно, в каком-то месте/стране обновление появляется поздно. Является ли отсутствие поддержки со стороны GCM следствием используемых мной сборок Chromium или более старых стабильных выпусков Chrome?   -  person Arturo    schedule 03.03.2016
comment
Я не уверен, я провожу тесты для своей библиотеки веб-push (github.com/marco- c/web-push) как в Firefox, так и в Chromium, и они работают, но в тестах я всегда использую последние версии.   -  person Marco Castelluccio    schedule 04.03.2016


Ответы (6)


Проблема с параметром userVisibleOnly: true.

Это было введено только в Chrome 47. До этого вам нужно передать его как параметр манифеста. https://johnme-gcm.appspot.com/manifest.json — хороший пример. следовать.

person Miguel Garcia    schedule 03.03.2016
comment
В манифесте для параметра gcm_user_visible_only установлено значение true. Но если я удалю параметр из метода subscribe, у меня появится ошибка Chrome в настоящее время поддерживает только Push API для подписок, которые приведут к сообщениям, видимым пользователю [...] Я думаю, что ваш пример был введен в Chrome44+ - person Arturo; 04.03.2016
comment
до сих пор не работает. не возвращая или отклоняя обещание! - person mythicalcoder; 12.07.2019

Похоже, команда Chromium работает над этим. Если я не ошибаюсь, исправление будет выпущено для Chrome 55.

person Arturo    schedule 23.11.2016

Эта проблема воспроизводится в chrome 55.0.2883.87 в Windows 7. Обещание подписки не разрешается и не отклоняется. Но это происходит только на одной машине с указанной комбинацией

person nikhil mogallapalli    schedule 14.02.2017

У меня была такая же проблема в Chrome 67, и перезапуск браузера исправил ее.

person user828878    schedule 07.07.2018

Обновить и перезапустить мой Google Chrome было решено для меня

person Lsb    schedule 28.02.2019

У меня была такая же проблема при использовании корпоративного прокси. Поскольку подключение к Интернету отсутствует, подписка не может быть установлена, и обещание никогда не разрешается.

person Alex Walker    schedule 18.10.2019