2013-07-31 48 views
8

我是GCM的新成員。我想向所有安裝了應用程序的設備發送消息。我讀了關於registration_id:在第一次連接到GCM後,谷歌發送這個唯一的字符串到設備。我是服務器世界的初學者,但是如果我沒有弄錯,在服務器端,爲了向設備發送通知,我必須發送一系列registration_id和消息給谷歌。Google Cloud Messaging向所有設備發送通知

谷歌知道如何註冊ID? 有沒有辦法將消息發送到所有設備而無需通過註冊商ID? 謝謝。

+0

您需要將registration_id存儲到數據庫中。請看看我的解決方案: http://stackoverflow.com/questions/17998875/googlecloudmessaging-returning-invalidregistration –

回答

11

有沒有辦法將消息發送到所有設備沒有通過註冊商ID?

沒辦法。
在GCM上成功註冊後,您(Android應用程序)應該將註冊ID發送到您的應用程序服務器,並將它們存儲在數據庫中的某個位置。此註冊ID將用於向特定設備發送通知。

要向所有設備發送通知,將意味着從該數據庫中選擇所有註冊ID,如您所說,將它們放入一個數組中,並將它們傳遞給GCM。

+0

好的,非常感謝您的promt答案..我會在我的服務器上做一個分貝,並把通知請求中所有設備註冊ID的查詢結果。謝謝。 – Tenaciousd93

+2

這不再是正確的答案。 Android推送基礎架構的更新已經使這個答案過時了。 –

6

您需要發送設備的註冊ID列表,並且此列表不應超過1000,這是GCM的限制,如果您要將消息發送到超過1000個設備,則需要以大塊1000.

+0

感謝您的回答,我已閱讀了1000個限制。 – Tenaciousd93

-1

我認爲這裏有一個困惑。我使用了github示例代碼(例如,將Java中的應用程序服務器部署到Tomcat)和Android應用程序。在那裏,我沒有將任何註冊ID「傳遞」或「發送」給應用服務器。它調用相關的API來檢索註冊ID並使用它們發送通知。爲什麼每個關於GCM註冊ID的主題都說需要將註冊ID傳遞給第三方應用服務器?恐怕我不同意。我認爲第三方應用服務器可以查詢GCM服務器本身,找出哪些設備已經註冊接收來自特定發件人(發件人ID)的通知。必須手動將註冊ID傳遞給第三方應用程序服務器會使整個過程自動化。也許我在這裏錯過了一些東西,或者我正在使用已棄用的內容。無論如何,自動化流程一旦啓動就如何涉及人工干預?

+0

我沒有使用你的例子,但如果我沒有弄錯,我使用這個配置:'1。 APP START:應用程序在谷歌服務器上註冊設備。 2.我在服務器的數據庫上發送設備的「唯一代碼」。 3.服務器:如果我將通知發送到某些設備,我從數據庫中查詢這些「唯一代碼」,然後將它們發送到谷歌服務器。 4.只有選定的設備纔會收到通知。「您必須向Google服務器提供一組設備ID,因此您必須將這些ID存儲到您的服務器中。 – Tenaciousd93

15

藉助GCM 3.0,現在可以通過主題支持向所有設備發送通知。該應用程序必須適用於一個或多個主題,服務器可以向該主題發送通知,而無需指定單個設備。

https://developers.google.com/cloud-messaging/topic-messaging

可以suscribe所有設備到一個名爲「全球」主題,然後發送郵件,而不是將它們發送到所有的registration_ids爲「/主題/全球」。

+0

丹尼爾,可以有超過1000個設備訂閱了一個主題嗎?通常的API限制了1000個註冊ID。這裏有沒有類似的限制? –

6

是的,有一種方法可以發送消息給所有人!

只需在'to'字段中發送'/ topics/global'值,而不是在'registration_ids'字段中輸入id。

例如在PHP:

'to' => "/topics/global", 

而不是這樣的:

'registration_ids' => $this->devices 
1

創建notification_key,其中通過映射一個特定組的所有組的相關聯的註冊標記的標識設備組(您可以在應用程序服務器上創建通知密鑰)。 使用notification_key,應用程序服務器不會一次向一個註冊令牌發送一條消息,而是可以向notification_key發送一條消息,然後GCM將消息發送給所有組的註冊令牌。

另請注意,允許使用notification_key的最大成員數量爲。

Google Dev網站特別爲此主題添加了一個新指南。 https://developers.google.com/cloud-messaging/notifications#sending_downstream_messages_to_device_group

相關問題