Iphone 推送通知与Web套接字用于实现实时聊天应用程序?

Iphone 推送通知与Web套接字用于实现实时聊天应用程序?,iphone,push-notification,apple-push-notifications,messaging,Iphone,Push Notification,Apple Push Notifications,Messaging,我正在考虑为iPhone构建一个实时聊天应用程序(但这个问题也适用于Android和其他设备),基本上我希望该应用程序在打开和关闭时都能接收实时消息,就像iPhone自己的“消息”应用程序一样 当它关闭时,我可以使用本机推送通知服务(如APNS),当应用程序打开时,我可以运行自己的websockets服务器或使用第三方提供商(如PubNub或Pusher),这就是我一直在做的事情 然后我想:为什么我不能在应用程序打开和关闭时完全依赖APNS来进行实时消息传递?这感觉像是一个更干净的解决方案,因为

我正在考虑为iPhone构建一个实时聊天应用程序(但这个问题也适用于Android和其他设备),基本上我希望该应用程序在打开和关闭时都能接收实时消息,就像iPhone自己的“消息”应用程序一样

当它关闭时,我可以使用本机推送通知服务(如APNS),当应用程序打开时,我可以运行自己的websockets服务器或使用第三方提供商(如PubNub或Pusher),这就是我一直在做的事情


然后我想:为什么我不能在应用程序打开和关闭时完全依赖APNS来进行实时消息传递?这感觉像是一个更干净的解决方案,因为它由一个推送服务器驱动。有人能启发我吗?谢谢。

APNS不是100%可靠的。在大多数情况下是这样,但不是100%。它也没有你提供的专门服务那么快。有时,推送消息需要一分钟以上才能到达。你需要考虑这些,并考虑到你设计的任何设计。如果你能接受这些限制,你确实可以依靠APN来更新你的客户端。此外,使用iOS7,应用程序可以在后台醒来,检索数据并更新其UI,以便向用户提供最新的应用程序

说到性能,能够处理大量打开的连接并同时为其提供服务并不像听起来那么简单,因此根据您的资源,您可能无法提供比Apple的APN更好的服务正常运行时间,因此上述限制虽然确实存在,但不一定像听起来那么糟糕


我认为最好的方法是,因为您无论如何都需要实现推送支持,只实现APNS,看看这是否能满足您和您的客户的需求。请记住,沙盒(调试)APNS服务器比正常生产APNS服务器慢,因此请使用发布版本进行测试,以查看仅使用APNS的实际性能影响。如果您在路上发现提供的服务不够,您只能实施进一步的服务。

非常感谢。我甚至不知道沙盒APN应该很慢,我想知道我的连接出了什么问题!你知道这种APNS方法是否是大多数消息应用程序(如Whatsapp、Line、微信等)所采用的方法吗?@Vlad Whatsapp和FB Messenger在应用程序处于活动状态时同时支持APNS和某种连接。我认为他们通过长期运行的后台任务扩展了这种联系。一旦应用程序在后台的时间足够长,他们就只能依靠APN了。Skype最近刚刚增加了推送支持,并且只依赖于自己的内部连接。这些是我唯一使用的,所以不确定其他的。