GCM主题或下游消息传递

时间:2015-10-30 12:24:10

标签: android google-cloud-messaging

我正在尝试将GCM添加​​到我的应用中,这是一款带有Feed,帖子和评论的常规社交应用。想想facebook。

我阅读了向主题发送消息的帖子:https://developers.google.com/cloud-messaging/topic-messaging,其中包含:

  

基于发布/订阅模型,主题消息支持最多   每个应用程序订阅一百万。

对一个主题的100万订阅实际上很少。

如果订阅不同的帖子,这可能会很快用完。例如,对于Facebook,每次评论您朋友的帖子时,都会进行订阅。当下一个人评论或喜欢该帖子时,您会收到通知。

我现在正在考虑使用GCM主题是否真的是一个好主意。为了解决这个限制,我宁愿使用普通的下游消息,因为它似乎没有配额:https://developers.google.com/cloud-messaging/downstream

我对下游消息传递中的一件事感到困惑 - 每次发送下游消息时,都会发出POST请求:

  

HTTP POST请求

     

https://gcm-http.googleapis.com/gcm/send Content-Type:application / json   授权:键= AIzaSyZ-1U ... 0GBYzPu7Udno5aA

     

{" data":{       "得分":" 5x1",       "时间":" 15:10" },"到" :" bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1 ..." }

在这篇文章中,我们被告知这些是向客户端应用发送下游消息时可用的消息选项:https://developers.google.com/cloud-messaging/http-server-ref#downstream

" "部分是谷歌要求的。

要组播下游消息,您还需要为" registration_ids "指定一个字符串数组。

  

此参数指定接收多播消息的设备列表(注册令牌或ID)。它必须包含至少1个,最多1000个注册令牌。

如果我要向A,B和C人多播消息,我会将A,B和C的注册令牌放入" registration_ids &#34 ;数组,但我会把什么放入" "请求的一部分?

1 个答案:

答案 0 :(得分:1)

主题与下游

“100万订阅” - 限制确实使主题消息或多或少毫无意义。我只在具有相当小的目标组的应用程序中使用它,在那里我用它来发送发送给所有客户端的一般通知。在那个特定的用例中,它非常好用,因为这样我就不必关心保存注册ID了。

在您的情况下,我认为目标群体会更大,因此您需要大多数通知的下游消息,以便将订阅数量保持在限制范围内。

而且,如果你有一个web应用程序(如Facebook),那么你也必须在你的webapp中订阅这个主题,据我所知这是不可能的,但是将帖子与你的用户联系起来正常的ID不会是一个问题,并且当你以其他方式以某种方式更改帖子时,你会自动知道喜欢/评论帖子的所有用户的注册。

最后一点提示:想想已经评论过帖子的用户,因此成为该帖子的“订阅者”。当您使用主题并且该用户第二次评论该帖子时,他/她会收到有人评论该帖子的通知(这是毫无意义的),并且您将无法将他/她排除在他触发的通知之外 - /她。因此,您需要每个用户和每个帖子的主题,这反过来将与使用用户的注册ID完全相同。

我的结论:主题消息仅在您拥有较小的应用/目标组时才有用,并且在使用时,您需要确保用户无法检索包含信息的通知他显然不会对此感兴趣。

下游参数

如文档中所述,to用于与单个收件人或主题通知进行通知。只要您有多个注册,就需要registration_ids。尝试触发设置了参数的通知时,您将从GCM检索服务器错误:

  

必须使用“registration_ids”字段或“to”,而不是两者

(无法在文档中找到它,只是试了一下)