Я провел некоторое исследование, и android кажется немного более строгим в отношении экрана пробуждения (загорается экран устройства) при получении push-уведомления.
То, что я хотел бы добиться, похоже на уведомление о текстовом сообщении, чтобы оно включало экран, звучало и вибрировало. Но мои push-уведомления только звонят или вибрируют. Возможно ли вывести устройство из спящего режима в Cordova? Я использую pubnub для бэкенда.
Вот мой пример полезной нагрузки fcm:
var pushPayload = {
"message": "Some message",
"user_id": "1",
"pn_gcm" : {
"priority" : "high",
"data" : {
"title":"Notification title",
"body":"You are a winner!",
"room" : "Room name",
//"count" : 5,
"content-available":"1",
"force-start": "1",
"priority":2
}
}
};
А вот мой кусок AndroidManifest.xml
<uses-sdk android:minSdkVersion = "19" android:targetSdkVersion = "27" />
<uses-permission android:name = "android.permission.INTERNET" />
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name = "android.permission.WAKE_LOCK" />
<uses-permission android:name = "android.permission.VIBRATE" />
Я использую phonegap-plugin-push.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Устройства Android имеют свои собственные настройки уведомлений, и некоторые из них не могут быть переопределены вашим приложением. Параметр «Ambient Display» будет включать пробуждение экрана при уведомлении, но эту функцию необходимо включить в настройках телефона.
Хорошо, я закончил тем, что создал свой собственный плагин Cordova только для обработки экрана пробуждения. А вот код, который я использовал в своем плагине:
Context context = this.cordova.getActivity().getApplicationContext();
PowerManager powerManager = (PowerManager) context.getSystemService(context.POWER_SERVICE);
boolean result= Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT_WATCH&&powerManager.isInteractive()|| Build.VERSION.SDK_INT< Build.VERSION_CODES.KITKAT_WATCH&&powerManager.isScreenOn();
if (!result){
PowerManager.WakeLock wl = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MH24_SCREENLOCK");
wl.acquire(10000);
PowerManager.WakeLock wl_cpu = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MH24_SCREENLOCK");
wl_cpu.acquire(10000);
}`
Итак, в событии notification я назвал свой плагин так:
` push.on('уведомление', функция(данные) {
//call wakeup screen
window.plugins.wakeUpScreen.wakeup(function() {
console.info('Wake up!');
}, function(err) {
console.info('Wake up error: ' + err);
});
}); `