У меня есть сценарий, в котором я хочу добавить уведомление о приеме лекарств в течение 3 дней / 5 дней.Напоминание согласно требованию пользователя - PullRequest
0 голосов
/ 02 марта 2019

Вот обновленный код, создал функцию для этого и вызвал в viewDidLoad. Я пытаюсь показать его в течение четырех дней, включая сегодняшний день.

 func scheduleNotification(day: Int) {

       var date = DateComponents()
       date.year = 2019
       date.month = 3
       date.day = day
       date.hour = 12
       date.minute = 30

       let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
       let content = UNMutableNotificationContent()
       content.title = "Hi User"
       content.body = "Take Medicine"
       content.sound = UNNotificationSound.default


       let request = UNNotificationRequest(identifier: "textNotification\(day)", content: content, trigger: trigger)
       UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
       UNUserNotificationCenter.current().add(request) {(error) in
           if let error = error {
               print("Uh oh! We had an error: \(error)")
           }
       }





 override func viewDidLoad()
   {
       super.viewDidLoad()

       for index in 1...4 {
           scheduleNotification(day: index)
       } 
   }

1 Ответ

0 голосов
/ 02 марта 2019

В scheduleNotification вы звоните removeAllPendingNotificationRequests().

Это удалит все ранее запланированные уведомления.

Когда вы звоните scheduleNotification 4 раза, каждое из первых трех уведомленийбудет отменен при последующем вызове на scheduleNotification.

Только последнее уведомление останется.

Вы должны удалить вызов на removeAllPendingNotificationRequests().Вы можете назвать это до цикла for, если хотите.

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