Как я могу использовать CancelAll () в Cordova-Local-Notifications? - PullRequest
0 голосов
/ 08 марта 2020

Мой друг и я пытались разработать приложение с Cordova как школьный проект. У нас нет большого опыта работы с JavaScript, но у нас есть все для работы, за исключением части уведомлений, которая очень важна в нашей идее приложения. Мы застряли уже больше недели.

Идея проста, мы хотим, чтобы пользователь указал, в какие временные отметки он хочет получать напоминания о приеме лекарств. Мы заставили его работать для первого уведомления, которое добавляет пользователь, но мы хотим, чтобы пользователь мог добавить несколько напоминаний. Мы решили сделать это, отменив все уведомления, а затем добавив их снова, когда пользователь добавит второе или третье уведомление. Но похоже, что мы не можем заставить работать отменяющую часть.

for(const day of reminder.days.value){
for(const time of reminder.times){
  var idcounter = localStorage.getItem('idcounter');
  if (idcounter === null) {
    idcounter = 0;
  } else {
    idcounter++;
  }
  localStorage.setItem("idcounter", idcounter);
  ids.push(idcounter);

  var dt = new getNextDayOfTheWeek(day, new Date(Mon Jan 01 2020 ${time}));
  var pastdt = dt.getDate() - 7;
  dt.setDate(pastdt);

  add_reminder(idcounter, dt, medication, affliction)

  console.log(idcounter, dt, medication, affliction);
}
  reminder.ids = ids;

Функция расписания:

function schedule(id, schedule_time, medication, affliction) {
cordova.plugins.notification.local.schedule({
id: id,
title: "Nu är det dags att ta en dos",
text: "Ta " + medication + " mot " + affliction + " nu.",
smallIcon: "../images/DosAvi_badge.png",
icon: "../images/DosAvi_icon.png",
foreground: true,
trigger: { 
  firstAt: schedule_time,
  every: 'week', count: 3000
}
});
}

А затем отмена:

function clearall() {
itemsArray = JSON.parse(localStorage.getItem('items'))
if(devicereadytrue) {
  cordova.plugins.notification.local.getIds(function(ids) {
  notification.local.cancel(ids);
  }, cordova.plugins);
cordova.plugins.notification.local.getTriggeredIds(function(ids) {
  notification.local.clear(ids);
}, cordova.plugins);
}

localStorage.setItem("idcounter", 0);
itemsArray.splice(0)
localStorage.setItem('items', JSON.stringify(itemsArray))
ul.innerHTML = "";
}

Мы должны сделать это очень скоро. Вся помощь приветствуется.

...