2012-12-29 28 views
0

我正在嘗試爲Android實現聊天應用程序(用戶可以在同一位置溝通人員)。我正在考慮一個帶有Geo特定導向的Facebook Messenger。我遇到了像重複拉,彗星,波什,websockects,套接字編程,xmpp(這需要xmpp能力的服務器,如openfire)等條款來做到這一點。但我的資源是固定的像apache,php(codeignter)和MySql只。我需要找到有效的方法來做到這一點。夥計們,我需要這個。請幫幫我。什麼是最好的方式來實現只有Apache,PHP和MySQL的實時推送消息?

謝謝 abbiya

回答

7

Android上的首選方法是Google Cloud Messaging

Google Cloud Messaging for Android(GCM)是一項服務,它允許您從您的服務器向您的用戶的Android設備發送數據。 這可能是一個輕量級的消息,告訴你的應用程序有從服務器獲取的新數據 (例如,由 朋友上傳的電影),或者它可以是包含高達4kb有效載荷數據的消息 (so諸如即時消息的應用程序可以直接使用消息)。

GCM服務處理消息隊列的所有方面,並且將 傳遞到目標設備上運行的目標Android應用程序。無論您的消息傳遞需求有多大,GCM都是完全免費的,並且沒有配額。

從本質上講,它的工作原理是這樣的:您的服務器會談,谷歌,谷歌在實時推動信息(或幾乎如此,只要該設備開機並連接到Internet)來Android設備。第一次安裝應用程序時(在將來要重新驗證註冊時),Android設備上會發生註冊過程。 在您的Android應用程序中,您有責任將此註冊ID發送到您的服務器,以便將其存儲以供將來使用。當您想要將消息推送到該設備時,您的服務器使用此註冊ID。

您的服務器和Google之間的通信協議是基於HTTPS的JSON。您的服務器可以使用任何語言/技術,只要它可以與Google的服務器進行通信即可。一個PHP/MySQL的應用絕對能夠滿足服務的基本要求:

之前,你可以編寫使用GCM 功能的客戶端Android應用程序,您必須滿足以下 標準的應用服務器:

  • 能夠與您的客戶溝通。
  • 能夠向GCM服務器發出HTTPS請求。
  • 能夠處理請求並根據需要重新發送,使用指數回退。
  • 能夠存儲API密鑰和客戶端註冊ID。

在客戶端,的Android設備必須運行API版本8(2的Android。2)或更高版本。當然,這也是您的Android應用程序負責處理傳入的消息(使用BroadcastReceiver,因爲Android系統在消息到達時向您的接收器發送Intent),從而允許您處理消息但不管您想要的。

+0

IM應用程序。使用http不是最佳實踐。我現在使用rabbitmq的pubsub將消息推送到手機 –

+0

Google Cloud Messaging絕對是Android應用程序的最佳實踐,包括聊天型應用程序。雖然技術上GCM使用HTTPS,但其性能與標準HTTP完全不同。連接建立一次並保持永久打開狀態,因此每次收到消息時都沒有DNS或連接開銷。 GCM正確處理許多令人討厭的內部結構,以致其他人可能會忽視(安全性,重新傳送,應用程序未運行時接收,管理電池壽命等)。最後,無論如何,GCM已經在電話上運行**,所以使用它而不是建立額外的連接。 – user113215

+0

我不認爲它是正確的。 GCM正確處理消息的傳遞非常重要。但問題是發送消息時。從移動你必須使http conn和我們的服務器,它必須做一個http conn。它會使我們的服務器更加輝煌。 –

相關問題