2011-04-27 48 views

回答

13

對於Android:Whatsapp建立在C2DM之上,當應用程序打開時,它會打開與其服務的XMPP連接以立即傳遞消息。他們也可能使用MQTT作爲協議來減少電池使用量。基本上就是這樣。

編輯:我學到了更多,Facebook在他們的消息應用程序中使用MQTT。 Whatsapp建立在XMPP上,並帶有自己的擴展。他們的服務器端運行在ejabbard之上(erlang中的XMPP實現)。 http://www.ejabberd.im/

在2.1之前的設備上,WhatsApp可能會在後臺保持與XMPP服務器之間的連接,但這對於電池壽命並不是很好。

+0

你如何確定他們在使用C2MD,請你詳細說明一下,因爲C2MD也使用XMPP協議,那麼爲什麼WhatsApp不會使用他們自己的服務而不是使用C2MD? – Hunt 2014-06-04 05:54:51

0

我不知道在whatsapp中使用了什麼確切的技術。但是,如果我要實施通知,其中不支持來自操作系統的推送通知,我可以做兩件事:

  1. 每隔X秒輪詢一次遠程服務器並檢查新通知(這是比較昂貴的選擇)。
  2. 運行一個後臺服務,維護與遠程服務器的連接,這將向我發送任何要接收的通知(有點像我自己的推送通知實現)。
+0

您的第二種方法是否也適用於離線通知? – angelokh 2011-04-29 06:49:38

+0

你能詳細說明'離線通知'的含義嗎? – thekindofme 2011-04-29 06:52:54

+0

我認爲在服務器端需要做一些事情,比如當目標設備關閉時將狀態和通知存儲到存儲設備中。 – angelokh 2011-05-01 21:55:34

2

現在將C2DM替換爲GCM (google cloud messaging)。您可以使用它將通知發送到您的應用程序。對於消息交換,應該依賴xmpp(whatsapp),mqtt(facebook messenger),mtproto(telegram)等協議。

如果您希望熟悉GCM。試試這個教程由appsrox - Create an Instant Messaging app using Google Cloud Messaging (GCM)

他們也使用GCM的消息傳遞以及。它不適合生產,但它對於想要開發即時消息android應用程序的人來說是一個很好的資源。

相關問題