Push notification 持久的tcp/ip连接如何保护电池和更低的带宽使用率?

Push notification 持久的tcp/ip连接如何保护电池和更低的带宽使用率?,push-notification,push,bandwidth,battery,persistent-connection,Push Notification,Push,Bandwidth,Battery,Persistent Connection,在推送通知机制中,如苹果的推送通知服务,它们使用持久的IP连接 我的问题是,使用持久连接如何节省设备的电池和带宽? 我的印象是,由于连接是持久的,因此设备总是使用WiFi或3G/LTE无线电 我知道,通过持久连接,当没有更改时,您不会因为不请求服务器更改而浪费带宽,相反,服务器会“推送”这些更改。但是,我看不出这是如何保护电池和带宽的(因为您与服务器的连接一直处于开启状态) 类似的问题可以在这里找到: 但我认为答案还不够。它保持电池寿命和带宽使用的方式有点间接。节约的形式是让一个服务维护持久连

在推送通知机制中,如苹果的推送通知服务,它们使用持久的IP连接

我的问题是,使用持久连接如何节省设备的电池和带宽? 我的印象是,由于连接是持久的,因此设备总是使用WiFi或3G/LTE无线电

我知道,通过持久连接,当没有更改时,您不会因为不请求服务器更改而浪费带宽,相反,服务器会“推送”这些更改。但是,我看不出这是如何保护电池和带宽的(因为您与服务器的连接一直处于开启状态)

类似的问题可以在这里找到:


但我认为答案还不够。

它保持电池寿命和带宽使用的方式有点间接。节约的形式是让一个服务维护持久连接,而不是让设备上的每个应用程序不断创建/破坏连接并不断使用带宽

例如,如果你的手机上有Facebook、Instagram和Twitter应用程序,为了让一切都保持最新,你会有三个应用程序不断地轮询服务器进行更改


解决方案是让一个服务监听传入连接,并让该服务通知单个应用程序有更新。

首先,您必须考虑由设备实现的状态机,以控制由于网络通信而产生的功耗。你可以看到 阅读后,你会发现,正如Adam所说,建立连接对你的电池寿命非常有害,而轮询就是建立/破坏连接

因此,C2DM避免创建连接以提高功耗。最后,节省的原因是:

  • 持续连接并不意味着设备总是处于满功率状态。这只意味着连接未关闭,然后服务器可以向客户端发送消息
  • C2DM以您可以读入的不同机制传递消息。因此,可以将其配置为仅在设备已处于满功率状态时发送消息
  • 最后一个因素是GCM如何向空闲设备发送消息。官方文档中还不清楚,我认为Google Play服务的源代码不可用。尽管如此,你还是可以从下面的答案中得到一些线索。第一条评论似乎很有用
  • 有一点我不确定:我不知道他们如何在低级别保持连接。这就是我丢失的那一块。您可以阅读幻灯片15了解一些解释。似乎它们提供了某种对状态机的巧妙处理