Node.jsファイルを作成してFCMの通知で通知を送信しました。ファイルをFirebaseの「機能」セクションにアップロードしました。正しく動作します。データベースは、デバイスに通知を送信します。Node.jsを使用した複数のFirebase通知
問題は、同じ通知を何回(3〜10回)送信するかという問題です。
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