Android 的 doze mode 严重影响接收推送消息。

2020-03-10 14:47:01 +08:00
 zhaotian5868
去年换了一加 7Pro 作为主力机,刷了氧 OS,日常使用 GCM 推送机制优化后台节省电量,体验如丝般顺滑,非常满意。但是没高兴几天,问题就来了。

开始的时候没注意到推送问题,后来晚上有一天忘记充电,注意到包括 Gmail 在内的一堆应用在早上解锁后立刻弹出一堆消息,很多是睡觉就应该推送而没有提醒的。但是也有一些应用例如知乎却能正常的实时推送。

立刻去查看系统中电源优化等设置,取消各种电池优化后依然没用,锁屏五分钟后,就收不到消息了。

查看后台的 google play service,也没问题,有知乎的推送记录。

但是我注意到了推送有一个 priority, 只有 priority 是 High 的情况下,在锁屏后能实时推送,而 gmail 客户端是 Unknown,知乎是 High。
https://imgchr.com/i/8PyxXR

查了很多资料得知是 Android 的 doze mode 在作怪, 在手机未连接充电线并锁屏超过若干分钟后(未验证,一加 7p 是五分钟),手机进入 doze mode,系统为节省电量只给用户推送 High priority 的应用消息。

没错,谷歌认为 Email 这种通讯方式不是实时的,并且用户没有权限自行提高或降低某个应用推送的 Priority。

如果想在锁屏下实时接收 gmail 客户端以及其他 priority 是 Unknown 和 Normal 应用的推送消息,需要利用 adb 命令关闭 doze mode: adb shell dumpsys deviceidle disable

谷歌出 doze mode 的初衷是好的,但用几天下来并没有感受到关闭和开启 doze mode 在续航上的差异。
10191 次点击
所在节点    Android
44 条回复
zhaotian5868
2020-05-12 14:01:50 +08:00
@clouds 可以的,关闭 doze mode 就可以正常收到消息,不需将软件挂后台。
hmczj
358 天前
通过楼主的思路解决了我三星国行系统的 fcm 推送问题,特来回复感谢。
falseyuyuyu
320 天前
请教一下 楼主 这个命令是永久关闭还是重启后失效
zhaotian5868
297 天前
@falseyuyuyu 重启失效

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/651515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX