如何在通知面板中使用新的推送通知覆盖新的推送通知

android push-notification

368 观看

1回复

2072 作者的声誉

我正在使用推送通知,并且我希望每当新的推送通知到来时,它都将覆盖旧的推送通知,就我而言,当我的应用程序位于前台时,这种情况很好,但是当我将我的应用程序置于后台时,它将在通知面板中创建新的通知。

MyFirebaseMessagingService.class

Intent intent = new Intent(this,TabActivityClass.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        notificationBuilder.setSmallIcon(R.drawable.notification_logo)
                .setContentTitle(title)
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);
    } else
    {
        notificationBuilder.setSmallIcon(R.drawable.notification_logo)
                .setContentTitle(title)
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);
    }
    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

屏幕截图 在此处输入图片说明

我只想在通知面板中显示最新通知,谢谢

作者: Sunil 的来源 发布者: 2017 年 9 月 15 日

回应 1


2

4489 作者的声誉

决定

当您配置来自服务器的通知时,会发生这种情况。在那种情况下,系统将不会调用该onMessageReceived方法,而是使用系统托盘发送通知。

当您的应用程序在后台运行时,Android会将通知消息定向到系统任务栏。默认情况下,用户点击通知会打开应用启动器。

这包括同时包含通知和数据有效负载的消息(以及从Notifications控制台发送的所有消息)。在这些情况下,通知将传递到设备的系统托盘,而数据有效载荷将在启动器活动的意图范围内传递。

为了避免此问题,请从对FCM服务器的请求中删除通知json对象,并仅保留数据有效负载。onMessageReceived即使应用程序在后台,这也会触发该方法。您可以像现在一样在此处处理通知。

作者: Samuel Robert 发布者: 2017 年 9 月 15 日
32x32