Push Notification Not Works Properly

徘徊边缘 提交于 2021-01-28 06:41:08

问题


I have created on Chatting Application in Android.

In that I have problem occurs in Push Notification.

Problem is:

  • When User A Send Message to User X, so X gets the Push.
  • After that User B Send Message to User X, so X gets second the Push.

Then User X clicks on Push of User A Chat Screen not opens, but clicks on Push of User B Chat Screen opens.

How to resolve this.

    PendingIntent contentIntent;
    UserSessionManager userSession = new UserSessionManager(context);
    if (type.equals("2"))
    {
        if (userSession.getUserSession() != null = PendingIntent.getActivity(
                    context,
                    0,
                    new Intent(context, ChatActivity.class)
                            .putExtra("to_id", from_id)
                            .putExtra("username", username)
                            .putExtra("to_avt", to_avt)
                            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                                            | Intent.FLAG_ACTIVITY_SINGLE_TOP),
                    PendingIntent.FLAG_UPDATE_CURRENT);
        }
        else
        {
            contentIntent = PendingIntent.getActivity(context, 0, new Intent(context,
                    SplashActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
                    PendingIntent.FLAG_UPDATE_CURRENT);
        }

    }

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(Integer.parseInt(from_id), mBuilder.build());

Thanks!!!


回答1:


Your problem is here:

contentIntent = PendingIntent.getActivity(
                context,
                0,
                new Intent(context, ChatActivity.class)
                        .putExtra("to_id", from_id)
                        .putExtra("username", username)
                        .putExtra("to_avt", to_avt)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                                        | Intent.FLAG_ACTIVITY_SINGLE_TOP),
                PendingIntent.FLAG_UPDATE_CURRENT);

This code overwrites the PendingIntent every time. So you will only ever have one PendingIntent (containing the most recent set of "extras").

What you need is to ensure that for each different chat session, you generate a different PendingIntent. To make the PendingIntent unique, you can either generate a unique "Intent action" or use a unique requestCode parameter.

if we assume that from_id is a unique integer for each session, you could use that as the requestCode, like this:

contentIntent = PendingIntent.getActivity(
                context,
                from_id, // unique requestCode
                new Intent(context, ChatActivity.class)
                        .putExtra("to_id", from_id)
                        .putExtra("username", username)
                        .putExtra("to_avt", to_avt)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                                        | Intent.FLAG_ACTIVITY_SINGLE_TOP),
                PendingIntent.FLAG_UPDATE_CURRENT);

or if username is a unique string, you could use that as the "Intent action" like this:

contentIntent = PendingIntent.getActivity(
                context,
                0,
                new Intent(context, ChatActivity.class)
                        .setAction(username) // Unique ACTION
                        .putExtra("to_id", from_id)
                        .putExtra("username", username)
                        .putExtra("to_avt", to_avt)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                                        | Intent.FLAG_ACTIVITY_SINGLE_TOP),
                PendingIntent.FLAG_UPDATE_CURRENT);

either of these solutions will ensure that you generate a separate PendingIntent for each session.



来源:https://stackoverflow.com/questions/28292560/push-notification-not-works-properly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!