0

В моем приложении я применяю push-уведомления и делаю их с использованием класса notificationCompat.панель уведомлений + разъяснения с уведомлением

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

Когда пользователь нажимает на уведомление, используя ожидающее намерения, я направляю пользователя к определенному действию, где он может видеть все предыдущие уведомления. (Я прочитал их из mysql db).

вопрос 1: Я хочу, чтобы все уведомления в строке состояния списываться, если пользователь нажмет только на одном из них. Может быть любой случайный (учитывая, что он из моего приложения). метод setAutoCancel() удаляет только тот, который был нажат, и я не знаю, где бы я мог реализовать метод cancelAll().

Ответ:

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.cancelAll(); 
} 

вопрос 2: Поскольку каждое уведомление имеет уникальный идентификатор, отправка несколько уведомлений от отдельного приложения, а в случае не проверяя от пользователя, может привести к появлению нескольких значков на панели уведомлений. Android, начинает собирать их и показывать на них номера значков, как только они начинают занимать слишком много места, и система понимает, что для них недостаточно места. Есть ли способ объединить их все с самого начала? То есть, всякий раз, когда я отправляю уведомление, и он не проверяется, нужно добавить второй, а на панели с одним номером 2 или + должен отображаться один значок, независимо от используемой системы.

+1

вопрос 1: onResume в действии, которое вы показываете, или о любых действиях в вашем приложении. вопрос 2: Я не знаю какого-либо существующего простого метода для этого, я сделал это путем ручного отслеживания через свою собственную базу данных. –

+0

@ChorWaiChun Спасибо. Я обновил свой вопрос с ответом, пожалуйста, посмотрите. Что касается второго вопроса, вы проверяете каждого пользователя, проверяли ли оно уведомление или нет и подсчитывали? Я не совсем понял тебя. – tony9099

+0

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

ответ

1

Я хотел бы объединить вопросы 1 и 2 в один ответ: не показывать несколько уведомлений! Покажите одно уведомление и обновите его, если у вас есть несколько непроверенных уведомлений. Как пользователь, я бы очень разозлился, если в моей панели уведомлений были отправлены уведомления из одного приложения. Подумайте о приложении GMail и о его уведомлениях, если вы получите один на входящий e-mail.

На устройствах, выпускаемых до 4.1, вам нужно будет сделать это с помощью Normal View. Если у вас есть только одно непроверенное сообщение, вы можете сразу показать содержимое сообщения в уведомлении, и если у вас есть несколько вариантов, вы можете сделать что-то вроде уведомления GMail и показать что-то вроде «5 непроверенных сообщений».

На устройствах 4.1+ вы можете использовать Big View, чтобы показать их все сразу.

Смежные вопросы