我创建了一个Node.js文件来发送通知与FCM的帮助,我上传文件到“功能”部分的Firebase,它工作正常,当它发现一个变化数据库它发送一个通知给设备。多个Firebase通知与Node.js
问题是,它发送同样的通知太多次了(在3到10之间)。
这是我的代码的Node.js:
var admin = require("firebase-admin");
var request = require('request');
const functions = require('firebase-functions');
var API_KEY = "<KEY>";
admin.initializeApp({
credential: admin.credential.cert({
projectId: "projectId",
clientEmail: "clientEmail",
privateKey: "privateKey"
}),
databaseURL: "https://database.firebaseio.com/"
});
exports.backendDeNotificaciones = functions.database.ref('/solicitudDeNotificaciones').onWrite(event => {
ref = admin.database().ref();
function EsperandoNotificaciones()
{
console.log("Esperando Notificaciones");
var requests = ref.child('solicitudDeNotificaciones');
requests.on('child_added', function(requestSnapshot)
{
var request = requestSnapshot.val();
enviarNotificacion(
request.username,
request.message,
function()
{
requestSnapshot.ref.remove();
});
}, function(error)
{
console.error(error);
});
};
function enviarNotificacion(username, message, onSuccess) {
request({
url: 'https://fcm.googleapis.com/fcm/send',
method: 'POST',
headers: {
'Content-Type' :' application/json',
'Authorization': 'key='+API_KEY
},
body: JSON.stringify({
notification: {
title: message
},
to : '/topics/TOPIC_NAME'
})
}, function(error, response, body) {
if (error) { console.error(error); }
else if (response.statusCode >= 400) {
console.error('Error de HTTP: '+response.statusCode+' — '+response.statusMessage);
}
else {
onSuccess();
console.log("Notificación Enviada :)");
}
});
}
EsperandoNotificaciones();
});
相反射击每一次有个孩子加入,也许你应该每隔一小时发一次,所以你把收集每隔一小时,然后将其发送的快照; **或者也许你可以跟踪(消息发送的人数和次数)** – Lamar