Не презаписвайте съществуващо известие

За даден ID на известие възможно ли е (използвайки стандартни пакети за Android) да не се задава известие, ако има съществуващо известие от приложението?

Имам приложение за новини, което уведомява потребителите за заглавия на извънредни новини, едно от изискванията е да не надписвате извънредни новини, ако потребителят не ги е изчистил или не е щракнал, за да ги види.

Използвам SharedPreference, за да задам флаг, за да разбера дали вече показвам заглавие плюс намерение за изтриване, което ще го изчисти. Въпреки това deleteIntent не винаги се извиква, когато потребителят изчисти всички известия.

Благодаря предварително.

Сандип


person Ionic Walrus    schedule 05.10.2010    source източник


Отговори (2)


За всеки, който следва това по-късно:

Няма лесен начин да не презапишете съществуващ идентификатор на известие с помощта на SDK. Начинът да направите това е:

  • използвайте булев флаг чрез SharedPreference, ако този флаг е зададен, тогава не пишете известието
  • нулирайте този флаг, когато потребителят „Изчисти всички известия“. За да направите тази настройка deleteIntent (чрез услуга), уверете се, че сте изчистили този флаг в onStartCommand() и onStart()
  • по желание нулирайте флага, когато приложението се стартира
person Ionic Walrus    schedule 07.10.2010

Ако вашето изискване е:

едно от изискванията е да не се надписва извънредна новина, ако потребителят не я е изчистил или не е кликнал, за да я види.

Можете да използвате NotificationManager за получаване на списък с всички активни известия, публикувани от вашия приложение, използващо getActiveNotifications()

И проверете дали потребителят е отхвърлил или отворил известието и предприемете необходимото действие.

Според референтния документ за getActiveNotifications():

Възстановете списък с активни известия: такива, които са били публикувани от приложението за повикване, които все още не са отхвърлени от потребителя или анулирани от приложението.

Дано помогне.

person harsh201    schedule 05.05.2016