用于在Android中发送推送通知的协议

我想知道哪个协议是用来发送推送通知到Android设备和哪些发送推送通知请求到GCM。

无论是HTTP,HTTPS还是其他一些东西?

Solutions Collecting From Web of "用于在Android中发送推送通知的协议"

第三方服务器和GCM服务器(HTTP或XMPP)之间的通信协议已在其他答案中提及。

设备和GCM服务器之间的通信协议在GCM文档中没有讨论,因为您不必直接以Android应用程序开发人员的身份访问它,因此您不需要知道这一点。

不过,这里有一个来自创buildGCM的团队的Google开发者的引用,其中提到了有关连接的一些事情。 从他所说的话,你只能知道这是一个长期的TCP连接。

GCM保持长久的连接 – 如果知道连接中断,则重新连接。 路由器/ AP / NAT应该发送FIN或RST来终止TCP连接 – 所以GCM和服务器将知道连接已经死亡。

然而,许多路由器和移动运营商不这样做,然后GCM需要依靠心跳,在Wifi上花费大约15分钟,在移动上更多。

(引述来自该人的回答 )

有两种协议http和xmpp,您可以使用它们将消息发送到GCM服务器。

现在它取决于你想要使用什么。 如果你想广播消息,那么你应该去http。

您可以在单个http请求中广播1000条消息。 而只有一个消息通过xmpp请求…

Http只能用于下载stream(第三方应用服务器-gcm-mob设备)

但gcm将不支持使用http进行stream式传输。 为此,您应该使用xmpp.Xmpp可以用于向上简化和向下stream。

推送通知的实现操作可以非常容易,如果你要使用http,那么使用xmpp的时候会更加困难。但是Google已经提供了详细的教程如何实现xmpp。 所以请在Google开发者网站上看看。

@user3523641的回答和进一步交谈,我会试着进一步解释一下:

传递消息的方式是基于您select的协议, HTTPXMPP (即,它是相同的)。 GCM服务器和用户设备之间打开一个套接字,这个魔术和基本的工作方式就是打开它。

这样,当一个用户应该收到一个消息,这个打开的套接字将被使用,并通过自己发送消息。 这也有助于GCM服务器了解哪些设备已连接。 所以这样,如果你的第三方服务器说应该发送一个消息给用户,并且GCM服务器知道用户没有连接,那么这个时候不会发送,但是一旦连接重新build立,它不会浪费连接尝试。 默认的超时时间是4 weeks ,但是可以更改。

根据官方的GCM文件:

如果设备没有连接到GCM,则将保存该消息直到build立连接(再次考虑折叠键规则)。 build立连接时,无论delay_while_idle标志如何,GCM都会将所有挂起的消息发送到设备。 如果设备再也没有连接(例如,如果出厂重置),则该消息最终会超时并从GCM存储中丢弃。 默认的超时时间是4周,除非设置了time_to_live标志。

最后,当GCM尝试向设备发送消息并卸载应用程序时,GCM将立即丢弃该消息并使注册ID无效。 将来尝试发送消息到该设备将得到一个NotRegistered错误。 有关更多信息,请参阅取消注册的工作方式。

你可以在这里find更多的信息。

它使用HTTPXMPP

当邮件处理成功时,HTTP响应具有200状态,主体包含有关邮件状态的更多信息(包括可能的错误)。 当请求被拒绝时,HTTP响应包含非200状态代码(如400,401或503)。

但是,iOS需要专用端口上的专用TCP连接,并且GAE环境不允许除端口80上的HTTP以外的任何外部协议。

在这里输入图像说明

消息大小限制是1024字节。 Google限制发件人发送的邮件数量,以及发件人发送给特定设备的邮件数量

在这里输入图像说明

这就是这些组件如何交互:

Google提供的GCM连接服务器从第三方应用程序服务器获取消息,并将这些消息发送到在设备上运行的启用GCM的Android应用程序(“客户端应用程序”)。 目前Google为HTTP和XMPP提供连接服务器。 第三方应用程序服务器是您实现与您select的GCM连接服务器一起使用的组件。 应用程序服务器将消息发送到GCM连接服务器; 连接服务器排队并存储消息,然后在设备联机时发送给设备。 有关更多信息,请参阅实施GCM服务器。 客户端应用程序是在设备上运行的启用GCM的Android应用程序。 要接收GCM消息,此应用程序必须注册GCM并获得注册ID。 如果您使用的是XMPP(CCS)连接服务器,则客户端应用程序可以将“上游”消息发送回连接服务器。 有关如何实施客户端应用程序的更多信息,请参阅实施GCM客户端。

看看这个更多细节 – >

适用于Android的Google云消息传递(GCM)

Android云到设备消息传递框架

云消息

云到设备消息