Кажется, я следую коду, предложенному лабораториями Google для создания serviceWorker, и написал код для pushing notifications, но, похоже, он не отображается. Похоже, что событие push с сервера доходит до браузера, однако функция showNotification просто игнорируется.
// in sw.js
self.addEventListener('push', function(event) {
console.info('Push Received'); // this shows up
event.waitUntil(self.registration.showNotification('Hello World'));
// tried self.registration.showNotification('Hello World') but still does not show up
});
Далее, чтобы проверить, работает ли showNotification, я вставил в main.js следующее.
//in main.js
console.info(Notification.permission) // shows granted
if (Notification.permission == 'granted') {
console.info('will show notification') // this gets logged
navigator.serviceWorker.getRegistration().then(function(reg) {
Console.log('reached here'); // this too gets logged
reg.showNotification('Hello world!');
});
Наконец, я наткнулся на этот сайт, который некоторые люди использовали для тестирования.
https://gauntface.github.io/simple-push-demo/
а также
https://web-push-book.gauntface.com/demos/notification-examples/
После разрешения уведомлений с этого сайта я не обнаружил, что уведомления появляются с помощью экрана или данной команды curl.
Я пробовал и в Chrome, и в Firefox, и результаты такие же. Я использую Chrome 68.x и Firefox 61.x в Mac OS 10.13.6.
Я обнаружил, что на сайте, который я использую, включены уведомления в настройках Chrome (расширенный раздел). Даже щелчок по части secure в адресной строке показывает, что уведомления были установлены на allow. Есть ли какие-то другие настройки, которых мне не хватает? Спасибо





Это была такая глупая ошибка. В Mac OS X есть настройки уведомлений, которые (я думаю, по умолчанию) установлены на «НЕ БЕСПОКОИТЬ». Отключение этого показало push-уведомления. Думали, что другие люди, вроде меня, которые, возможно, этого не осознавали, должны знать.
Несколько дополнительных советов для пользователей настольных компьютеров с Windows 10:
Уведомление не -браузера - уведомления, вызванные self.registration.showNotification, будут отображаться в браузере как нет, как и следовало ожидать. Эти уведомления отображаются в Центре действий Windows.
Помощь в фокусе - в Windows есть параметр «Focus Assist», который (аналогично настройке Apple, упомянутой выше) определяет, будут ли уведомления в Центр уведомлений беззвучными или вызывать всплывающее сообщение. Он не упоминает Центр поддержки.
Более одного типа «Уведомления» Чтобы запутать ситуацию, область «Уведомления» Windows - это другая, но связанная функция. Центр уведомлений имеет значок в области уведомлений панели задач. Вы можете подробнее здесь.
Двойные мониторы - Если у вас более одного монитора, вы увидите только значок Центра поддержки на панели задач вашего основного монитора. Кроме того, на основном мониторе вы увидите только всплывающее сообщение Центра поддержки.
Существующие уведомления подавляют тосты - Если домен вашего сайта уже указан в Центре действий, вы не увидите дополнительного всплывающего сообщения для новых сообщений. Однако вы по-прежнему будете видеть элемент, созданный вашим сайтом, в Центре уведомлений. Очистите этот элемент, и ваше следующее уведомление буду приведет к появлению тоста.
Проверьте MacOS notifications settings -> google chrome -> allow notification
ПРИМЕЧАНИЕ: только для пользователей Macbook.
Я только что потратил на это час. Без этого ответа было бы больше. Спасибо!