如何使用 javascript 从云功能接收通知负载到网站
how to receive notification payload from cloud function to website using javascript
我目前正在学习 firebase 云函数和 firebase 云消息传递,所以我对网络上的云函数和 FCM 还很陌生。我怎样才能从云函数接收通知负载并在网页上显示该通知?我想利用 Firebase Cloud Messaging 来做到这一点。到目前为止,这些文件对我来说有点混乱。该网站正在使用 Javascript。云函数的代码如下:
'use-strict'
const functions = require('firebase-functions');
const admin = require ('firebase-admin');
admin.initializeApp();
exports.sendNotification = functions.firestore.document("Employee_Details/{user_id}/Notifications/{notification_id}")
.onWrite((change , context) =>{
const user_id = context.params.user_id;
const notification_id = context.params.notification_id;
//console.log("User ID:" + user_id + "| Notification ID : " + notification_id);
return admin.firestore().collection("Employee_Details").doc(user_id)
.collection("Notifications").doc(notification_id).get().then(queryResult => {
const from_user_id = queryResult.data().from;
const from_description = queryResult.data().description;
const from_incident = queryResult.data().incident;
const receiver_id = queryResult.data().myId;
const from_data = admin.firestore().collection("Employee_Details").doc(from_user_id).get();
const to_data = admin.firestore().collection("Employee_Details").doc(user_id).get();
// console.log("FROM_DAT:" + from_data + "TO_DATA:" + to_data);
return Promise.all([from_data , to_data]).then(result => {
const from_name = result[0].data().first_name;
const to_name = result[1].data().first_name;
const token_id = result[1].data().token_id;
const payload = {
notification: {
title:"Notification from :" + from_name,
body :from_incident + ":" +from_description,
icon : "default",
},
data:{
message: from_description,
from_user_id : from_user_id,
receiver_id : receiver_id
}
};
return admin.messaging().sendToDevice(token_id , payload).then(reuslt =>{
return console.log("Notification sent.");
});
});
});
});
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification here
const notificationTitle = 'Background Message Title';
const notificationOptions = {
body: 'Background Message body.',
icon: '/firebase-logo.png'
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
我目前正在学习 firebase 云函数和 firebase 云消息传递,所以我对网络上的云函数和 FCM 还很陌生。我怎样才能从云函数接收通知负载并在网页上显示该通知?我想利用 Firebase Cloud Messaging 来做到这一点。到目前为止,这些文件对我来说有点混乱。该网站正在使用 Javascript。云函数的代码如下:
'use-strict'
const functions = require('firebase-functions');
const admin = require ('firebase-admin');
admin.initializeApp();
exports.sendNotification = functions.firestore.document("Employee_Details/{user_id}/Notifications/{notification_id}")
.onWrite((change , context) =>{
const user_id = context.params.user_id;
const notification_id = context.params.notification_id;
//console.log("User ID:" + user_id + "| Notification ID : " + notification_id);
return admin.firestore().collection("Employee_Details").doc(user_id)
.collection("Notifications").doc(notification_id).get().then(queryResult => {
const from_user_id = queryResult.data().from;
const from_description = queryResult.data().description;
const from_incident = queryResult.data().incident;
const receiver_id = queryResult.data().myId;
const from_data = admin.firestore().collection("Employee_Details").doc(from_user_id).get();
const to_data = admin.firestore().collection("Employee_Details").doc(user_id).get();
// console.log("FROM_DAT:" + from_data + "TO_DATA:" + to_data);
return Promise.all([from_data , to_data]).then(result => {
const from_name = result[0].data().first_name;
const to_name = result[1].data().first_name;
const token_id = result[1].data().token_id;
const payload = {
notification: {
title:"Notification from :" + from_name,
body :from_incident + ":" +from_description,
icon : "default",
},
data:{
message: from_description,
from_user_id : from_user_id,
receiver_id : receiver_id
}
};
return admin.messaging().sendToDevice(token_id , payload).then(reuslt =>{
return console.log("Notification sent.");
});
});
});
});
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification here
const notificationTitle = 'Background Message Title';
const notificationOptions = {
body: 'Background Message body.',
icon: '/firebase-logo.png'
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});