#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());
это решение отменит предыдущее количество.