node js FCM一次将通知发送给多个用户

时间:2018-06-25 09:30:56

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

我正在基于Firebase构建云通知。我们目前正在努力将服务器创建为节点js,并控制云通知。

但是,我搜索了很多数据,并且在发送通知时,通过接收令牌值,上述大多数数据仅传输给一个人。

当然,我可以使用mysql将其发送给很多人,但是有可能将其发送给所有安装了该应用程序的用户(如Firebase控制台)吗?

这是我引用的网站。我使用此处提供的脚本制作的。

https://www.npmjs.com/package/fcm-node

1 个答案:

答案 0 :(得分:1)

  

但是可以将其发送给所有安装了该应用程序的用户作为Firebase控制台等用户细分吗?

不可能开箱即用。您需要用户的registration token来进行任何形式的消息传递。如果您没有所有用户的注册令牌,则需要为每个用户检索它。请记住在令牌之前 将其持久保存到数据库中:https://firebase.google.com/docs/auth/admin/verify-id-tokens

根据fcm-node的自述文件:

  

警告:2017年2月2日,Firebase团队将admin.messaging()服务发布到其node.js管理模块。 这项新服务使该模块不再适用

话虽如此,您有两种选择:

  1. 通过他们的注册令牌向多个用户发送通知:

-

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));
  1. 或者更好的是,在“用户群” 上使用Topic Messaging。您需要为用户订阅他们各自的主题。例如,可以在here
  2. 中找到有关如何执行此操作的Android文档

-

const message = {
  data: {
    score: '850'
  },
  topic: 'myUserSegmentTopic'
};

admin.messaging().send(message)
  .then(res => console.log(res))
  .error(err => console.error(err));