捆绑的通知取代了第一个通知

时间:2018-11-13 08:30:27

标签: android kotlin notifications android-notifications kotlin-android-extensions

使用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。据我所知,这与此无关。

但是,当我们显示第三个(或更多)通知时,该捆绑包将按预期工作并显示两个(或更多)捆绑的通知。但是第一个消失了。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我通过在isFirstNotificationInGroup为true时创建单独的摘要通知来解决此问题。 这将在发送“真实”通知之前发送。