[英]How to collapse Android notifications?
我每半小时向我的Android应用发送一次C2DM更新,这会创建一个通知。 问题是,当我早上醒来时,我在状态栏中排队了15个通知。
我如何只保留最新通知,覆盖以前的通知?
我试着查看C2DM文档( http://code.google.com/android/c2dm/ ),其中提到了一个名为collapse_key的参数,但我找不到如何使用它的解释,也不确定解决方案位于C2DM方面。
谢谢!
如果要取消在视图上设置的任何先前通知,可以尝试设置其中一个标志。
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_UPDATE_CURRENT
这样的事情应该取代我相信的旧通知
NotificationManager mManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(this,test.class);
Notification notification = new Notification(R.drawable.icon, "Notify", System.currentTimeMillis());
notification.setLatestEventInfo(this,"App Name","Description of the notification",
PendingIntent.getActivity(this.getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));
mManager.notify(0, notification);
Notification
有一个名为number
的属性,在图标下方显示一个小数字(用于多个通知)。 它允许您使用相同的图标进行多个通知。
更新通知时使用相同的ID
。 :)干杯。
除了其他答案之外,C2DM请求中还有一个名为delay_while_idle
。 确保您不包含该内容或将其伪造。 当屏幕关闭时(即您正在睡觉时),您的手机处于“空闲”状态。 Google会在服务器上排队所有消息,直到手机没有空闲(即早上打开屏幕时)。 然后,谷歌一次发送所有15条消息,然后您在那时显示它们。
在chrome to phone源中,有一行名为sendNoRetry
的方法:
if (delayWhileIdle) {
postDataBuilder.append("&")
.append(PARAM_DELAY_WHILE_IDLE).append("=1");
}
确保不是这样,那么Google服务器将按预期每30分钟向您发送一次C2DM消息。
collapse_id键应该完成这项工作。 要更新任何先前的通知,只需使用相同的密钥。 要在设备上生成新通知,请使用其他密钥。
例如,*对于聊天通知,使用密钥“chat”(collapse_id =“chat”)*为邀请使用密钥“邀请”(collapse_id =“invite”)
因此,所有unqiue collapse_id通知都将在设备上进行分组。
有关更多详细信息,请访问: https : //documentation.onesignal.com/reference#create-notification
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.