簡體   English   中英

Google Cloud Messaging會向所有設備發送通知

[英]Google Cloud Messaging send notification to all devices

我是GCM的新手。 我想向所有安裝了該應用的設備發送消息。 我讀到了registration_id:在第一次連接到GCM后,谷歌將這個唯一的字符串發送給設備。 我是服務器世界的初學者,但如果我沒有弄錯,在服務器端,為了向設備發送通知,我必須發送registration_id數組和google的消息。

谷歌知道注冊號碼是怎么回事? 有沒有辦法在沒有通過注冊號碼的情況下向所有設備發送消息? 謝謝。

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

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

您可以將所有設備設置為名為“global”的主題,然后將消息發送到“/ topics / global”,而不是將它們發送到所有registration_ids。

有沒有辦法在沒有通過注冊號碼的情況下向所有設備發送消息?

沒門。
在GCM上成功注冊后,您(Android應用程序)應將注冊ID發送到您的應用程序服務器並將其存儲在某個地方,例如數據庫中。 此注冊ID將用於向特定設備發送通知。

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

更新:借助Firebase雲消息傳遞,現在可以使用https://firebase.google.com/docs/cloud-messaging/android/topic-messaging在不明確指定注冊ID的情況下發送通知。

您需要發送設備的reg id列表,並且此列表不應超過1000這是GCM的限制,如果您要向1000多個設備發送消息,那么您需要以1000塊的形式打破列表。

是的,有辦法向所有人發送消息!

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

例如在php中:

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

而不是這個:

'registration_ids'  => $this->devices

創建notification_key ,通過將特定組映射到該組的所有關聯注冊令牌來標識設備組(您可以在應用服務器上創建通知密鑰)。 notification_key ,而不是在一次發送一個消息給一個登記令牌,該應用服務器可以發送一個消息給notification_key ,和GCM然后將該消息發送到所有的組的注冊標記。

另請注意,notification_key允許的最大成員數為20

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

我覺得這里有一個混亂。 我曾使用github示例代碼(例如,部署到Tomcat的Java中的app服務器)和Android應用程序。 在那里,我沒有“通過”或“發送”任何注冊ID到應用服務器。 它調用相關API來檢索注冊ID並使用它們發送通知。 為什么每個關於GCM注冊ID的帖子都說需要將注冊ID傳遞給第三方應用服務器? 我恐怕不同意。 我認為第三方應用服務器可以查詢GCM服務器本身,以找出哪些設備已注冊接收來自特定發件人的通知(發件人ID)。 必須手動將注冊ID傳遞給第三方應用服務器,才能實現自動化流程的全部目的。 也許我在這里遺漏了一些東西,或者我正在使用已棄用的內容。 無論如何,一旦啟動,自動化流程如何才能涉及人工干預?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM