推送通知服务(如Google Cloud Messaging(GCM))提供了一项特殊功能:它们可以唤醒处于空闲模式的设备。
使用哪种方式通过关于电池寿命的推连接唤醒设备?我的第一个假设是,即使设备的处理器休眠,无线电的连接仍然有效。在传入推送消息的情况下,无线电通过中断唤醒处理器并启动android意图来处理推送消息。
但是像“OpenPush”这样的第三方推送服务提供相同的功能,这使我的假设看起来不完整或错误。或者这些服务只是多个供应商(Google,Apple)的推送系统的抽象,并且是以本机方式集成的服务的桥梁?
答案 0 :(得分:5)
我的第一个假设是,即使设备的处理器休眠,无线电的连接仍然有效。
如果通过“收音机”,你的意思是“蜂窝收音机”,这是正确的。即使CPU处于睡眠模式,也可以保持通过移动数据(而不是WiFi)打开套接字连接。该连接上的传入数据包可以唤醒CPU。谷歌花了相当多的时间对此进行调整,以最大限度地减少使用多少电量来保持套接字处于活动状态(例如,定期从设备到GCM服务器的“心跳”数据包)。
或者这些服务只是多个供应商(谷歌,苹果)的推送系统的抽象,并且是以本机方式集成的服务的桥梁?
这是一种常见的方法。
应用程序完全可以尝试在移动数据上维护自己的长期套接字。例如,SIP客户端就是这样做的。要做到正确是特别棘手的,特别是要注重低功耗。我还担心这种方法的可靠性,以及Android M中的一些变化。
由于OpenPush目前尚未公开,我无法具体评论他们在做什么。