DOZE モードのテストのために、Android 6.0 でサンプル GCM アプリを開発しています。
言われているように、DOZE モードでは、デバイスは通常の優先度の 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
);
ご覧のとおり、優先順位が設定されていないため、DOZE モードではすぐにこれを取得するべきではありません。それでも、デバイスは GCM メッセージをすぐに受信します。
試験方法
- GCM ベースのアプリを実行する
- adb シェルからコマンドを発行して DOZE モードを誘導する (リンク)
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step
- サーバーからメッセージを送信する (phpfiddle)
予想される動作: 通常の優先度の GCM の即時配信はありません 観測された動作: メッセージの即時配信があります
DOZE モードはドキュメントどおりに機能しますか? 私はそれが起こっているのを見ません、誰かが同じに直面していますか?