向百万设备推送通知 + Apns + node.js

Posted

技术标签:

【中文标题】向百万设备推送通知 + Apns + node.js【英文标题】:Push notification to millions of device + Apns + node.js 【发布时间】:2017-07-10 14:19:21 【问题描述】:

我的应用程序堆栈是 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会拒绝。

上述方法是否正确也可以使所有通知传递者。

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

【问题讨论】:

【参考方案1】:

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

使用这种设计模式,您不再需要循环通知并通过 APN 发送,而是将这些通知推送到队列/消息系统中,并让工作人员从队列中拉出并处理(通过 APN 发送并写入mongo) 通知。这种设计的好处在于,随着应用程序的增长,您可以添加更多的工作人员来处理增加的负载,而无需重写您的应用程序/架构。构建完成后,它可能看起来像这样:

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

【讨论】:

【参考方案2】:

我认为循环遍历 10,000 个设备 ID 并调用 APNS 提供商并不是正确的前进方向。文档在这里严格说 node-apn readme file 重用 apn.Provider 而不是每次都重新创建它以实现最佳性能。

如果您使用设备 ID 数组发送通知,而不仅仅是设备 ID,那么您将收到来自 APNS 的响应,其中提及每个设备的所有详细信息。

【讨论】:

以上是关于向百万设备推送通知 + Apns + node.js的主要内容,如果未能解决你的问题,请参考以下文章

我们可以从 iOS 设备向 APNs 发送推送通知吗?

使用 APNS 的 Apple 推送通知是不是免费?

如何测试 sns APNS 推送通知到单个设备

向多个设备发送推送通知:一段时间后 APNS 响应是不是定的

Python - 通过 FCM / APNs 向 IOS 或 Android 设备推送通知

Azure 通知中心和 Apple APNS 推送通知取消注册设备