我从 GCM 收到多条消息。当应用程序在前台或后台运行时,我没有问题,因为我使用广播接收器。但是,当应用程序未运行时,我希望将消息排队在 pendingIntent 中,并将其作为通知管理器通知的一部分。这样当用户点击通知时,mainActivity 就会启动并传递所有消息。我已经发布了下面的代码。
使用当前代码,我只能在活动的 onCreate 方法中接收 1 条消息,即最新消息。
总结一下需求
- 应用程序未运行。应用程序退出。
- 在将 Extra Field 设置为消息的每条收到的新消息上调用带有 pendingIntents 的通知
- 通知栏中只有一条通知消息(让我们假设在通知栏中看到“收到的消息数 3”)
- 现在用户点击通知
- 应用程序应该能够通过访问 pendingIntent 来读取所有 3 条消息
希望我能找到帮助!
// build intent
final Intent notificationIntent = new Intent(context,
MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
notificationIntent.putExtra(CommonUtilities.EXTRA_MESSAGE, message);
notificationIntent.setAction("DUMMY");
// pending intent creation
int requestID = (int) System.currentTimeMillis();
// set intent so it does not start a new activity
final PendingIntent intent = PendingIntent.getActivity(context, requestID ,
notificationIntent, 0);
// create notification using intent
final String title = context.getString(R.string.app_name);
Notification notification = new NotificationCompat.Builder(context)
.setContentTitle(title)
.setContentText(formattedMessage)
.setSmallIcon(icon)
.setDefaults(Notification.FLAG_AUTO_CANCEL|Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setContentIntent(intent).build();
final NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, notification);
//Now in mainActivity:OnCreate
//Receive
Bundle extras = getIntent().getExtras();
if (extras != null) {
String inp = extras.getString(CommonUtilities.EXTRA_MESSAGE);
if (inp != null ) {
doSomething(inp);
}
}