使用setGroup()和setGroupSummary()创建捆绑通知时,关于通知的行为我遇到了一些奇怪的问题。
因此,作为参考。此示例包含以下问题:
var isFirstNotificationInGroup = true
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
notificationManager.activeNotifications.forEach {
if (it.notification.group == groupId) {
isFirstNotificationInGroup = false
}
}
}
val builder = NotificationCompat.Builder(this, channelId).apply {
color = resources.getColor(R.color.colorAccent)
priority = NotificationCompat.PRIORITY_MAX
setSmallIcon(R.drawable.ic_dotoo_logo)
setContentTitle(title)
setContentText(body)
setStyle(NotificationCompat.BigTextStyle()
.bigText(body))
setAutoCancel(true)
setCategory(NotificationCompat.CATEGORY_SOCIAL)
setGroup(groupId)
setGroupSummary(isFirstNotificationInGroup)
}
< ... >
with(NotificationManagerCompat.from(this)) {
notify(notificationId, builder.build())
}
会发生什么?
第一个通知将按原样显示。因此,这里没有问题。 然后,当我们显示第二个通知时。它代替了第一个。这不应该发生。 不,这不是由于通知ID。据我所知,这与此无关。
但是,当我们显示第三个(或更多)通知时,该捆绑包将按预期工作并显示两个(或更多)捆绑的通知。但是第一个消失了。
预先感谢您的帮助。
答案 0 :(得分:1)
我通过在isFirstNotificationInGroup为true时创建单独的摘要通知来解决此问题。 这将在发送“真实”通知之前发送。