Связанное уведомление заменяет первое уведомление - PullRequest
0 голосов
/ 13 ноября 2018

При создании связанного уведомления с использованием 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())
        }

Что происходит?

Первое уведомление будет отображаться так, как должно.Так что никаких проблем здесь.Затем, когда мы показываем второе уведомление.Он заменяет первый.Этого не должно быть. И нет, это не из-за идентификатора уведомления.Насколько я знаю, это не связано с этим.

Но когда мы показываем третье (или более) уведомление, пакет работает, как ожидалось, и показывает два (или более) связанных уведомления.Но первый ... ушел.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 15 ноября 2018

Я исправил это, создав отдельное сводное уведомление, когда isFirstNotificationInGroup имеет значение true. Это будет отправлено непосредственно перед отправкой «настоящего» уведомления.

...