2013-05-27 145 views
8

在我的應用程序中,我想發送通知給特定的用戶,而不考慮設備。 用戶可以從任何設備登錄到應用程序。發送GCM消息給特定用戶

這是我第一次使用GCM。我讀過文檔說,當設備註冊到GCM服務器時,設備將該唯一ID發送到服務器,然後保存該值以發送消息。

那麼當他從不同設備登錄到應用程序時,如何向特定用戶發送通知?

+0

請參閱本http://sunil-android.blogspot.in/2013/05/gcm-in-android.html –

回答

6

這個唯一的ID(aka註冊ID)在給定應用程序/設備時是唯一的,所以如果此用戶在另一個設備上註冊GCM服務,它將生成另一個註冊ID。

GCM服務器向Android應用程序發出的ID,允許其接收消息。一旦Android應用程序具有註冊ID,它將其發送到第三方應用程序服務器,該服務器使用該應用程序服務器來識別每個已註冊接收給定Android應用程序消息的設備。換句話說,註冊ID綁定到特定設備上運行的特定Android應用程序。

當你說登錄我想你reffering到你的服務器,對不對?

我這樣問,因爲如果您的應用程序的目標是前4個API版本,GCM服務需要Google帳戶。

對於運行Android 4.0.4或更高版本的設備,不需要Google帳戶。

如果GCM在設備上檢測到可以訪問該服務的Google帳戶, 如果GCM未檢測到該帳戶,它將返回一個ACCOUNT_MISSING錯誤。

因此,如果您使用之前已註冊過Google帳戶的其他設備,則可能會發生這種情況,即使用不屬於您的Google帳戶訪問GCM服務。

但是,如果重要的帳戶是由您的服務器管理的帳戶,那麼我認爲這並不重要。

更新時間:

您必須將通知發送到屬於連接到服務器的用戶的所有registrationID。如果您在服務器上維護多個設備,則無法知道用戶當前正在使用哪個設備。

You can use multicast

Reference:GCM

+0

Yes.User必須登錄到我的服務器。 – Sunny

+0

我想我可以檢查我的服務器中的userid + Unique id然後發送notification.right? – Sunny

+0

使用唯一標識符就足以發送通知,但GCM可以更改它,然後您必須更新綁定到數據庫中用戶標識的唯一標識。有關我提供的鏈接的詳細信息[http://developer.android.com/google/gcm/gcm.html#server](http://developer.android.com/google/gcm/gcm。HTML#服務器)。 – AlexBcn