我正在尝试将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 ;数组,但我会把什么放入" 到"请求的一部分?
答案 0 :(得分:1)
“100万订阅” - 限制确实使主题消息或多或少毫无意义。我只在具有相当小的目标组的应用程序中使用它,在那里我用它来发送发送给所有客户端的一般通知。在那个特定的用例中,它非常好用,因为这样我就不必关心保存注册ID了。
在您的情况下,我认为目标群体会更大,因此您需要大多数通知的下游消息,以便将订阅数量保持在限制范围内。
而且,如果你有一个web应用程序(如Facebook),那么你也必须在你的webapp中订阅这个主题,据我所知这是不可能的,但是将帖子与你的用户联系起来正常的ID不会是一个问题,并且当你以其他方式以某种方式更改帖子时,你会自动知道喜欢/评论帖子的所有用户的注册。
最后一点提示:想想已经评论过帖子的用户,因此成为该帖子的“订阅者”。当您使用主题并且该用户第二次评论该帖子时,他/她会收到有人评论该帖子的通知(这是毫无意义的),并且您将无法将他/她排除在他触发的通知之外 - /她。因此,您需要每个用户和每个帖子的主题,这反过来将与使用用户的注册ID完全相同。
我的结论:主题消息仅在您拥有较小的应用/目标组时才有用,并且在使用时,您需要确保用户无法检索包含信息的通知他显然不会对此感兴趣。
如文档中所述,to
用于与单个收件人或主题通知进行通知。只要您有多个注册,就需要registration_ids
。尝试触发设置了参数的通知时,您将从GCM检索服务器错误:
必须使用“registration_ids”字段或“to”,而不是两者
(无法在文档中找到它,只是试了一下)