2012-10-31 125 views
2

我是Android的新手,所以我正在尋找最好的方法發送(網絡服務)text/data到一個特定的android device一次(每次到另一個用戶)。 的步驟是:發送數據從服務器到特定的Android設備

  1. web服務從所述應用程序接收JSON,登錄的用戶在一個時間(非常簡單) 那些;
  2. 服務器處理收到的數據並將其發送到一個特定的用戶\設備。每次服務器收到數據時,它都會將消息傳遞給其他用戶。
  3. 目前用戶是Android應用程序所有者。下一步 - 用戶可以使用另一個平臺的應用程序,我在服務器上註冊什麼樣的設備發送/應該接收數據。
  4. 如果用戶離線,則應從等待列表中刪除該消息,並且必須將其發送給在線的其他用戶。

我的主要問題是定義如何向特定用戶發送數據 - 通過ID\username,設備ID,其他? 我試圖練習GCM,但它似乎不完全是我正在尋找的,因爲我打算使用相同的服務器不僅發送數據到Android設備,而是發送到iPhone/Windows以及。 謝謝。

+0

gcm也可用於iphone,但我不確定有關Windows手機。 – meh

+0

據我所知,移動設備必須包含Google帳戶?這可能會限制Google帳戶的非所有者。 – InnaZis

回答

1

沒有辦法直接從你的服務器聯繫設備

  • 設備可能無法訪問
  • 在運營商圍牆花園設備,也沒有外面的IP地址(幾乎總是)

您唯一的解決方案就是雲消息傳遞。另外,您可以實現如下因素架構:

  • 所有設備都有唯一的ID與普通interwals
  • 設備輪詢服務器,看看是否有適合他們

如果你喜歡「下線」 - 模式,你可以考慮消息到期(例如,你的投票interwal是5分鐘,所有消息過期10分鐘內)

+0

謝謝。關於「必須擁有Google帳戶」的另一個問題 - 以任何方式跳過它? – InnaZis

+0

當然。如果你不使用GCM,那麼你的用戶不需要谷歌帳戶。 –

3

對於android,你應該使用GCM。對於其他平臺,他們應該擁有自己的Push Messaging API。

因此,當手機註冊GCM時,您將得到一個將與您的服務器通信的句柄。當你將這個句柄存儲在數據庫或其他東西中時,還要保存這種手機(Android,iOS等)。

當您想要通知用戶時,請檢查它是哪種商店,併爲不同的平臺實施不同的協議。

可能有一些圖書館將這個摘要也刪除 但我不知道任何

編輯:我已經發現了一些

您可能要檢查Urban Ship(商業),PushSharp服務器端庫,讓您發送推送通知到很多平臺或又和替代:StackMob。只要谷歌更多的選擇,如果既不請你。

+0

我明白了,謝謝。我能否避免使用關於「用戶必須擁有Google帳戶」的字詞?有很多用戶誰沒有... – InnaZis

+1

我相信,沒有谷歌帳戶,你得到了非常有限的使用手機。例如,你不應該能夠安裝應用程序,以便你的用戶永遠不會得到你的應用程序,對吧? (我假設一個普通用戶,而不是開發人員或黑客)。 –

相關問題