0

Ich habe diese Service Worker, die Benachrichtigung gut mit Chrome empfängt, , aber es wird nicht mit Firefox erhalten.Google Cloud Messaging (GCM) funktioniert nicht mit Firefox

der Push-Zuhörer gar nicht in firefox gefeuert (durch Debugging),

PS: der Servicemitarbeiter erfolgreich registriert ist, aber es ist keine Benachrichtigung erhalten.

Was ist das Problem mit meinem Code?

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); 
    }) 
); 
}); 

Antwort

1

Basierend auf diesen documentation, wenn Sie die Channel Messaging API verwenden, der mit dem Servicemitarbeiter comunicate, einen neuen Nachrichtenkanal (MessageChannel.MessageChannel()) und senden port2 über an den Servicemitarbeiter durch den Aufruf Worker.postMessage() auf dem Servicemitarbeiter einrichten, um den Kommunikationskanal zu öffnen. Sie sollten auch einen Listener einrichten, um auf Nachrichten zu antworten, die vom Service Worker zurückgesendet werden.

Vergewissern Sie sich, dass Sie diese steps zum ordnungsgemäßen Einrichten des GCM befolgt haben. Sie können diesen verwandten Link auch überprüfen: GCM Equivalent for Firefox

Hoffe, dass dies hilft!

+0

danke für die antwort, aber ich benutze die google gcm-dokumentation für die anmeldung und ich möchte sie in Firefox integrieren. https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=de –

1

Sie müssen Ihren Code im Client für die Registrierung für Push-Benachrichtigungen freigeben.

Mit dem gesagt, sobald Sie für Push-Benachrichtigungen registrieren, erhalten Sie ein Abonnement mit einem Endpunkt. In Firefox wird dieser Endpunkt nie eine GCM-URL, aber einen Push-Server von Mozilla zur Verfügung gestellt werden:

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. 

Hier sind wichtige Hinweise zu beachten:

  • registrieren Sie sich für Push-Benachrichtigungen korrekt in Firefox?
  • Überprüfen Sie die URL für den Endpunkt, den Sie für die Durchführung der Push-Benachrichtigung erreichen müssen, ist ein Mozilla-Server eins?
  • Legen Sie Haltepunkte direkt nach dem Push-Listener fest, um zu überprüfen, ob Sie den Push empfangen.
+0

Danke für die Beantwortung, habe ich erfolgreich den Endpunkt vom Mozilla-Server, aber ich Ich kann keine Benachrichtigungen vom Mozilla-Server erhalten. sollte ich einen anderen Push-Listener für Mozilla-Server –

+0

machen diese sind die Schritte, denen ich gefolgt bin, https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web? hl = de –

+0

also habe ich deine räte geprüft, nur die letzte funktioniert nicht, der push-listener löst nicht auf Firefox aus, funktioniert aber einwandfrei auf google. –

Verwandte Themen