Как обрабатывать несколько уведомлений Firebase onClicks, когда приложение находится на переднем плане - PullRequest
0 голосов
/ 10 июля 2019

Я получаю несколько уведомлений одновременно.Каждое уведомление имеет URL.Например, уведомления запускаются в этом порядке.Notification 1 = "url 1", Notification 2 = "url 2", Notification 3 = "url 3".

Что я хочу сделать, это передать URL-адрес Activity как StringExtras и соответствующим образом обработать уведомление, когдащелкнул.Но всякий раз, когда я получаю уведомления и нажимаю на любое уведомление, я получаю «URL 3» в своей активности, даже если я нажимаю «Уведомление 1» или «Уведомление 2».(Это потому, что «Уведомление 3» запускается в конце, а intent.putStringExtra содержит «URL-адрес 3».

Я много искал, но мне пришлось опубликовать это. Может кто-нибудь дать мне лучшерешение для достижения этой цели?

Вот мой OnMessageRecieve

@Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if (remoteMessage.getData().size() > 0) {
            showNotification(remoteMessage.getData().get('url'));
        }
    }

А вот как я помещаю этот URL в Intent.

private void showNotification(String url) {
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        Intent redirectIntent = new Intent(context, MainActivity.class);
        redirectIntent.putExtra("url", url);
        PendingIntent contIntent = PendingIntent.getActivity(this, 0, redirectIntent, PendingIntent.FLAG_ONE_SHOT);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            mNotificationManager.createNotificationChannel(new NotificationChannel("1", "Ny Lottery", NotificationManager.IMPORTANCE_HIGH));
        }
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
                // TODO: set notification icon
                .setSmallIcon(R.mipmap.ic_launcher_foreground)
                .setContentTitle(title)
                .setContentText(message)
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(message))
                .setChannelId("1")
                .setContentIntent(contIntent)
                .setDefaults(Notification.DEFAULT_ALL)
                .setAutoCancel(true);

        mNotificationManager.notify((int)System.currentTimeMillis(), mBuilder.build());
    }

И в моей MainActivity,Я получаю URL.

String url = getIntent().getStringExtra("url");
...