2012-06-22 45 views
0

我正在Android 4.0.3中創建一個應用程序,即ICS版本,當客戶端登錄到應用程序時連接到服務器。我試圖獲取客戶端的狀態,當他通過在應用屏幕上看到的服務器&進入在線或離線狀態。我無法繼續。誰能說我:Android:通過SERVER獲取在線或離線狀態

是否有可能通過服務器獲取用戶的狀態?

1--如何進行第一步......?

2--我應該如何從服務器得到客戶端連接的響應&查看到其他客戶端的例子 - 當我們登錄到Skype時,我們的狀態顯示可用綠色單選按鈕,以同樣的方式,我怎樣才能得到它。?

這會很幫忙,如果有人指導我。 很多謝謝..

回答

3

我假設你正在開發一個聊天應用程序?

如果是這種情況,請嘗試使用XMPP庫。 XMPP廣泛用於聊天應用程序,包括Facebook聊天(以及我認爲的Google Talk),並且有很多開源庫可用。否則,如果您只希望實時通知作爲更大圖片的一部分,請嘗試使用推送通知。 Google支持Android的Cloud to Device Messaging(C2DM)。它允許將通知推送到特定的設備,而無需處理持續連接,電池和CPU使用等。

C2DM方法歸結爲此。當客戶端連接到您的服務器時,獲取他的朋友和他們的'C2DM ID'的列表,並將C2DM推送到他們的設備。這個推送被傳送到您的應用程序,您可以通過發出通知或更新UI等來響應它。 (您的應用程序不一定必須運行,推送通知通過特定的廣播傳送,您的應用程序可以註冊接收器以使其喚醒)。

請記住,有一個C2DM消息的配額每設備,每個應用程序和每個消息的有效負載限制。所以你不應該通過這個發送大量的文件。只需通知您的應用程序,以便它可以調用您的服務器並獲取更新列表,而不是輪詢。

您可以在這裏獲得關於C2DM和代碼示例的更多信息。 https://developers.google.com/android/c2dm/

希望這會有所幫助。

0

你可能已經搬家了,但我發佈了任何未來會遇到這個問題的人。

Firebase是一個很好的解決方案,在這種情況下使用,如果應用程序總是在您希望進行通信時運行。(它不會喚醒你的應用程序作爲C2DM/CDM做,除非你有運行所有的時間服務,並仍然沒有醒來,如果該設備是睡着了...... AFAIK

它可能對某些場景很有用,但可能不適用於聊天應用,因爲您希望設備在消息到達時喚醒。

請注意,它們對免費訂閱有限制。