我正在考虑为iPhone构建一个实时聊天应用程序(但这个问题也适用于Android和其他设备)基本上我希望应用程序在打开时以及关闭时接收实时消息,就像iPhone自己的“消息”应用程序一样。
当它关闭时,我可以使用像APNS这样的原生推送通知服务,当应用程序打开时,我可以运行自己的websockets服务器或使用像PubNub或Pusher这样的第三方提供商,这是我一直在做的事情
然后我想知道:为什么我不能完全依赖APNS进行实时消息传递,同时应用程序处于打开状态且关闭时?这感觉就像一个更清洁的解决方案,因为它是由一个推送服务器驱动的。有人可以开导我吗?感谢。
答案 0 :(得分:25)
APNS并非100%可靠。在大多数情况下,但不是100%。它也没有您提供的专用服务那么快。有时,推送消息需要花费一分钟才能到达。您需要考虑这些并在您提出的任何设计中考虑它们。如果您可以忍受这些限制,您确实可以依靠APNS来更新您的客户端。此外,使用iOS7,应用程序可以在后台唤醒,检索数据并更新其UI,以便向用户呈现最新的应用程序。
在谈到性能时,能够处理多个开放式连接并同时为它们提供服务并不像听起来那么简单,因此根据您的资源,您可能无法提供比Apple更好的服务正常运行时间&# 39; s APNS,所以上述限制虽然是真实的,但并不一定像听起来那么糟糕。
我认为最好的是,因为你需要实现推送支持,只实现APNS,看看这是否满足你和你的客户。请记住,沙盒(调试)APNS服务器比正常生产APNS服务器慢,因此请使用发行版本进行测试,以了解仅使用APNS的真实性能影响。如果你发现提供的服务还不够,你只能实施其他服务。