【问题标题】:Send push notifications via Topic to all devices通过 Topic 向所有设备发送推送通知
【发布时间】:2015-12-29 20:48:46
【问题描述】:
我是推送通知的新手,这是我目前所理解的 -
- 客户端应用需要向 Google Cloud Connection Server (GCCS) 注册。
- GCCS 将向客户端返回一个注册 ID。
- 客户端将设备ID和注册ID发送到应用服务器。
- 应用服务器将在其数据库中存储设备和注册信息。根据用户数量,该数据库可能会变得非常庞大。
- 在我的例子中,应用服务器由一个 HTML 页面和一个 node.js 脚本组成。管理员将进入该页面,输入一条消息并点击发送。
- 应用服务器将使用发件人 ID、API 令牌、注册 ID 数组等对 GCCS 进行 POST 调用。
- 设备收到消息。
还有一个叫做主题的东西,客户端应用程序可以订阅。使用主题,您不必发送所有设备的注册 ID。所有“订阅”此主题的设备都会收到该消息。如果您有数百万用户(取决于应用程序的受欢迎程度)并且您不必将注册 ID 分成 1000 个块来发送消息,这将非常有用。
我的问题是 -
- 如果我们使用主题,我们是否需要将注册 ID、设备 ID 持久化到应用服务器上的数据库中?这似乎是多余的。
- 是否有可以发送主题消息的即用型/商业 GCM 服务器?
- 自己构建是否足够容易(因为它是一个简单的 POST 调用)?如果我要使用 JavaScript,会不会遇到 CORS 问题?
感谢您的帮助!
【问题讨论】:
标签:
android
google-cloud-messaging
【解决方案1】:
- 如果我们使用主题,我们是否需要将注册 ID、设备 ID 持久化到应用服务器上的数据库中?这似乎是多余的。
您指的是 C2DM 实现吗?那些是deprecated as shown on the GCM documentation。就主题而言,它们可能不是必需的,但对于其他消息调用是必需的。
根据文档,to 需要设置为 topic/[yourTopic] 并带有必要的有效负载
https://gcm-http.googleapis.com/gcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to": "/topics/foo-bar",
"data": {
"message": "This is a GCM Topic Message!",
}
}
- 是否有可以发送主题消息的即用型/商业 GCM 服务器?
我找不到任何关于这个的来源,所以我猜我们只能在我们自己的应用服务器上实现它。 Google 为我们提供了一个sandbox project 供我们使用。
- 自己构建是否足够容易(因为它是一个简单的 POST 调用)?如果我要使用 JavaScript,会不会遇到 CORS 问题?
如果您正在谈论设置客户端应用程序(特别是 Android),则有一个 setup guide on the documentation。但如果它更多地放在应用程序服务器上,我真的无法评论它。 XMPP 库可用于处理 XMPP 连接服务器