Обнаружение отклоненных уведомлений приложения UWP в фоновом режиме - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно предпринять определенные действия, когда уведомления моего приложения отклонены.

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

Следуя документации, я регистрирую фоновую задачу для обновлений:

var builder = new BackgroundTaskBuilder();
builder.Name = "ToastHistoryChangedBackgroundTask";
builder.SetTrigger(new ToastNotificationHistoryChangedTrigger());
builder.Register();

Обновления будут поступать через OnBackgroundActivated() вместе с некоторыми аргументами в ToastNotificationHistoryChangedTriggerDetail (например, причина отклонения). Однако на самом деле это не говорит вам , какие уведомления были обновлены. Я вручную отслеживаю текущее состояние с помощью ToastNotificationManager.History.GetHistory(); в обновлениях я могу проверить разницу и причину, по которой были удалены уведомления.

Это работает нормально, но когда приложение не запущено, я пропускаю удаления. Фоновая задача срабатывает, даже когда приложение закрыто, поэтому я действительно получаю обновления, но в этот момент в OnBackgroundActivated() уведомления уже пропали. Если, скажем, все было очищено, GetHistory() сообщит 0 уведомлений, но у меня нет предыдущего состояния для сравнения.

Я также пробовал подобный шаблон, используя UserNotificationChangedTrigger ; хотя он немного более общий (прослушивание всех уведомлений, а не только приложений), он страдает от той же проблемы получения обновления после того, как уведомление больше не отображается в запросе. Также обратите внимание, как в документах используется один и тот же механизм синхронизации для определения дельты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...