GCM 主题或下游消息
GCM Topics or Downstream Messaging
我正在尝试将 GCM 添加到我的应用程序中,这是具有提要、posts、评论的通用社交应用程序之一。想想脸书。
我阅读了 post 向主题发送消息:https://developers.google.com/cloud-messaging/topic-messaging 上面写着:
Based on the publish/subscribe model, topic messaging supports up to
one million subscriptions per app.
一个话题100万订阅其实很少
如果订阅不同的 post,那可能会很快用完。例如,对于 facebook,每次您对朋友的 post 发表评论时,它就是一次订阅。当下一个人评论或喜欢 post 时,您会收到一条通知。
我现在正在考虑使用 GCM 主题是否真的是个好主意。为了绕过这个限制,我最好还是使用正常的下游消息传递,因为它似乎没有配额:https://developers.google.com/cloud-messaging/downstream
我对下游消息传递中的一件事感到困惑 - 每次发送下游消息时,您都会发出 POST 请求:
HTTP POST Request
https://gcm-http.googleapis.com/gcm/send Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{ "data": {
"score": "5x1",
"time": "15:10" }, "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." }
在此 post 中,我们被告知这些是向客户端应用程序发送下游消息时可用的消息选项:https://developers.google.com/cloud-messaging/http-server-ref#downstream
google 要求“到”部分。
要多播下游消息,您还需要为“registration_ids”指定一个字符串数组。
This parameter specifies a list of devices (registration tokens, or IDs) receiving a multicast message. It must contain at least 1 and at most 1000 registration tokens.
如果我要向 A、B 和 C 多播消息,我会将 A、B 和 C 的注册令牌放入“registration_ids”数组,但我会把什么放入请求的“to”部分?
主题与下游
“100 万订阅”的限制确实使主题消息或多或少变得毫无意义。我只在一个目标群体很小的应用程序中使用它,在那里我用它来发送发送给所有客户的一般通知。在那个特定的用例中,拥有它非常好,因为这样我就不必关心保存注册 ID。
在你的情况下,我认为目标群体会更大,因此你需要为大多数通知发送下游消息,以便将订阅数量保持在限制范围内。
而且,如果你也有一个网络应用程序(比如 Facebook),那么你也必须在你的网络应用程序中订阅该主题,据我所知这是不可能的,但是链接 post 使用您的用户的正常 ID 不会有问题,通过它您会自动知道所有用户的注册 ID liked/commented 当其他人更改 post 时 post不知何故。
关于这一点的最后一个提示:想想已经评论了 post 的用户,因此成为 post 的 "subscriber"。当您使用主题并且该用户第二次评论 post 时 he/she 会收到一条通知,表明有人评论了 post(这毫无意义)并且您将无法排除him/her 来自 him-/herself 触发的通知。因此,您需要每个用户和每个 post 一个主题,这与使用用户的注册 ID 完全相同。
我的结论:主题消息只有在你有一个小的应用程序/目标群体时才有用,并且在使用时,你需要确保没有办法让用户可以检索包含他显然不会感兴趣的信息的通知。
下游参数
如文档中所述,to
用于单个收件人的通知或主题通知。一旦您拥有多个注册 ID,您就需要 registration_ids
。尝试触发设置了两个参数的通知时,您将从 GCM 检索服务器错误:
Must use either "registration_ids" field or "to", not both
(在文档中找不到,刚试了一下)
我正在尝试将 GCM 添加到我的应用程序中,这是具有提要、posts、评论的通用社交应用程序之一。想想脸书。
我阅读了 post 向主题发送消息:https://developers.google.com/cloud-messaging/topic-messaging 上面写着:
Based on the publish/subscribe model, topic messaging supports up to one million subscriptions per app.
一个话题100万订阅其实很少
如果订阅不同的 post,那可能会很快用完。例如,对于 facebook,每次您对朋友的 post 发表评论时,它就是一次订阅。当下一个人评论或喜欢 post 时,您会收到一条通知。
我现在正在考虑使用 GCM 主题是否真的是个好主意。为了绕过这个限制,我最好还是使用正常的下游消息传递,因为它似乎没有配额:https://developers.google.com/cloud-messaging/downstream
我对下游消息传递中的一件事感到困惑 - 每次发送下游消息时,您都会发出 POST 请求:
HTTP POST Request
https://gcm-http.googleapis.com/gcm/send Content-Type:application/json Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{ "data": { "score": "5x1", "time": "15:10" }, "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." }
在此 post 中,我们被告知这些是向客户端应用程序发送下游消息时可用的消息选项:https://developers.google.com/cloud-messaging/http-server-ref#downstream
google 要求“到”部分。
要多播下游消息,您还需要为“registration_ids”指定一个字符串数组。
This parameter specifies a list of devices (registration tokens, or IDs) receiving a multicast message. It must contain at least 1 and at most 1000 registration tokens.
如果我要向 A、B 和 C 多播消息,我会将 A、B 和 C 的注册令牌放入“registration_ids”数组,但我会把什么放入请求的“to”部分?
主题与下游
“100 万订阅”的限制确实使主题消息或多或少变得毫无意义。我只在一个目标群体很小的应用程序中使用它,在那里我用它来发送发送给所有客户的一般通知。在那个特定的用例中,拥有它非常好,因为这样我就不必关心保存注册 ID。
在你的情况下,我认为目标群体会更大,因此你需要为大多数通知发送下游消息,以便将订阅数量保持在限制范围内。
而且,如果你也有一个网络应用程序(比如 Facebook),那么你也必须在你的网络应用程序中订阅该主题,据我所知这是不可能的,但是链接 post 使用您的用户的正常 ID 不会有问题,通过它您会自动知道所有用户的注册 ID liked/commented 当其他人更改 post 时 post不知何故。
关于这一点的最后一个提示:想想已经评论了 post 的用户,因此成为 post 的 "subscriber"。当您使用主题并且该用户第二次评论 post 时 he/she 会收到一条通知,表明有人评论了 post(这毫无意义)并且您将无法排除him/her 来自 him-/herself 触发的通知。因此,您需要每个用户和每个 post 一个主题,这与使用用户的注册 ID 完全相同。
我的结论:主题消息只有在你有一个小的应用程序/目标群体时才有用,并且在使用时,你需要确保没有办法让用户可以检索包含他显然不会感兴趣的信息的通知。
下游参数
如文档中所述,to
用于单个收件人的通知或主题通知。一旦您拥有多个注册 ID,您就需要 registration_ids
。尝试触发设置了两个参数的通知时,您将从 GCM 检索服务器错误:
Must use either "registration_ids" field or "to", not both
(在文档中找不到,刚试了一下)