20

我正在研究爲iPhone構建實時聊天應用程序(但此問題也適用於Android和其他設備)基本上我希望應用程序在打開時以及在關閉時收到實時消息,就像iPhone自己的「消息」應用程序。推送通知與Web套接字實現實時聊天應用程序?

當它關閉時,我可以使用像APNS這樣的本地推送通知服務,當應用程序打開時,我可以運行自己的websockets服務器或使用PubNub或Pusher等第三方提供商,這正是我一直在做的其實。

然後我想知道:爲什麼我不能完全依靠APNS進行實時消息傳遞,無論是在應用程序打開並關閉時?這是一個更簡潔的解決方案,因爲它是由一臺推送服務器驅動的。有人能啓發我嗎?謝謝。

回答

22

APNS不是100%可靠的。在大多數情況下,但不是100%。它也沒有你提供的專門服務那麼快。有時,推送消息需要一分鐘以上才能到達。您需要考慮這些因素,並在您提出的任何設計中考慮這些因素。如果你能忍受這些限制,你確實可以依靠APNS來更新你的客戶。此外,在iOS7中,應用程序可以在後臺喚醒,檢索數據並更新其用戶界面,以便爲用戶提供最新的應用程序。在談論性能時,能夠處理多個開放連接並同時處理它們並不像聽起來那麼簡單,所以根據您的資源,您可能無法提供比Apple的服務更好的正常運行時間APNS,所以上述限制雖然是正確的,但並不一定像聽起來那麼糟糕。

我認爲最好的,因爲你需要實施推送支持,只實施APNS,並看看這是否滿足你和你的客戶。請記住,沙箱(調試)APNS服務器比正常的生產APNS服務器慢,因此請使用發佈版本進行測試,以查看僅啓用APNS的實際性能影響。如果在路上你注意到所提供的服務還不夠,你只能實施更多的服務。

+1

非常感謝。我甚至都不知道沙箱APNS應該很慢,並且想知道我的連接有什麼問題!你知道這種APNS方法是多數消息應用程序(如Whatsapp,Line,Wechat等)採用的方法嗎? – Vlad

+2

@Vlad WhatsApp和FB Messenger在應用程序處於活動狀態時同時支持APNS和某種連接。我認爲他們通過長時間運行的後臺任務擴展了這種連接一旦該應用在後臺運行足夠長時間,它們就只能依靠APNS。 Skype最近增加了推送支持,只依靠自己的內部連接。這些是我使用的唯一的,所以不確定其他人。 –