Экран Push-уведомления Phonegap / Cordova не запускается

#javascript #android #cordova #phonegap #html-framework-7

#javascript #Android #кордова #phonegap #html-framework-7

Вопрос:

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

Ответ №1:

Хорошо, в итоге я создал свой собственный плагин 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_WATCHamp;amp;powerManager.isInteractive()|| Build.VERSION.SDK_INT< Build.VERSION_CODES.KITKAT_WATCHamp;amp;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);
    });          

}); `
  

Ответ №2:

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