如果 GCM 不支持 HTTP 服务器的上游消息传递,那么关于 HTTP 服务器的用户通知的上游消息如何支持?

Posted

技术标签:

【中文标题】如果 GCM 不支持 HTTP 服务器的上游消息传递,那么关于 HTTP 服务器的用户通知的上游消息如何支持?【英文标题】:If GCM does not support upstream messaging for HTTP servers then how are upstream messages about user notifications supported for HTTP servers? 【发布时间】:2014-06-11 10:04:47 【问题描述】:

Google Cloud Messaging 的文档指出,仅基于 XMPP 的应用服务器支持从 android 设备到云端的上游消息,而不支持基于 HTTP 的服务器。 HTTP 服务器只能用于下游消息传递。

但是,documentation 承认 GCM 的用户通知功能涉及上游消息传递,但仍然支持 HTTP 和 XMPP 服务器。这怎么可能?

【问题讨论】:

【参考方案1】:

虽然我从未对其进行测试,但我假设无论服务器实现如何都支持用户通知的上游功能,因为与用户通知相关的上游消息会从一台设备到 GCM 服务器再到同一用户的其他设备。由于您的服务器不参与此过程,因此无论是通过 HTTP 还是 XMPP 连接到 GCM。

【讨论】:

那么我是否还可以通过 GCM over HTTP 实现自定义设备到设备消息传递 - 就像两个或多个用户实时聊天一样? @user87049 上游 gcm 无法做到这一点,因为它只能向同一用户的其他设备发送消息。 Eran,对于用户通知,GCM 判断它是通过我们的服务器在为用户发送消息时提供给 Google GCM 服务器的一组设备注册 ID 向同一用户发送的。如果我的 Android 应用提供的注册 id 指定了其他用户的注册 id,GCM HTTP 是否可以将消息从该设备传输到目标设备? @user87049 用于从设备向云端发送上游消息的 API 接受发送者 ID(将消息发送到 XMPP 服务器)或 notification_key(用于将消息发送到其他设备)同一用户)。我不确定如果您的应用尝试向其他用户的 notification_key 发送消息会发生什么。

以上是关于如果 GCM 不支持 HTTP 服务器的上游消息传递,那么关于 HTTP 服务器的用户通知的上游消息如何支持?的主要内容,如果未能解决你的问题,请参考以下文章

多个 XMPP 服务器处理上游 GCM 消息

GCM 中使用上游消息传递的消息流程图

发送 GCM 上游消息后收到空推送消息

GCM 云连接服务器中上游消息的主要用途是啥?

GCM CCS 上游消息是不是强制重新连接到 GCM 网络?

如何使用 Android 代码中的 GCM CCS 进行上游消息传递服务?