将通知推送到数百万设备+ Apns + node.js

时间:2017-07-10 14:19:21

标签: node.js mongodb notifications apple-push-notifications

我的应用程序堆栈是ios(前端)和node.js(后端)。我必须向设备发送通知。在我的node.js部分我使用apns模块发送通知,其工作正常......

现在我必须像往常一样发送群发通知,考虑我有10,000个设备要通知,我接下来的逻辑是什么

我正在遍历10,000个设备并调用apns提供程序。

1.为什么这个for循环方法

我必须将每个通知详细信息存储在我的mongodb集合中,所以我遵循这种方法。

问题是某些设备收到通知,而且非常晚(第二天)收到通知。

我也读了这个链接 https://www.raywenderlich.com/156966/push-notifications-tutorial-getting-started 说apns会拒绝。

上述方法是否也适用于制作所有通知提供者的任何方式。

请分享您的想法。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您需要在发送之前/之后处理每个单独的通知,我会建议从循环中进行设计更改,然后让您查看job queue

使用这种设计模式,您可以将这些通知推送到队列/消息传递系统,并让工作人员从队列和进程中获取(通过APN发送并写入mongo)通知。这种设计的好处在于,随着应用程序的增长,您可以添加更多工作人员来处理增加的负载,而无需重写您的应用程序/体系结构。一旦你建成它可能看起来像这样:

enter image description here

我个人使用RabbitMQ作为我的工作队列,但这个决定是你需要自己研究的。例如,如果您不想管理邮件系统,则可以查看AWS Simple Queue Service之类的内容。

答案 1 :(得分:0)

我认为,遍历10,000个设备ID并致电APNS提供商并不是正确的方法。文档在这里node-apn readme file严格说,可以重用 apn.Provider ,而不是每次都重新创建它以获得最佳性能。

如果您使用设备ID的数组(而不只是设备ID)发送通知,那么您会收到APNS的答复,其中提到了每个设备的所有详细信息。