Мне нужно предпринять определенные действия, когда уведомления моего приложения отклонены.
Я использую материал вокруг ToastNotificationHistory , чтобы получать / реагировать на обновления уведомлений.
Следуя документации, я регистрирую фоновую задачу для обновлений:
var builder = new BackgroundTaskBuilder();
builder.Name = "ToastHistoryChangedBackgroundTask";
builder.SetTrigger(new ToastNotificationHistoryChangedTrigger());
builder.Register();
Обновления будут поступать через OnBackgroundActivated()
вместе с некоторыми аргументами в ToastNotificationHistoryChangedTriggerDetail
(например, причина отклонения). Однако на самом деле это не говорит вам , какие уведомления были обновлены. Я вручную отслеживаю текущее состояние с помощью ToastNotificationManager.History.GetHistory()
; в обновлениях я могу проверить разницу и причину, по которой были удалены уведомления.
Это работает нормально, но когда приложение не запущено, я пропускаю удаления. Фоновая задача срабатывает, даже когда приложение закрыто, поэтому я действительно получаю обновления, но в этот момент в OnBackgroundActivated()
уведомления уже пропали. Если, скажем, все было очищено, GetHistory()
сообщит 0 уведомлений, но у меня нет предыдущего состояния для сравнения.
Я также пробовал подобный шаблон, используя UserNotificationChangedTrigger ; хотя он немного более общий (прослушивание всех уведомлений, а не только приложений), он страдает от той же проблемы получения обновления после того, как уведомление больше не отображается в запросе. Также обратите внимание, как в документах используется один и тот же механизм синхронизации для определения дельты.
Есть ли способ получить фактическое содержимое обновления уведомлений или, возможно, другой механизм, который обойдет эту проблему?