【问题标题】:Send push notifications via Topic to all devices通过 Topic 向所有设备发送推送通知
【发布时间】:2015-12-29 20:48:46
【问题描述】:

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

  1. 客户端应用需要向 Google Cloud Connection Server (GCCS) 注册。
  2. GCCS 将向客户端返回一个注册 ID。
  3. 客户端将设备ID和注册ID发送到应用服务器。
  4. 应用服务器将在其数据库中存储设备和注册信息。根据用户数量,该数据库可能会变得非常庞大。
  5. 在我的例子中,应用服务器由一个 HTML 页面和一个 node.js 脚本组成。管理员将进入该页面,输入一条消息并点击发送。
  6. 应用服务器将使用发件人 ID、API 令牌、注册 ID 数组等对 GCCS 进行 POST 调用。
  7. 设备收到消息。

还有一个叫做主题的东西,客户端应用程序可以订阅。使用主题,您不必发送所有设备的注册 ID。所有“订阅”此主题的设备都会收到该消息。如果您有数百万用户(取决于应用程序的受欢迎程度)并且您不必将注册 ID 分成 1000 个块来发送消息,这将非常有用。

我的问题是 -

  1. 如果我们使用主题,我们是否需要将注册 ID、设备 ID 持久化到应用服务器上的数据库中?这似乎是多余的。
  2. 是否有可以发送主题消息的即用型/商业 GCM 服务器?
  3. 自己构建是否足够容易(因为它是一个简单的 POST 调用)?如果我要使用 JavaScript,会不会遇到 CORS 问题?

感谢您的帮助!

【问题讨论】:

    标签: android google-cloud-messaging


    【解决方案1】:
    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!",
       }
    }
    
    1. 是否有可以发送主题消息的即用型/商业 GCM 服务器?

    我找不到任何关于这个的来源,所以我猜我们只能在我们自己的应用服务器上实现它。 Google 为我们提供了一个sandbox project 供我们使用。

    1. 自己构建是否足够容易(因为它是一个简单的 POST 调用)?如果我要使用 JavaScript,会不会遇到 CORS 问题?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多