【问题标题】:Phonegap / Cordova Push Notification not waking up screenPhonegap / Cordova 推送通知未唤醒屏幕
【发布时间】:2019-03-12 12:40:43
【问题描述】:

我一直在做一些研究,android 在收到推送通知时对唤醒屏幕(点亮设备屏幕)似乎更严格一些。

我想要实现的是一个短信通知,它会打开屏幕、发出声音和振动。但我的推送通知只会响起或振动。在科尔多瓦可以唤醒设备吗?我正在使用 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 android cordova phonegap html-framework-7


    【解决方案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_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('通知', function(data) {

        //call wakeup screen
        window.plugins.wakeUpScreen.wakeup(function() {
          console.log('Wake up!');
        }, function(err) {
          console.log('Wake up error: ' + err);
        });          
    
    }); `
    

    【讨论】:

      【解决方案2】:

      Android 设备有自己的通知偏好设置,有些设备无法被您的应用覆盖。 “环境显示”设置会在收到通知时唤醒屏幕,但这是必须在手机设置中开启的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 2018-09-05
        相关资源
        最近更新 更多