Как получить идентификатор уведомления о нажатии на уведомление в Android - PullRequest
0 голосов
/ 20 сентября 2019

На самом деле я реализую приложение чата в Android.Проблема, с которой я сталкиваюсь, заключается в том, что, хотя пользователю поступает несколько уведомлений, когда пользователь щелкает любое уведомление, он переводит пользователя в чат этого пользователя, уведомление которого было получено в конце.Затем я удалил флаг ожидания намерения, т.е. PendingIntent.FLAG_UPDATE_CURRENT.После его удаления пользователь всегда попадал в чат пользователя, уведомление которого было получено в первую очередь.Это то, что я делаю.Как я могу решить эту проблему?

private void showNotification(final Map<String, String> payload) {

    final RemoteViews normalLayout = new RemoteViews(getPackageName(), R.layout.custom_normal_notification);
    final RemoteViews expandedLayout = new RemoteViews(getPackageName(), R.layout.custom_expanded);
    initChannels(this);
    String imageUrl = payload.get("imageUrl");

    new NotificationsLoadImage(new NotificationsLoadImage.LoadImageCallback() {
        @Override
        public void Success(Bitmap bitmap) {
            value++;
            bitmap = getRoundedCroppedBitmap(bitmap, bitmap.getWidth());

            normalLayout.setImageViewBitmap(R.id.normal_notification_image, bitmap);
            normalLayout.setTextViewText(R.id.normal_notification_title, payload.get("username"));
            normalLayout.setTextViewText(R.id.normal_notification_description, payload.get("message"));
            expandedLayout.setImageViewBitmap(R.id.expanded_notification_image, bitmap);
            expandedLayout.setTextViewText(R.id.expanded_notification_title, payload.get("username"));
            expandedLayout.setTextViewText(R.id.expanded_notification_description, payload.get("message"));

            Intent intent = new Intent(MyFirebaseMessagingService.this, HomeScreen.class);
            //intent.setAction(Long.toString(System.currentTimeMillis()));
            PendingIntent _pendingIntent = PendingIntent.getActivity(MyFirebaseMessagingService.this, 0,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);
            expandedLayout.setOnClickPendingIntent(R.id.btn_reply, _pendingIntent);
            //  bitmap  = getCircleBitmap(bitmap);
            //Toast.makeText(MyFirebaseMessagingService.this, "Success", Toast.LENGTH_SHORT).show();

                builder = new NotificationCompat.Builder(MyFirebaseMessagingService.this, "default");
                builder.setSmallIcon(R.mipmap.ic_launcher);
                // builder.setLargeIcon(bitmap);
                // builder.setContentTitle(payload.get("username"));
                //builder.setContentText(payload.get("email"));
                builder.setDefaults(Notification.DEFAULT_SOUND);
                builder.setLights(Color.WHITE, 500, 500);
                builder.setStyle(new NotificationCompat.DecoratedCustomViewStyle());
                builder.setCustomContentView(normalLayout);
                builder.setCustomBigContentView(expandedLayout);
                builder.setAutoCancel(true);

                builder.setOngoing(false);
                builder.setWhen(Calendar.getInstance().getTimeInMillis());


                Intent _intent = new Intent(MyFirebaseMessagingService.this, MessageActivity.class);
                _intent.putExtra("Type","Notification");
                _intent.putExtra("userid", payload.get("senderID"));
                _intent.putExtra("token",payload.get("SenderToken"));
                _intent.putExtra("userCount", payload.get("userCount"));

                TaskStackBuilder stackBuilder = TaskStackBuilder.create(MyFirebaseMessagingService.this);
                stackBuilder.addNextIntent(_intent);
                PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
                builder.setContentIntent(pendingIntent);

                if (notificationManager != null) {
                    notificationManager.notify(Integer.parseInt(payload.get("userCount")), builder.build());
                    Toast.makeText(MyFirebaseMessagingService.this, "ID: " + payload.get("userCount"), Toast.LENGTH_SHORT).show();
                    id++;
                }





               // notificationManager.notify(Integer.parseInt(payload.get("userCount")), builder.build());

        }

        @Override
        public void Error(Exception e) {

        }
    }).execute(imageUrl);
}
...