单个通知,但应在应用启动时提供多个待处理的意图 - Android



我收到来自GCM的多条消息。当应用程序在前台或后台运行时,我没有问题,因为我使用广播接收器。但是,当应用程序未运行时,我希望将待处理意图中的消息排队,并将其保留为通知管理器通知的一部分。这样,当用户单击通知时,将启动mainActivity并传递所有消息。我已经发布了下面的代码。

使用当前代码,我只能在活动的onCreate方法中接收1条消息,这是最新消息。

总结要求

  1. 应用程序未运行。应用已退出。
  2. 在收到且将"额外字段"设置为邮件的每条新邮件上发出具有挂起意图的呼叫通知
  3. 通知栏中
  4. 只有一条通知消息(假设在通知栏中看到"收到的消息数 3")
  5. 现在用户单击通知
  6. 应用程序应该能够通过访问挂起的意图来读取所有 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);
    }
}

由于您是接收 GCM 传入消息的人,并且您是提出Notification的人,因此您可以安排将 GCM 消息的详细信息存储在文件或数据库中,并且由您安排在用户点击Notification时显示所有这些详细信息。

伙计们最后我使用以下逻辑来解决我的问题

接收意向时具有本地数组。

如果挂起的意图已存在 ( FLAG_NO_CREATE )然后 在阵列后附加新消息并更新挂起的意图 这样,EXTRA 将在数组中具有旧 + 新消息还 清除旧消息数组,因为通知已被清除。 现在添加新的附加功能(FLAG_UPDATE当前)结束

然后通知

现在,当用户单击单个通知时,将启动新活动。

在 MainActivity Oncreate 中,我读取了意图数据并进入循环,以及应用程序未运行时我会错过的所有消息!

当然不知道如果用户长时间不点击通知,通知栏会有多重!

最新更新