Количество значков приложения для обновления Android без push-уведомления Android Oreo

#android #push-notification #android-8.0-oreo #badge #android-launcher

Вопрос:

Я хочу обновить количество значков значков приложений без push-уведомлений(например. Бесшумный толчок). Я просто хочу обновить количество значков приложений после прочтения любых уведомлений внутри приложения, аналогично LinkedIn, где он обновляет количество значков приложений при чтении любого уведомления. В настоящее время я реализовал решение, в котором у меня есть полезная нагрузка от FCM с количеством значков, и обновляю его с помощью конструктора уведомлений Android с настроенным каналом бесшумного push-уведомления.

 var notificationBuilder = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setContentTitle("New Messages")
    .setContentText("You've received 3 new messages.")
    .setSmallIcon(R.drawable.ic_notify_status)
    .setNumber(messageCount)
    .build()
 

но это не сработает для меня, так как мне также нужно обновить счетчик, как только я прочитаю какое-либо уведомление внутри приложения. Если я удалю уведомление из панели уведомлений, то счетчик также исчезнет из значка приложения, есть ли способ установить этот счетчик без push-уведомления в приложении? Заранее спасибо.

Комментарии:

1. «Мне также нужно обновить счетчик, как только я прочитаю любое уведомление внутри приложения» — обновите Notification его новым номером, используя код, аналогичный тому, который вы показываете в своем вопросе. Этот код не связан с FCM и может использоваться везде, где вам это нужно.

2. Я попробовал это, пытаюсь установить счетчик без нажатия, используя приведенный выше код, но для этого мне снова нужно показать бесшумный толчок в трее уведомлений

Ответ №1:

Поэтому, проработав так долго над функцией обновления количества значков, я пришел к выводу, что Android не предоставляет никакого api для обновления количества значков на значке приложения без уведомления. В Android мы можем внутренне отправлять уведомления и с помощью этого обновлять количество значков.

Поэтому нам нужно уведомить устройство об обновлении количества значков, без уведомления мы не можем его обновить. Если мы отправляем счетчик в построитель уведомлений, нам просто нужно позаботиться об обновлении количества значков, чтобы идентификатор уведомления оставался неизменным каждый раз, если мы хотим обновить количество значков, в противном случае он добавит счетчик к предыдущему уведомлению. Просто сохраните идентификатор уведомления таким же и создайте отдельный канал с бесшумным нажатием, чтобы обновить количество значков.

 public static int NOTIFICATION_ID = 1001; 
NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
 

это решение отменит предыдущее количество.