【发布时间】:2016-03-04 02:43:09
【问题描述】:
对于打盹模式测试,我正在 Android 6.0 上开发示例 GCM 应用程序。
如前所述,在打盹模式下,设备不会为正常优先级 GCM 唤醒。我想检查一下。
根据文档 (https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message)
普通优先级。这是消息传递的默认优先级。正常优先级消息不会在睡眠设备上打开网络连接,并且它们的传递可能会延迟以节省电池。对于时间敏感度较低的消息,例如新电子邮件通知或要同步的其他数据,请选择正常递送优先级。
我使用此链接中的一些服务器代码测试了我的应用程序。 https://stackoverflow.com/a/22169411/4242382
我从服务器发送的消息是这样的:
$msg = array
(
'message' => 'here is a message. message',
'title' => 'This is a title. title',
'subtitle' => 'This is a subtitle. subtitle',
'tickerText' => 'Ticker text here...Ticker text here...Ticker text here',
'vibrate' => 1,
'sound' => 1
);
正如您所见,没有设置优先级,所以在打盹模式下我不应该立即得到这个。但是设备仍然会立即收到 GCM 消息。
测试方法
- 运行基于 GCM 的应用程序
- 通过从 adb shell (link) 发出命令来诱导打盹模式
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step - 从服务器发送消息 (phpfiddle)
预期行为:正常优先级 GCM 没有立即交付 观察到的行为:消息立即传递
打盹模式是否按照文档工作?我没有看到它发生,有人面临同样的情况吗?
【问题讨论】:
-
您如何确认您的设备处于打盹模式?你在用these adb commands吗?
-
您能否更新您的问题以包含您使用的 adb 命令?最好在您的问题中包含所有代码,以便在链接资源消失时仍然可以理解。
-
在运行
adb shell dumpsys deviceidle step之后,您确定看到IDLE吗? -
是的,以下是 adb shell dumpsys deviceidle 'mState=IDLE' 的输出
-
是的@qblx 我确认使用 adb 命令
标签: android google-cloud-messaging android-6.0-marshmallow android-doze