繁体   English   中英

如何折叠Android通知?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM