如何阻止新推送通知被 Firebase 中的旧推送通知取代? [英] How to stop new push notification being replaced by the old one in Firebase?

查看:25
本文介绍了如何阻止新推送通知被 Firebase 中的旧推送通知取代?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我触发推送通知时,旧的将被新的替换.但我希望它应该添加到旧通知中.

When I trigger a push notification then the old one is replaced by new one. But I want it should add to that old notification.

我的 MyFirebaseMessaging 类是:

My MyFirebaseMessaging class is:

public class MyFirebaseMessaging  extends FirebaseMessagingService {
    String title="";
    String message,type,click_action;
    int no_of_messages;

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        if(remoteMessage.getData().size()>0) {
            message = remoteMessage.getData().get("body");
            title = remoteMessage.getData().get("title");
            click_action = remoteMessage.getData().get("click_action");
            no_of_messages++;
            ShowNotification(message);
        }
        else
            Log.i("remoteMessage",message);
    }

    private void ShowNotification(String message) {
        Intent intent = new Intent(click_action);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("loading_flag","load");
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        String NOTIFICATION_CHANNEL_ID = "my_channel_id_01";
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            @SuppressLint("WrongConstant")
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_MAX);

            // Configure the notification channel.
            notificationChannel.setDescription("Channel description");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
            notificationChannel.enableVibration(true);
            notificationManager.createNotificationChannel(notificationChannel);
        }

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this,NOTIFICATION_CHANNEL_ID);
        // if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        //   notificationBuilder.setSmallIcon(R.drawable.vadodaramunicipalcorporation);
        //  notificationBuilder.setColor(getResources().getColor(R.color.backgroundColor));
        //  } else {
        //     setSmallIcon(R.drawable.vadodaramunicipalcorporation)
        //  }
        notificationBuilder.setSmallIcon(R.mipmap.vadodaramunicipalcorporation)
            .setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(), R.mipmap.vadodaramunicipalcorporation))
            .setContentTitle("You have new "+ title)
            .setDefaults(Notification.DEFAULT_ALL)
            .setWhen(System.currentTimeMillis())
            .setTicker("Hearty365")
            .setContentInfo("Info")
            .setContentText(message+" new Alerts")
            .setNumber(no_of_messages)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setStyle(new NotificationCompat.BigTextStyle())
            .setContentIntent(pendingIntent)
            .setPriority(Notification.PRIORITY_MAX);
        notificationManager.notify(0, notificationBuilder.build());
    }
}


{
    "to":"token-key",
    "data" : {
         "body" : "4",
          "title" : "Alert",
          "click_action" : "Activity.DATA_CLICK"
    }
}

推荐答案

新的推送通知在我的应用程序中的 firebase 推送通知中替换了旧的,我将如何阻止这个

new push notification is replaced the old one in firebase push notification in my application,How i will stop this

您需要在notificationManager.notify()

You need to pas different notificationID in notificationManager.notify()

示例代码

Date myDate = new Date();
int myNotificationId = Integer.parseInt(new SimpleDateFormat("ddhhmmss",  Locale.US).format(myDate));
notificationManager.notify(myNotificationId,notificationBuilder.build());

这篇关于如何阻止新推送通知被 Firebase 中的旧推送通知取代?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆