Я пытаюсь разбудить свой телефон или мигать светом с помощью GCM. Я получаю сообщения просто отлично, но нет никакой разницы в том, чтобы установить высокий приоритет или нет вообще. Я использую Razr Maxx HD для тестирования. я что-то здесь пропускаю?
<?php
// API access key from Google API's Console
define('API_ACCESS_KEY', 'blee');
// prep the bundle
$msg = array
(
'body' => 'this is my nice body',
'sound' => 'misc/androidnotification.mp3',
'custom' => array(
'route' => '/beee'
)
);
$fields = array
(
'collapse_key' => 'test',
"time_to_live" => 0,
'priority' => 'high',
'to' => 'mykey',
'data' => $msg,
);
$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;
Из следующих двух ссылок
Оптимизация для режима ожидания и ожидания приложения
Вы можете сделать вывод, что для сообщения с высоким приоритетом
GCM пытается доставить сообщения с высоким приоритетом немедленно, позволяя
служба GCM, чтобы разбудить спящее устройство, когда это возможно, и открыть
сетевое подключение к вашему серверу приложений.
и для нормального сообщения
Сообщения с обычным приоритетом не открывают сетевые соединения в спящем режиме
устройство, и их доставка может быть отложено для экономии заряда аккумулятора.
и как вы можете видеть из ответа на следующее вопрос
Вы никогда не можете быть уверены, что устройство Android находится в спящем режиме для версии Android ниже, чем Marshmallow, для устройств, работающих под управлением Marshmallow или более поздней версии, существует режим ожидания.
Так что получите устройство с запущенным Marshmallow или выше и переведите его в режим дозирования, выполнив следующие команды
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
Возможно, вам придется выполнить вторую команду более одного раза. Повторяйте это, пока состояние устройства не изменится на режим ожидания.
Теперь попробуйте отправить push-уведомление с высоким и нормальным приоритетом. Когда приоритет сообщения высок, уведомление должно быть получено, и аналогично, когда приоритет не установлен или установлен на нормальный уровень, уведомление будет доставлено с некоторой задержкой или при активации устройства.
Других решений пока нет …