0

我有这个服务工作人员很好地接收Chrome的通知, ,但它没有与Firefox接收。谷歌云消息传递(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())至comunicate并通过调用服务人员Worker.postMessage()发送PORT2交给服务人员,以打通沟通渠道。您还应该设置一个侦听器来响应从服务工作人员发回的消息。

请确保您遵循了这些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=zh-CN –

1

您需要在客户端分享您的代码以注册推送通知。

即便如此,一旦您注册推送通知,您将收到一个端点订阅。在Firefox端点永远不会成为一个GCM 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,是一个mozilla服务器吗?
  • 在推送侦听器后面设置断点,以确认您收到推送。
+0

感谢您的回答,我成功地从Mozilla服务器获得了终点,但是我我无法收到来自Mozilla服务器的任何通知。我应该为mozilla服务器做一个不同的推送监听器 –

+0

这些是我遵循的步骤,https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web? hl = en –

+0

所以我检查了你的建议,只有最后一个不工作,推送监听器没有在Firefox上触发,但在谷歌上正常工作。 –