javascript - 如何在颤振中使用 javascript 云函数发送 fcm 通知?
问题描述
我创建了一个应用程序来测试颤振应用程序中的推送通知。
我可以从 firebase 消息控制台发送通知,也可以在前台和后台接收它。
完成此操作后,我进入下一步,即使用 firebase 云消息传递服务自动发送它,我使用了 javascript 并部署了函数,它可以毫无问题地执行。
但问题是我无法收到这样的通知:-
但是当我打开我的应用程序时,因为我已经在 initState(); 中配置了 firebase 消息传递;我也可以看到通知和数据被打印出来,但我无法像上面的照片那样收到它。
我应该怎么办?
正如firebase消息插件的自述文件所说,尝试使用后台处理程序或顶级方法。
关于我的 javascript index.js 文件:
当新文档添加到帖子集合时,它会为 pushTokens 集合中的所有令牌发送通知,并且它会执行此操作,但问题是我在上面提到过。
索引.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;
})
});
解决方案
将您的应用程序置于后台并尝试再次发送通知如果您在发送通知时使用该应用程序,bcoz flutter firebase 消息传递插件将不会创建通知,尽管您可以在其中看到其数据,但要生成通知,您必须手动执行如果用户当前正在使用该应用程序。
在其他情况下,插件将创建通知,例如应用程序是否终止或其在后台。
推荐阅读
- azure - Powerapps 到 Azure SQL Server 的连接突然出错 Bad Data source 内部异常,不是有效的数据源
- javascript - 将 HTML 元素添加到 vue 模板
- bash - 创建没有外部依赖的二进制文件
- javascript - MySQL 只返回值而不进行字符串解析
- jooq - JOOQ 代码生成器索引
- python - 如何扩展 zip 以包含 3 个列表
- java - ExecutorService 中超时的理想值
- swift - Equatable 未检测到同一类的两个对象之间的差异
- css - `min-height: max-content` 是什么意思?
- javascript - Why the div that is appearing with click event dose not able to be dragged?