如何在Flutter中使用JavaScript云功能发送fcm通知?

时间:2019-12-02 16:38:12

标签: javascript node.js firebase flutter firebase-cloud-messaging

我已经创建了一个应用来测试Flutter应用中的推送通知。

我能够从Firebase消息传递控制台发送通知,并且可以在前台和后台接收该通知。

完成此操作后,我进入了下一步,即使用Firebase云消息传递服务自动发送它,并使用javascript并部署了函数,并且可以顺利执行。

但是问题是我无法收到这样的通知:-

enter image description here

但是当我打开应用程序以来,因为我已经在initState()中配置了Firebase消息传递;我可以看到通知和数据也被打印出来,但是我不能像上面的照片那样收到它。


我该怎么办?

尝试使用后台处理程序或顶级方法,如Firebase消息传递插件的自述文件所述。


关于我的javascript index.js文件:

当将新文档添加到posts集合时,它将为pushTokens集合中的所有令牌发送通知,并且这样做,但是问题是我上面已经提到。

Index.js:

const functions = require('firebase-functions');

const admin = require('firebase-admin');


admin.initializeApp(functions.config().firebase);

var notificationMessageData;

exports.fcmTester = functions.firestore.document('posts/{postID}').onCreate((snapshot, context) => {
    const notificationMessageData = snapshot.data();

    return admin.firestore().collection('pushTokens').get()
        .then(snapshot => {
            var tokens = [];

            if (snapshot.empty) {
                console.log('No Devices');
                throw new Error('No Devices');
            } else {
                for (var token of snapshot.docs) {
                    tokens.push(token.data().tokenID);
                }

                var payload = {
                    "notification": {
                        "title": "from" + notificationMessageData.writer,
                        "body": "from" + notificationMessageData.name,
                        "sound": "default"
                    },
                    "data": {
                        "sendername": notificationMessageData.writer,
                        "message": notificationMessageData.name
                    }
                }

                return admin.messaging().sendToDevice(tokens, payload)
            }

        })
        .catch((err) => {
            console.log(err);
            return null;
        })

});

1 个答案:

答案 0 :(得分:0)

将您的应用程序置于后台,然后尝试再次发送通知,如果您在发送通知的同时正在使用该应用程序,则bcoz flutter Firebase消息传递插件将不会创建通知,尽管您可以在其中看到其数据,但必须生成通知如果用户当前正在使用该应用,则手动进行操作。

在其他情况下,插件会创建通知,例如应用终止或在后台运行。