像 GCM 这样的推送通知在内部是如何工作的?
How do push-notifications like GCM work internally?
Google 云消息 (GCM) 等推送通知服务提供了一项特殊功能:它们能够唤醒处于空闲模式的设备。
关于电池寿命,使用哪种方式通过推送连接唤醒设备?我的第一个假设是,即使设备的处理器处于休眠状态,无线电的连接仍然处于活动状态。在传入推送消息的情况下,收音机通过中断唤醒处理器并启动 android 意图来处理推送消息。
但是像 "OpenPush" 这样的第三方推送服务提供相同的功能,这让我的假设看起来不完整或错误。或者这些服务只是对多个供应商(Google,Apple)的推送系统的抽象,并且是以本机方式集成的服务的桥梁?
My first assumption was that the connection of the radio is still active even if the processor of the device sleeps.
如果"the radio",你的意思是"the cellular radio",这是正确的。即使 CPU 处于睡眠模式,也可以维持通过移动数据(不是 WiFi)的开放式套接字连接。该连接上的传入数据包可以唤醒 CPU。 Google 花了相当多的时间对此进行调整,以最大限度地减少保持套接字处于活动状态所使用的电量(例如,"heartbeat" 数据包定期从设备发送到 GCM 服务器)。
Or are those service just an abstraction for the push-systems of multiple vendors (Google, Apple) and are a bridge to the service which are integrated in a native way?
这是一种常见的方法。
应用程序完全有可能尝试通过移动数据维护自己的长期套接字。例如,SIP 客户端就是这样做的。要做到正确是很棘手的,尤其是在着眼于低功耗的情况下。我也担心这种方法的可靠性,因为 Android M.
中有一些变化
由于 OpenPush 目前明显未开放,我无法具体评论他们在做什么。
Google 云消息 (GCM) 等推送通知服务提供了一项特殊功能:它们能够唤醒处于空闲模式的设备。
关于电池寿命,使用哪种方式通过推送连接唤醒设备?我的第一个假设是,即使设备的处理器处于休眠状态,无线电的连接仍然处于活动状态。在传入推送消息的情况下,收音机通过中断唤醒处理器并启动 android 意图来处理推送消息。
但是像 "OpenPush" 这样的第三方推送服务提供相同的功能,这让我的假设看起来不完整或错误。或者这些服务只是对多个供应商(Google,Apple)的推送系统的抽象,并且是以本机方式集成的服务的桥梁?
My first assumption was that the connection of the radio is still active even if the processor of the device sleeps.
如果"the radio",你的意思是"the cellular radio",这是正确的。即使 CPU 处于睡眠模式,也可以维持通过移动数据(不是 WiFi)的开放式套接字连接。该连接上的传入数据包可以唤醒 CPU。 Google 花了相当多的时间对此进行调整,以最大限度地减少保持套接字处于活动状态所使用的电量(例如,"heartbeat" 数据包定期从设备发送到 GCM 服务器)。
Or are those service just an abstraction for the push-systems of multiple vendors (Google, Apple) and are a bridge to the service which are integrated in a native way?
这是一种常见的方法。
应用程序完全有可能尝试通过移动数据维护自己的长期套接字。例如,SIP 客户端就是这样做的。要做到正确是很棘手的,尤其是在着眼于低功耗的情况下。我也担心这种方法的可靠性,因为 Android M.
中有一些变化由于 OpenPush 目前明显未开放,我无法具体评论他们在做什么。