Push notification 推送通知(如GCM)为什么以及如何提高电池效率?

Push notification 推送通知(如GCM)为什么以及如何提高电池效率?,push-notification,google-cloud-messaging,android-c2dm,mqtt,Push Notification,Google Cloud Messaging,Android C2dm,Mqtt,想了解推送通知(如Google Cloud Messaging,以前称为Google Cloud to Device Messaging)对于云设备通信更为电池友好的基本原因吗 在我看来,替代技术包括“轮询”(通过TCP/IP),同时使用keep alives将连接保持在连接状态。还是有更好的 我对GCM的有限理解是,它也使用TCP/IP和keepalives,但客户端从不轮询服务器的状态。相反,服务器将传入消息通知客户机,订阅特定类型消息的应用程序将异步地收到消息通知。此外,公共GCM连接在多

想了解推送通知(如Google Cloud Messaging,以前称为Google Cloud to Device Messaging)对于云设备通信更为电池友好的基本原因吗

在我看来,替代技术包括“轮询”(通过TCP/IP),同时使用keep alives将连接保持在连接状态。还是有更好的

我对GCM的有限理解是,它也使用TCP/IP和keepalives,但客户端从不轮询服务器的状态。相反,服务器将传入消息通知客户机,订阅特定类型消息的应用程序将异步地收到消息通知。此外,公共GCM连接在多个应用程序之间共享,从而允许设备电子设备在“协调”时间睡眠/休眠,而无需多个应用程序保持电子设备比需要的更“开启”(电激活)。这是正确的理解吗?还是还有更多


最后,这与使用keepalives的TCP/IP上的MQTT相比究竟如何?MQTT(显然)比GCM电池效率低的原因是什么?

其效率高的主要原因之一是可扩展性好。android设备向GCM服务器开放一个连接,以侦听设备上所有应用程序的通知,然后将消息路由到它们要用于的适当应用程序。这比为每一个想要获得某种推送通知的应用程序保持网络连接的开放性更具可扩展性和效率

连接本身很可能是处于打开状态的TCP连接,即使手机处于空闲状态。它可以在收到数据时唤醒设备。我想也会有某种心跳ping在进行,如果必要的话,可以重新建立连接


socket可能是你自己可以做的事情,但是正如我前面所说的,提高效率的主要原因是所有应用程序的单一连接。非常可扩展。

GCM特别节省电池的另一个原因是“折叠键”和“空闲时延迟”消息参数的组合。当一系列消息中只有最新消息起作用时(例如,足球比赛的得分通知),空闲设备不会接收不必要的消息,只有在设备唤醒时才接收最近的消息。在GCM服务器中,较旧的邮件将被较新的邮件替换,并且只发送最新的邮件,这会减少电池消耗。