0

Bitte erklären Sie, wie Sie Push-Benachrichtigungen mit XHR und Javascript durchführen. Oder gibt es eine andere Möglichkeit, Push-Benachrichtigungen in progressiven Web-Apps zu senden. Ich habe Curl-Befehl erstellt und wenn ich es in meinem Terminal ausführen Push-Benachrichtigung gesendet, aber wie es auf Knopfdruck zu tun?So senden Sie Push-Benachrichtigungen in Chrome (Progressive Web Apps)

Hier ist mein cURL-Befehl: -

curl --header "Authorization: key=AIzaSxUdg" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"cxA-dUj8BTs:APAvGlCYW\"]}" 

Dies ist, was ich versucht habe: -

function send() 
{ 
    navigator.serviceWorker.ready 
    .then(function(registration) { 
     registration.pushManager.getSubscription() 
     .then(function (subscription) {   
     curlCommand(subscription); 

    $.ajax({ 
     url: "https://android.googleapis.com/gcm/send", 
     headers: { 
      Authorization: "key=AIzaSxUdg", 
     }, 
    contentType: "application/json", 
    data: JSON.stringify({ 
     "registration_ids": [endpoint] 
    }),   
      xhrFields: { 
       withCredentials: true 
      }, 
      crossDomain: true, 
      type:"push", 
      dataType: 'json' 
}) 
.done(function() { 
    alert('done'); 
}) 
.fail(function() { 

    alert('err');// Error 
}); 
}) 
}) 
} 

Aber es zeigt Fehler ----- XMLHttpRequest nicht https://android.googleapis.com/gcm/send laden kann. Die Antwort auf die Preflight-Anforderung übergibt die Zugriffskontrollprüfung nicht: Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Herkunft 'http://localhost:8880' ist daher nicht erlaubt ..

Antwort

3

Google API soll von einem Server verwendet werden, so dass es keine CORS-Header enthält.

Während Sie ein XHR-Kreuzursprung ausführen (von Ihrer Domain zur Google-Domain), führt der User Agent eine Preflight-Anfrage auf der Suche nach den CORS-Headern durch, die Ihren Client zur Durchführung von Operationen autorisieren.

das Sie eine Anfrage an den Server tun müssen, (das heißt ein POST auf /notifications/send) und den Server machen sollte dann die cURL Anfrage an GCM auszuführen.

+0

Dies ist jetzt möglicherweise mit XHR möglich. Siehe Salvas andere Antwort (http://stackoverflow.com/a/36894224/1299792) zur Diskussion. – Marklar

Verwandte Themen