Ошибка в триггере для уведомлений. стриж - PullRequest
1 голос
/ 25 октября 2019

Я создаю локальное уведомление, которое должно приходить каждый день в 9 утра. Я делал это, и это работало. Теперь почему-то выдает следующую ошибку ...

Подскажите, пожалуйста, как решить эту проблему правильно!

     let date = Date()
    var triggerDate = 
Calendar.current.dateComponents([.hour,.minute,.second,], from: 
date)
    triggerDate.hour = 9
      triggerDate.minute = 0
      triggerDate.second = 0

    let request = UNNotificationRequest(identifier: "Oneindifer", 
content: content, trigger: triggerDate) /*ERROR - Cannot convert 
value of type 'DateComponents' to expected argument type 
'UNNotificationTrigger?'*/

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Это работа!

 let date = Date()
    var triggerDate = 
Calendar.current.dateComponents([.hour,.minute,.second,], from: 
date)
    triggerDate.hour = 9
      triggerDate.minute = 0
      triggerDate.second = 0

let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)

    let request = UNNotificationRequest(identifier: "Oneindifer", 
content: content, trigger: trigger)
0 голосов
/ 25 октября 2019

Что вам нужно сделать, это передать UNNotificationTrigger в параметре trigger. Вы в настоящее время передаете DateComponents. Попробуйте заменить код следующим:

let date = Date()
var triggerDate = Calendar.current.dateComponents([.hour,.minute,.second,], from: date)
triggerDate.hour = 9
triggerDate.minute = 0
triggerDate.second = 0

let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)

let request = UNNotificationRequest(identifier: "identifier", content: content, trigger: trigger)

В качестве альтернативы: Посмотрите на этот ответ для расширения UIViewController. Это функция, которая позволяет легко создавать UNNotificationRequest: Отправлять локальное уведомление, когда таймер истекает

В вашем случае вы можете использовать расширение в ответе, связанном выше, вот так:: self.createLocalNotification(title: "9 hours have passed", hours: 9)

...