【问题标题】:node js FCM Send notifications to multiple users at oncenode js FCM 一次向多个用户发送通知
【发布时间】:2018-06-25 19:30:08
【问题描述】:
我正在基于 Firebase 构建云通知。我们目前正致力于创建一个服务器作为节点 js 并控制云通知。
不过我查了很多资料,上面的资料大部分都是通过发送通知时接收到token值的方式只传输给一个人的。
当然,我可以使用 mysql 将其发送给大量的人,但是是否可以将其发送给所有安装了该应用程序的用户作为 Firebase 控制台之类的用户段?
这是我引用的网站。我是使用此处提供的脚本制作的。
https://www.npmjs.com/package/fcm-node
【问题讨论】:
标签:
node.js
firebase
firebase-cloud-messaging
【解决方案1】:
但是否可以将其发送给所有安装了该应用的用户,作为 Firebase 控制台等用户群?
不可能开箱即用。您需要用户的registration token 来进行任何类型的消息传递。如果您没有所有用户的注册令牌,那么您需要为每个用户检索它。请记住在将令牌持久化到数据库之前验证令牌:https://firebase.google.com/docs/auth/admin/verify-id-tokens
正如fcm-node 的自述文件所述:
警告:2017 年 2 月 2 日,Firebase 团队向他们的 node.js 管理模块发布了 admin.messaging() 服务。 这项新服务使这个模块有点被弃用
话虽如此,您有两个选择:
- 通过注册令牌向多个用户发送通知:
-
const registrationTokens = [
'abc',
'efg',
'123'
];
const message = {
data: {
score: '850'
},
token: registrationToken
};
const promises = [];
registrationTokens.forEach(token => {
const promise = admin.messaging().send(message);
promises.push(promise);
});
Promise.all(promises)
.then(results => console.log(results))
.catch(err => console.error(err));
- 或者更好的是,在“用户段”上使用Topic Messaging。您需要为用户订阅他们各自的主题。例如,可以在here 找到有关如何执行此操作的 Android 文档
-
const message = {
data: {
score: '850'
},
topic: 'myUserSegmentTopic'
};
admin.messaging().send(message)
.then(res => console.log(res))
.error(err => console.error(err));