如何编写Firebase Cloud Messaging功能以发送推送通知

时间:2019-01-31 14:51:54

标签: node.js firebase push-notification dart flutter

我正在尝试通过FCM从管理界面向用户发送推送通知, 我有一部分用户订阅管理员主题。

当我从Firebase控制台发送通知时,它正在工作。 管理员可以将数据上传到Firebases实时数据库,该数据库包括通知文本和主题(如果缺少某些内容,请告诉我)。

如何编写Firebase 功能,该功能在通知上载到实时数据库时触发,并将通知发送给订阅该主题的用户? 如果有人可以和我分享一个例子,我会感到非常高兴,因为我对node.js不熟悉。 谢谢!

1 个答案:

答案 0 :(得分:1)

您需要的是here概述的数据库触发器。您可以编写如下函数:

exports.sendNotification = functions.database  
            .ref('/notification/{topicId}/messages/{messageId}')
            .onCreate((snapshot, context) => {


    const topicId  = context.params.topicId;
    const messageId = context.params.messageId;
    const summaryLabel = topicId +"-"messageId; 
    const receivedOn = Date.now();

    const payload = {

        data: {
            topicId: topicId,
            messageId: messageId,
            time: receivedOn
        },

        notification: {
            title: "Notification Title",
            body: summaryLabel,
            icon: '/img/blue_map_icon.png',
            click_action: `https://${process.env.GCLOUD_PROJECT}.firebaseapp.com`,
            sound: "default"
        }
    };

    const options = {
        priority: "high",
        timeToLive: 60 * 60 * 2
    }; 

    return admin.messaging().sendToTopic(topicId, payload, options);


});