Различные каналы уведомлений объединяются – нежелательное поведениеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Различные каналы уведомлений объединяются – нежелательное поведение

Сообщение Anonymous »

Я настраиваю свое приложение на API36 и тестирую его на своем телефоне (Android 16 Samsung, OneUI8).
Мое приложение создает 2 канала уведомлений (Другие действия и Действия пользователя). Кнопки Уведомление о статусе и Уведомление пользователя публикуют уведомления по следующим выделенным каналам:
Изображение

Изображение

Что я понял: после того, как мое приложение отправляет 2 уведомления в отдельные группы и каналы, следующая последовательность:
  • Уведомление 1 опубликовано и отображается в строке состояния (1 значок «предупреждения» теперь в строке состояния):
Изображение
  • Уведомление 2 опубликовано и отображается в строке состояния (2 значка «предупреждение» теперь в строке состояния):
Изображение
  • Через несколько секунд Notification1 и Notification2 объединяются (складываются друг на друга, сгруппированы) вместе в строке состояния (теперь в строке состояния 1 значок)
Изображение

Посмотрите этот этап «объединения» со скриншотами:
Изображение

Изображение

Сначала Я думал, что это что-то с Android16 или OneUI8.
Но позже я понял, что многие приложения (например, Viber) имеют аналогичную «многоканальную» конфигурацию уведомлений, и их уведомления не объединяются. Например, канал A не объединяется с каналом B.
Итак, давайте посмотрим, как я создаю эти каналы уведомлений и уведомления:
Регистрация канала уведомлений:

Код: Выделить всё

mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

NotificationChannel lNotificationUserActionChannel = new NotificationChannel(
"USERACTION_NOTIFICATION",
"User actions",
NotificationManager.IMPORTANCE_DEFAULT);

NotificationChannel lNotificationStatusChangeChannel = new NotificationChannel(
"OTHER_NOTIFICATION",
"Other actions",
NotificationManager.IMPORTANCE_DEFAULT);

mNotificationManager.createNotificationChannel(lNotificationUserActionChannel);
mNotificationManager.createNotificationChannel(lNotificationStatusChangeChannel);
Итак, как мне создавать уведомления:

Код: Выделить всё

public void postNotification(int id) {
Notification notification = new NotificationCompat.Builder(context, 0==id? "USERACTION_NOTIFICATION" : "OTHER_NOTIFICATION")
.setContentTitle(0==id ? "New mention" : "New reaction")
.setTicker("Ticker")
.setSmallIcon(R.drawable.ic_warning_sign_notification)
.setContentText("Text")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setGroup(0==id ? "group_mentions" : "group reactions")
.build();
mNotificationManager.notify(new Random().nextInt(), notification);
}
Сразу после того, как произошло это нежелательное слияние, я нашел это в лог-коде:

setRequestedFrameRateframeRate=-2.0,
this=StatusBarIconView(slot='net.mytestsw.notificationtester/0x0'
alpha=1.0 icon=StatusBarIcon(icon=Icon(typ=RESOURCE
pkg=net.mytestsw.notificationtester id=0x7f0800d8) видимый пользователь=0 )
visibleState=ICON iconColor=#ff1b6cf7 staticDrawableColor=#ff1b6cf7
decorColor=#ff1b6cf7 анимацииStartColor=#0 currentSetColor=#ff1b6cf7
notification=StatusBarNotification(pkg=net.mytestsw.notificationtester
user=UserHandle{0} id=0
tag=0|net.mytestsw.notificationtester|g:Aggregate_NormalNotificationSection
key=0|net.mytestsw.notificationtester|0|0|net.mytestsw.notificationtester|g:Aggregate_NormalNotificationSection|10720|0|net.mytestsw.notificationtester|g:Aggregate_NormalNotificationSection:
Notification(channel=OTHER_NOTIFICATION ярлык=null contentView=null
vibrate=null sound=null defaults=0
flags=LOCAL_ONLY|GROUP_SUMMARY|AUTOGROUP_SUMMARY color=0x00000000
groupKey=0|net.mytestsw.notificationtester|g:Aggregate_NormalNotificationSection
vis=PRIVATE semFlags=0x0 semPriority=0 semMissedCount=0))),
caller=com.android.systemui.statusbar.StatusBarIconView.onAttachedToWindow:6 android.view.View.dispatchAttachedToWindow:24320
android.view.ViewGroup.addViewInner:5582
android.view.ViewGroup.addView:5358
com.android.systemui.statusbar.phone.LegacyNotificationIconAreaControllerImpl.updateIconsForLayout:468

Что привлекло мое внимание: Aggregate_NormalNotificationSection. Но я не могу найти ничего об этом в Google.
Итак, мне интересно, как обстоят дела у других приложений? Что мне сделать, чтобы предотвратить объединение моих каналов уведомлений?

Подробнее здесь: https://stackoverflow.com/questions/798 ... d-behavior
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»