javascript - google - notificaciones push web firebase
No recibir notificaciones automáticas de FCM para la web en localhost (2)
Así que tengo que implementar notificaciones push web en nuestra aplicación web, configuré con éxito la mensajería en la nube de firebase en mi aplicación con la ayuda de documentos, puedo pedirle permiso al usuario para recibir notificaciones y obtener también la identificación del token si él acepta el permiso.
El problema es cuando trato de enviar una notificación para probar el token generado, obtengo una respuesta de que se envió el mensaje, pero no puedo recibirlo en el lado del cliente.
Mi index.html
<head>
<script src="https://www.gstatic.com/firebasejs/4.4.0/firebase.js"></script>
<link rel="manifest" href="./firebase.json">
</head>
<script>
if (''serviceWorker'' in navigator) {
navigator.serviceWorker.register(''./firebase-messaging-sw.js'').then(function(registration) {
console.log(''Firebase Worker Registered'');
}).catch(function(err) {
console.log(''Service Worker registration failed: '', err);
});
}
</script>
Puedo registrar con éxito el archivo de trabajador de servicio
Mi App.component.ts
var config = {
apiKey: "somekey",
authDomain: "someproject-2.firebaseapp.com",
databaseURL: "https://someproject-2.firebaseio.com",
projectId: "someproject-2",
storageBucket: "",
messagingSenderId: "someid"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.requestPermission()
.then(function() {
console.log(''Notification permission granted.'');
return messaging.getToken()
})
.then(function(result) {
console.log("The token is: ", result);
})
.catch(function(err) {
console.log(''Unable to get permission to notify.'', err);
});
messaging.onMessage(function(payload) {
console.log("Message received. ", payload);
});
Obtengo el cuadro de diálogo de permiso solicitando permiso y obteniendo un token con este código
El código curl que utilicé para enviar mensajes
curl -X POST -H "Authorization: key=somekey" -H "Content-Type: application/json" -d ''{
"notification": {
"title": "Portugal vs. Denmark",
"body": "5 to 1",
"icon": "firebase-logo.png",
"click_action": "http://localhost:8081"
},
"to": "sometoken"
}'' "https://fcm.googleapis.com/fcm/send"
Puedo enviar notificaciones con éxito con este código
No puedo entender dónde estoy yendo mal, ¿tal vez porque está en el localhost? tal vez el método onMessage no se está ejecutando correctamente? ¡Cualquier ayuda es muy apreciada!
Como se indica en el sitio web de FCM:
El SDK de FCM solo se admite en páginas servidas a través de HTTPS. Esto se debe a su uso de trabajadores del servicio, que están disponibles solo en sitios HTTPS.
Ver https://firebase.google.com/docs/cloud-messaging/js/client
Bien, no obtuve ninguna respuesta para esto en , ¡así que tengo que hacerlo solo y ponerlo en funcionamiento!
El problema estaba en el archivo del trabajador del servicio, aparentemente no he definido la variable de mensajería.
Si alguien se enfrenta a este problema, solo asegúrate de que tu archivo de trabajador de servicio tenga un aspecto similar.
importScripts(''https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'');
importScripts(''https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'');
firebase.initializeApp({
''messagingSenderId'': ''182145913801''
});
const messaging = firebase.messaging();