我们有一个启用了 APNS 的 XMPP 聊天客户端。每次,其他用户的应用程序处于非活动状态时,我们都会在服务器上触发推送,以提醒其他用户他在应用程序中有未读消息。我们当前的实现是我们有一个队列,将其传递给每分钟运行的 cron 作业,该作业构建有效负载并将其转发到 Apple 服务器。现在的问题是,这花费的时间太长了,因为该应用程序是一个聊天客户端,用户希望他们会立即收到推送通知(当然延迟几秒钟是可以接受的,因为我知道即使是苹果也可能需要一个在发送推送通知时,但根据我的经验,客户端需要几秒钟才能收到它)。
现在我知道 Apple 在请求方面有限制,这与 C2DM(现在称为 GCM)不同,所以这就是为什么我们将它放在队列中,并将其传递给 cron 作业。其他应用程序正在这样做,我真的不知道他们是如何真正接近实时地做到这一点的。
以下是我的一些问题:
- 我们需要改变我们的实现吗?(队列和 cron 作业)。
- 拥有多个提供商是否可以解决问题?如果是,对此有何要求?
- 是否有任何付费服务已经在这样做?有人能说出一些吗?