0

У меня есть этот сервисный рабочий, который хорошо получает уведомление с Chrome, , но он не получает с firefox.Google Cloud Messaging (GCM) не работает с firefox

методом рассылки слушатель не обстреливали все в светлячок (по ее отладки),

PS: работник службы успешно зарегистрирован, но он не получает уведомления.

В чем проблема с моим кодом?

self.addEventListener('install', function (event) { 
event.waitUntil(self.skipWaiting()); 
}); 

self.addEventListener('activate', function (event) { 
console.log('Activated', event); 
}); 

self.addEventListener('push', function (event) { 
event.waitUntil(
    fetch('/path', { 
     credentials: 'include', 
     method: 'post', 
    }) 
    .then(function (response) { 
     return response.json() 
      .then(function (data) { 
       return self.registration.showNotification(data.title, { 
        body: data.body, 
        icon: '/images/image.png', 
       }); 
      }); 
    }) 
    .catch(function (error) { 
     console.error('wrong', error); 
    }) 
); 
}); 

ответ

1

Исходя из этого documentation, если вы используете Channel Messaging API общаются с работником службы, создать новые канал сообщений (MessageChannel.MessageChannel()) и отправить port2 к работнику службы по телефону Worker.postMessage() на работнике службы, чтобы открыть канал связи. Вы также должны настроить слушателя для ответа на сообщения, отправленные обратно от рабочего.

Убедитесь, что вы следовали этим steps о том, как правильно настроить GCM. Вы также можете проверить эту ссылку: GCM Equivalent for Firefox

Надеюсь, это поможет!

+0

спасибо за ответ, но я использую документацию google gcm для создания уведомления, и я хочу интегрировать его с Firefox. https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=ru –

1

Вам необходимо будет поделиться своим кодом с клиентом для регистрации для push-уведомлений.

С учетом сказанного, как только вы зарегистрируетесь для push-уведомлений, вы получите подписку с конечной точкой. В Firefox, что конечная точка не будет ГКМ URL, но нажимной сервер предоставленный Mozilla:

navigator.serviceWorker.ready 
     .then((reg) => reg.pushManager.subscribe({ userVisibleOnly: true })) 
     .then((subscription) => { 
      const endpoint = subscription.endpoint; 
      // endpoint will have different server values when using this code in Chrome or Firefox. 

Ниже приведены основные ноты, которые необходимо учитывать:

  • Вы регистрирующие для уведомления толчка правильно в Firefox?
  • Проверьте URL-адрес конечной точки, которую вам нужно будет достать для выполнения push-уведомления, является ли сервером mozilla?
  • Установите контрольные точки сразу после нажатия кнопки прослушивания, чтобы проверить, что вы получаете нажатие.
+0

Спасибо за ответ, я успешно получил конечную точку с сервера Mozilla, но я Я не могу получать уведомления с сервера mozilla. должен ли я сделать другой push-прослушиватель для сервера mozilla –

+0

, это следующие шаги, которые я выполнил, https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web? hl = en –

+0

, поэтому я проверил ваши рекомендации, только последний не работает, прослушиватель push не запускается в Firefox, но работает правильно в google. –

Смежные вопросы