我几乎什么都试过了,当在后台模式下收到新的通知时,我不知道如何打开电话屏幕。
我在用FCM。当app处于后台时,接收到的通知由系统托盘管理。当收到新的信息时,我如何让系统托盘打开屏幕?谢谢!
发布于 2017-06-07 22:39:31
最后,答案就在这里。
如果您正在使用Firebase将通知从服务器发送到设备,记住,扩展FirebaseMessagingService中的方法只有在发送这样的通知时才在后台调用:
$msg = array
(
'body' => $newsObj['description'],
);
$fields = array
(
'registration_ids' => $registrationIds,
'data' => $msg,
'priority' => "high"
);
您可以看到,如果您将"data“属性更改为方法,则只有当应用程序位于前台中时,才会调用该方法。
为了在收到新通知时打开屏幕,请将以下代码放入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);
}
在AndroidManifest.xml中:
<uses-permission android:name="android.permission.WAKE_LOCK" />
就这样!
发布于 2017-06-07 18:54:11
试试这个
您必须做一件事,当您显示通知时,您必须在onMessageReceived(RemoteMessage remoteMessage)
FirebaseMessagingService
扩展类的方法中广播该intent.after生成通知。
Intent in=new Intent(Intent.ACTION_POWER_CONNECTED);
getActivity().sendBroadcast(in);
https://stackoverflow.com/questions/44420193
复制相似问题