2015-07-22 2 views
0

Я строю приложение для обмена сообщениями, которое уведомляет пользователя, когда новое сообщение приходит.Обновление андроида уведомления последовательно

Потому что это может произойти несколько раз в день (или несколько раз в час), я не хочу постоянно бросать новые уведомления. Вместо этого, если пользователь не отклонил уведомление, я хотел бы обновить его количеством ожидающих новых сообщений (в соответствии с директивой «Stacking»).

В документации Android, есть пример обновления уведомления с номером:

mNotificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
// Sets an ID for the notification, so it can be updated 
int notifyID = 1; 
mNotifyBuilder = new NotificationCompat.Builder(this) 
.setContentTitle("New Message") 
.setContentText("You've received new messages.") 
.setSmallIcon(R.drawable.ic_notify_status) 
numMessages = 0; 
// Start of a loop that processes data and then notifies the user 
    ... 
    mNotifyBuilder.setContentText(currentText) 
     .setNumber(++numMessages); 
    // Because the ID remains unchanged, the existing notification is 
    // updated. 
    mNotificationManager.notify(
     notifyID, 
     mNotifyBuilder.build()); 
... 

ОДНАКО, это, кажется, предположить, что вы поддерживаете этот номер внутри приложения и вне менеджера уведомлений/строитель. По ряду причин это очень неудобно (и хрупко) в контексте моей заявки.

Я хотел бы знать - есть ли способ прочитать текущий номер, присвоенный сообщению (эквивалент mNotifyBuilder.getNumber())?

ВОПРОС СЛЕДУЮЩЕЙ ВОПРОСЫ: Если считывание текущего номера невозможно, существует ли способ узнать о запущенной службе, если уведомление было отменено или вручную уволено пользователем?

+0

Вы еще что-нибудь пробовали? Это может помочь, если вы покажете свой собственный код! –

+1

Трудно показать отрицательный результат .... Я смог успешно получить уведомление и обновить уведомление. Я могу даже добавить номер! Однако, поскольку я не знаю, когда уведомление было отклонено, и потому, что я не знаю, что такое текущий номер, я не знаю, как увеличить число :(:( – HappyKatz

ответ

0

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

Прямо из документации: «Если уведомление с тем же идентификатором уже опубликовано приложение и до сих пор не отменен, он будет заменен обновленной информацией.»

См. this post и that one.

+0

Получил это, и он отлично работает Я ищу способ узнать содержание уведомления, связанного с ID, прежде чем обновлять его (в этом случае узнать номер, связанный с уведомлением). Просто возможность перезаписать уведомление не помогает мне. – HappyKatz

+0

Зачем вам нужен старый номер? Просто используйте новый. Текст останется таким же, не так ли? – Matthias

+0

Я хотел, чтобы иметь возможность показывать количество новых сообщений в уведомлении и сбрасывать этот номер, когда уведомление отклонено. К сожалению, не похоже, что есть способ сделать это: / – HappyKatz

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