Rob*_*scu 2 android push-notification android-notifications firebase firebase-cloud-messaging
我已经尝试了几乎所有的东西,我无法理解在后台模式下收到新通知时如何打开手机屏幕.
我正在使用FCM.当应用程序处于后台时,收到的通知由系统托盘管理.当收到新内容时,如何让系统托盘打开屏幕?谢谢!
最后,答案就在这里.
如果您使用Firebase API将通知从服务器发送到设备,请记住,如果您发送如下通知,扩展FirebaseMessagingService中的onMessageReceived()方法仅在BACKGROUND中调用:
$msg = array
(
'body' => $newsObj['description'],
);
$fields = array
(
'registration_ids' => $registrationIds,
'data' => $msg,
'priority' => "high"
);
Run Code Online (Sandbox Code Playgroud)
您会看到,如果将" data "属性更改为" notification ",则仅当应用程序位于FOREGROUND时才会调用onMessageReceived()方法.
要在收到新通知时打开屏幕,请将以下代码放入onMessageReceived()方法:
// Turn on the screen for notification
PowerManager powerManager = (PowerManager) getSystemService(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);
}
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
就这样!
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |