2016-03-03 5 views
7

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

Сам код очень прост:

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

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

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

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

+0

Нужно ли вам поддерживать такие старые версии Chrome? Текущая стабильная версия - 49. Возможно, что-то изменилось в том, что переговоры Chrome с GCM и более старые версии больше не поддерживаются? – Marco

+0

Действительно, поскольку у Chrome есть функция автоматического обновления, разница в 2 или 3 версии, пользователи со старыми версиями являются незначительными. Хотя, это глобальная цифра, может быть, некоторые в каком-то месте/стране, обновление, как правило, прибывает в последнее время. Является ли отсутствие поддержки от GCM из созданных мной Chromium-сборников или «более старомодных» выпусков Chrome? – Arturo

+0

Я не уверен, я запускаю тесты для своей библиотеки веб-push (https://github.com/marco-c/web-push) и в Firefox и Chromium, и они работают, но в тестах я всегда используя последние версии. – Marco

ответ

1

Проблема заключается в userVisibleOnly: true в качестве параметра.

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

+0

У меня есть ** gcm_user_visible_only **, установленный в true в true. Но если я удалю параметр из метода 'subscribe', у меня есть ошибка _Chrome в настоящее время поддерживает только Push API для подписки, что приведет к сообщениям, видимым пользователем [...] _ Я думаю, что ваш пример был представлен в [ Chrome44 +] (http://stackoverflow.com/questions/31286265/gcm-registration-id-in-service-worker-in-push-notification-for-chrome#comment-50592719) – Arturo

1

Похоже, что Chromium Team был working on it. Если я не ошибаюсь, то исправление будет выпустить на Chrome 55

0

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