如果我从自己那里获得新的通知,则会删除通知

时间:2013-08-26 14:35:15

标签: android notifications android-notifications google-cloud-messaging android-notification-bar

每当收到推送通知时,我都会调用以下类。 (无论在哪里工作)。 问题是,如果我从另一台设备向我的手机发送通知(比如说是iphone),我会收到通知,并且它会保留在通知栏中。如果我没有触摸它,并发送另一个,另一个将到达并且通知栏中现在将出现2个图标,但是,当我从我自己的手机向我发送通知时,所有当前的通知都在酒吧消失并被我的替换。当我发送新图标时,不会显示其他图标,而是更新旧图标。

如何让每个通知都显示在通知栏中? (因为每个人都有一个唯一的ID,通过在打开指定活动时做特定事情的意图发送给它)

private void sendNotification(String data, String id, Context ctx)
{
mNotificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

Intent myIntent = new Intent(ctx, myActiviy.class);
myIntent.putExtra("data", data);
myIntent.putExtra("id", id);

PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("notification")
        .setTicker("notification")
        .setStyle(new NotificationCompat.BigTextStyle().bigText(data))
        .setAutoCancel(false)
        .setContentText(data);

mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify((int) (System.currentTimeMillis()/1000), mBuilder.build());
}?

2 个答案:

答案 0 :(得分:0)

现在不推荐使用您显示通知的过程。使用以下内容还会为mNotificationManager.notify(uniqueId, mBuilder.build()提供唯一的int以显示单独的通知。

private void generateNotification(Context context, String message, String notificationId) {
    int notify = Integer.valueOf(notificationId);
    NotificationManager mNotificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent resultIntent = new Intent(context, ViewPost.class);
    Bundle params = new Bundle();
    params.putString("group_id", this.groupId.get(notificationId));
    params.putString("post_id", this.postId.get(notificationId));
    params.putString("notification", "notification");
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    resultIntent.putExtras(params);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(ViewPost.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(notify,
                PendingIntent.FLAG_CANCEL_CURRENT);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.icon)
        .setContentTitle("FleeGroups Notification")
        .setStyle(new NotificationCompat.BigTextStyle()
        .bigText(message))
        .setContentText(message)
        .setAutoCancel(true)
        .setDefaults(Notification.DEFAULT_ALL);
    mBuilder.setContentIntent(resultPendingIntent);
    mNotificationManager.notify(notify, mBuilder.build());
}

答案 1 :(得分:0)

尝试将此用于id: int id =(int)System.currentTimeMillis();

这两个通知可能是一个接一个地发送的,所以/ 1000正在将它解析为相同的数字。