PhoneGap / Cordova Push Notification не просыпается экран - PullRequest
1 голос
/ 12 марта 2019

Я проводил некоторые исследования, и android кажется немного более строгим при пробуждении (загорается экран устройства) при получении push-уведомления.

То, чего я хотел бы добиться, это как уведомление о текстовом сообщении, что оно включит экран, будет звучать и вибрировать. Но моё пуш-уведомление только звонит или вибрирует. Возможно ли проснуться от сна в Кордове? Я использую 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 } }<br> };

А вот мой кусок 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.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Хорошо, я закончил тем, что создал свой собственный плагин 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);
    });          

}); `
0 голосов
/ 12 марта 2019

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

...