希望了解推送通知的根本原因,例如Google Cloud Messaging(之前称为Google Cloud to Device Messaging),对于云< - >来说,它更适合电池使用。设备通信?
在我看来,替代技术涉及"民意调查" (通过TCP / IP),同时使用keep-alives保持连接处于CONNECTED状态。还是有更好的东西?
我对GCM的有限承诺是,它还使用TCP / IP和Keepalive,但客户端从不轮询服务器的状态。相反,服务器通知客户端有关传入消息,并且订阅特定类型消息的应用程序将异步通知消息。此外,常见的GCM连接在多个应用程序之间共享,从而允许设备电子设备在协调的情况下进入休眠/休眠状态。时间,没有多个应用程序保持电子设备更多" ON" (电活动)比他们需要的。这是正确的理解吗?或者还有更多吗?
最后,这与使用Keepalive的TCP / IP上的MQTT相比如何? MQTT(显然)比GCM电池效率低的原因是什么?
答案 0 :(得分:14)
它有效的一个主要原因是它可以很好地扩展。 Android设备保持对GCM服务器的单个连接,以侦听设备上所有应用程序的通知,然后将消息路由到它们所针对的相应应用程序。这比为希望获得某种推送通知的每个应用程序保持网络连接打开更具可扩展性和效率。
即使手机空闲,连接本身也可能是处于打开状态的TCP连接。它可以在收到数据时唤醒设备。我想也有某种心跳ping可以在必要时重新建立连接。
套接字的东西可能是你自己可以做的事情,但是正如我之前所说,效率的主要原因是所有应用程序的单一连接。非常可扩展。