Phonegap / Cordova Push Notification не пробуждает экран

Я провел некоторое исследование, и 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.


person JunM    schedule 12.03.2019    source источник


Ответы (2)


Хорошо, я закончил тем, что создал свой собственный плагин 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.log('Wake up!');
    }, function(err) {
      console.log('Wake up error: ' + err);
    });          

}); `
person JunM    schedule 15.03.2019

Устройства Android имеют свои собственные настройки уведомлений, и некоторые из них не могут быть переопределены вашим приложением. Параметр «Ambient Display» будет включать пробуждение экрана при уведомлении, но эту функцию необходимо включить в настройках телефона.

person Dan N.    schedule 12.03.2019