ajax - para - Cómo enviar notificaciones push en Chrome(Aplicaciones web progresivas)
push notifications web (1)
Google API está destinado a ser utilizado desde un servidor, por lo que no incluye encabezados CORS.
A medida que realiza un XHR de origen cruzado (desde su dominio al dominio de Google), el agente de usuario realiza una solicitud de verificación previa en busca de los encabezados CORS que indican que su cliente está autorizado a realizar operaciones.
Para hacer esto, debe realizar una solicitud a su servidor (es decir, una POST
/notifications/send
) y su servidor debe ejecutar la solicitud cURL a GCM.
Por favor, explica cómo hacer notificaciones push con XHR y Javascript. o hay otra forma de enviar notificaciones push en aplicaciones web progresivas. He creado el comando curl y cuando lo ejecuto en mi terminal envio la notificación enviada pero ¿cómo hacerlo al hacer clic en el botón?
Aquí está mi comando CURL:
curl --header "Authorization: key=AIzaSxUdg" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{/"registration_ids/":[/"cxA-dUj8BTs:APAvGlCYW/"]}"
Esto es lo que he intentado:
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
});
})
})
}
Pero muestra un error ----- XMLHttpRequest no puede cargar https://android.googleapis.com/gcm/send . La respuesta a la solicitud de verificación previa no pasa la comprobación de control de acceso: No hay encabezado ''Access-Control-Allow-Origin'' presente en el recurso solicitado. Origen '' http: // localhost: 8880 '' por lo tanto, no se permite el acceso ..