我的应用程序堆栈是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会拒绝。
上述方法是否也适用于制作所有通知提供者的任何方式。
请分享您的想法。提前谢谢。
答案 0 :(得分:0)
如果您需要在发送之前/之后处理每个单独的通知,我会建议从循环中进行设计更改,然后让您查看job queue。
使用这种设计模式,您可以将这些通知推送到队列/消息传递系统,并让工作人员从队列和进程中获取(通过APN发送并写入mongo)通知。这种设计的好处在于,随着应用程序的增长,您可以添加更多工作人员来处理增加的负载,而无需重写您的应用程序/体系结构。一旦你建成它可能看起来像这样:
我个人使用RabbitMQ作为我的工作队列,但这个决定是你需要自己研究的。例如,如果您不想管理邮件系统,则可以查看AWS Simple Queue Service之类的内容。
答案 1 :(得分:0)
我认为,遍历10,000个设备ID并致电APNS提供商并不是正确的方法。文档在这里node-apn readme file严格说,可以重用 apn.Provider ,而不是每次都重新创建它以获得最佳性能。
如果您使用设备ID的数组(而不只是设备ID)发送通知,那么您会收到APNS的答复,其中提到了每个设备的所有详细信息。