通过Topic向所有设备发送推送通知

时间:2015-12-29 20:48:47

标签: android google-cloud-messaging

我是推销通知的新手,这是我目前所理解的 -

  1. 客户端应用需要注册Google Cloud Connection Server(GCCS)。
  2. GCCS会将注册ID返回给客户。
  3. 客户端会将设备ID和注册ID发送到应用服务器。
  4. App服务器将存储设备&在其数据库中注册。根据用户数量,这个数据库可能会变得很大。
  5. 我的案例中的app服务器包含一个HTML页面和一个node.js脚本。管理员将进入该页面,键入消息并点击发送。
  6. 应用服务器将使用发件人ID,API令牌,注册ID数组等对GCCS进行POST调用。
  7. 设备收到消息。
  8. 还有一个称为主题的客户端应用程序可以订阅。使用主题,您不必发送所有设备的注册ID。 “订阅”此主题的所有设备都将收到消息。如果您有数百万用户(取决于应用程序的受欢迎程度),并且您不必将注册ID拆分为1000个块以发送消息,这非常有用。

    我的问题是 -

    1. 如果我们使用的是主题,我们是否需要将注册ID,设备ID保存到App服务器上的数据库?这似乎是多余的。
    2. 是否有可以发送主题消息的现成/商用GCM服务器?
    3. 是否可以轻松构建自己(因为它是一个简单的POST调用)?如果我要使用JavaScript,我不会遇到CORS问题吗?
    4. 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如果我们使用的是主题,我们是否需要将注册ID,设备ID保存到App服务器上的数据库?这似乎是多余的。
  2.   

您指的是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!",
   }
}
  
      
  1. 是否有可以发送主题消息的现成/商用GCM服务器?
  2.   

我找不到任何关于此的消息来源,所以我猜我们要在我们自己的应用服务器上实现它。谷歌为我们提供了sandbox project供我们使用。

  
      
  1. 是否可以轻松构建自己(因为它是一个简单的POST调用)?如果我要使用JavaScript,我不会遇到CORS问题吗?
  2.   

如果您正在谈论设置客户端应用程序(特别是Android),则会有setup guide on the documentation。但如果它更多地在应用服务器上,我真的无法评论它。 XMPP库可用于处理XMPP连接服务器