2

aufgerufen Ich versuche, Push-Nachrichten von GCM zu erhalten. Ich folgte einfach der Anleitung und registriert die Servicemitarbeiter wie folgt: -Push-Ereignis von Service Worker wird nicht

 function urlB64ToUint8Array(base64String) { 
     const padding = '='.repeat((4 - base64String.length % 4) % 4); 
     const base64 = (base64String + padding) 
     .replace(/\-/g, '+') 
     .replace(/_/g, '/'); 

     const rawData = window.atob(base64); 
     const outputArray = new Uint8Array(rawData.length); 

     for (let i = 0; i < rawData.length; ++i) { 
     outputArray[i] = rawData.charCodeAt(i); 
     } 
     return outputArray; 
    } 
    var subscribeForPush = function() { 
     navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) { 
      serviceWorkerRegistration.pushManager.subscribe({ 
        userVisibleOnly: true, 
        applicationServerKey : urlB64ToUint8Array('<API-KEY>') 
       }) 
       .then(function(subscription) { 
        console.log("Subscription for Push successful: ", subscription); 
       }) 
       .catch(function(error) { 
        console.log("Subscription for Push failed", error); 
       }); 
     }); 
    }; 
    if ('serviceWorker' in navigator) { 
      window.addEventListener('load', function() { 
      navigator.serviceWorker.register('/sw.js').then(function(registration) { 
       // Registration was successful 
       console.log('ServiceWorker registration successful with scope: ', registration.scope); 
       subscribeForPush(); 
      }).catch(function(err) { 
       // registration failed :(
       console.log('ServiceWorker registration failed: ', err); 
      }); 
     }); 
    } 

Nun, ich die Geräte-ID erhalten ("cw4jK8NhJgY: APA91bHr64E_kSdh7kN_VjcZRKulPf8KPLJLBjtnHI2qkYzx3-I9aUhunjzVcJjLtkHl9zvN8ys80gADK8tV8SueLX1R2jS0xgrf1Ur6cDw3jNjloUJp8PtWaIN-cEKXj69TZ9-D2Hiw")

von url: - "https://android.googleapis.com/gcm/send/cw4jK8NhJgY:APA91bHr64E_kSdh7kN_VjcZRKulPf8KPLJLBjtnHI2qkYzx3-I9aUhunjzVcJjLtkHl9zvN8ys80gADK8tV8SueLX1R2jS0xgrf1Ur6cDw3jNjloUJp8PtWaIN-cEKXj69TZ9-D2Hiw"

In meinem Dienst Arbeiter-Datei, ich höre einfach Nachrichten drücken, wie: -

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

Ich bin in der Lage, Nachrichten senden die Nachricht mit Terminal GCM und erhalten: -

{"multicast_id":4983340130324592129,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1483043226210433%cc9b4facf9fd7ecd"}]} 

Aber ich weiß nicht, warum ich sehe anmeldet Push-Zuhörer nicht? Ich stecke mehr als zwei Tage in dieser Ausgabe fest. Kann mir bitte jemand hier helfen? Ich mache das in localhost.

+0

Sie können diese [verwandte SO-Post] (http://stackoverflow.com/a/20677002/5832311) überprüfen und versuchen die Workarounds gegeben, wenn es hilft. Manchmal dauert es einige Zeit, bis der Push ankommt. Überprüfe also, was das "time_to_live" (https://developers.google.com/cloud-messaging/http-server-ref#downstream-http-messages-json) von Push hast du gesendet. – abielita

Antwort

2

Sie nicht die pushManager

abonnieren zurückkehren
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) { 
    return serviceWorkerRegistration.pushManager.subscribe({ 
     'userVisibleOnly': true 
}).then(function(subscription) { 
     if (!subscription) { 
      // Set appropriate app states. 
      return; 
     } 
     console.log(subscription.endpoint); 

    }).catch(function (err) { 
     console.log('error in subcription .. '+ err); 
    }); 

}) 

Überprüfen Sie mein GitHub Projekt https://github.com/bvakiti/bvakiti.github.io/blob/master/app.js

mich, wenn Sie irgendwelche Informationen benötigen Lassen Sie wissen

1

I-Lösung zu bvakiti hinzufügen möchten, indem er erklärt

applicationServerKey: convertedVapidKey 

im PushManager abonnieren. Die meisten Tutorials, die ich im Internet gefunden habe, verwenden nur die Methode von bvakiti und die meisten Entwickler, die diesem Tutorial folgen, haben Probleme beim Empfang der Push-Benachrichtigungen festgestellt.

Verwandte Themen