2011-12-18 58 views
1

Currenlty我正在嘗試爲Android開發一個簡單的聊天應用程序。我想創建一些與WhatsApp類似的東西。因爲它應該是實時的,我認爲C2DM是用戶向另一個用戶發送消息時發送通知的最佳方式。C2DM推式聊天應用程序

因爲我已經讀過C2DM是隻爲會話建立的,而不是消息,我必須找到一種方法將這些消息傳遞給其他聯繫人。

現在,我有一個應用程序服務器,可以發送C2DM通知。但是,發送和接收「文本消息」的最好和最節能的方式是什麼?

我已經閱讀了關於輪詢的內容,但這並不是說我認爲節能。我已經閱讀了一些關於'XMPP'的內容,但是我怎樣才能將它與C2DM相結合呢?

+0

你有沒有想過C2DM的成本? – the100rabh

+0

如果你的意思是能源成本?是的,因爲已經有一個開放的C2DM連接,您可以使用此連接。我也看到了不同的演講,其結果是C2DM是推動notificatoins最節能的方式。 – Sander

+0

如果我們要在服務器端 使用輪詢 檢查新鮮的If-Modified-由於=> 304,如果沒有新的 投票儘可能少 待機功耗〜5-8毫安 但在調查中,網絡每次短調查結果爲115-200毫安 〜0.5毫安時(無線電持續一段時間) 〜144毫安時/天,5分鐘輪詢頻率 〜10%的電池! 〜48 mAh /天,輪詢頻率爲15分鐘 – Sander

回答

0
  1. 用戶A向用戶B發送消息,即嚮應用服務器發送消息。
  2. 您的應用程序服務器收到從A到B的消息。它向B發送C2DM通知,告知B有新數據。
  3. 用戶B接收到新的數據的C2DM通知,連接到你的應用服務器和檢索來自用戶A.

這種機制只推數據的消息,也沒有投票。

+0

謝謝,但是從應用程序服務器中檢索消息的能源效率最高的方法是什麼?我想用一個webrequest? – Sander

+0

這不是一個微不足道的問題。每次用戶擁有新數據時都會發出http請求。它肯定比投票更有效。如果您詢問XMPP,我不知道。 Whatsapp使用XMPP,這個協議是用於實時消息傳遞的,因此總體而言它應該能夠更好地滿足您的需求,因爲這正是您要做的。 – aromero

+0

是的,如果我是對的,WhatsApp會使用XMPP。但是,我怎樣才能將WhatsApp與XMPP結合起來?因爲如果XMPP是實時的,如果我是對的,我不必使用C2DM。或者如果有新消息,我必須檢查XMPP服務器。什麼是最好的選擇呢? – Sander