Android 推送通知无法正常工作
我已经在Android上创建了聊天应用程序 在这种情况下,推送通知中会出现问题 问题是:Android 推送通知无法正常工作,android,push-notification,android-pendingintent,Android,Push Notification,Android Pendingintent,我已经在Android上创建了聊天应用程序 在这种情况下,推送通知中会出现问题 问题是: 当用户向用户X发送消息时,X获得推送 在用户B向用户X发送消息之后,X获得第二次推送 然后用户X单击推送用户A聊天屏幕不会打开,但单击推送用户B聊天屏幕会打开 如何解决这个问题 PendingIntent contentIntent; UserSessionManager userSession = new UserSessionManager(context); if (typ
- 当用户向用户X发送消息时,X获得推送
- 在用户B向用户X发送消息之后,X获得第二次推送
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);
此代码每次都会覆盖pendingent
。因此,您将只有一个pendingent
(包含最新的一组“额外内容”)
您需要的是确保为每个不同的聊天会话生成不同的pendingent
。要使pendingent
唯一,可以生成唯一的“意图动作”或使用唯一的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);
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);
或者,如果username
是一个唯一的字符串,您可以将其用作“意图操作”,如下所示:
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);
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);
这两种解决方案都将确保为每个会话生成一个单独的
pendingent
。尝试添加此代码add flags Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK