Android автоматически удаляет уведомление, если в данных уведомления присутствует `alarmId` - PullRequest
1 голос
/ 11 июля 2019

Я создаю приложение Cordova, которое запускает локальные push-уведомления для Android с cordova-plugin-local-notifications , которое, как представляется, работает в большинстве случаев, но я столкнулся с этой ошибкой, когда некоторые из моих уведомлений будет срабатывать, но сразу же очищается от панели уведомлений. Другие уведомления будут срабатывать очень хорошо. Странно то, что единственное реальное различие между рабочими и неработающими уведомлениями состоит в том, что у рабочих уведомлений есть опция data, которая включает в себя ключ reminderId, а в сломанных уведомлениях вместо этого есть ключ alarmId.

Это сломано:

scheduleNotification({
  id: notification.id,
  trigger: { at: new Date(notification.timestamp) },
  title: 'Precorrection Alarm',
  text: maybeBlank(alarm.name, 'Unnamed Alarm'),
  data: {
    type: 'alarm',
    alarmId: alarm.id
  }
})

Но это прекрасно работает:

scheduleNotification({
  id: notification.id,
  trigger: { at: new Date(notification.timestamp) },
  title: 'Praise Reminder',
  text: maybeBlank(reminder.name, 'Unnamed Reminder'),
  data: {
    type: 'reminder',
    reminderId: reminder.id
  }
})

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

Не понимаю ли я что-то о том, как Android обрабатывает это поле data? Я подумал, что он должен был использоваться для отправки специфичных для приложения данных с PN, но, похоже, он вообще этого не делает (данные даже недоступны в параметрах запуска при открытии из PN).

Я бы опубликовал это как проблему в репозитории плагинов, но там находится город-призрак.

...