推送通知无法正常工作

Push Notification Not Works Properly

我在 Android 中创建了聊天应用程序。

因为我在推送通知时遇到问题。

问题是:

然后用户X点击用户A聊天界面推送不打开,但是点击用户B聊天界面推送打开。

如何解决这个问题。

    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());

谢谢!!!

你的问题在这里:

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);

此代码每次都会覆盖 PendingIntent。所以你将永远只有一个 PendingIntent(包含最新的一组 "extras")。

您需要确保为每个不同的聊天会话生成不同的 PendingIntent。要使 PendingIntent 唯一,您可以生成唯一的 "Intent action" 或使用唯一的 requestCode 参数。

如果我们假设 from_id 是每个会话的唯一整数,您可以将其用作 requestCode,如下所示:

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);

或者如果 username 是一个唯一的字符串,您可以像这样将其用作 "Intent action":

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);

这些解决方案中的任何一个都将确保您为每个会话生成一个单独的 PendingIntent