Я пытаюсь создать уведомление на основе даты и времени, указанных пользователем для приложения, над которым я работаю. Я могу сохранить дату пользователя и получить. Теперь я хочу, чтобы уведомление появлялось, когда указанная пользователем дата прибыла, как напоминание. Я могу создать уведомление с жестко закодированными значениями, но теперь я не могу выполнить извлечение из базы данных Real для передачи в значение триггера. мои коды указаны ниже
func notifcation() -> Void {
let calendar = Calendar.current
let components = DateComponents(year: 2018, month: 09, day: 08, hour: 18, minute: 55) // Set the date here when you want Notification
let date = calendar.date(from: components)
let comp2 = calendar.dateComponents([.year,.month,.day,.hour,.minute], from: date!)
let trigger = UNCalendarNotificationTrigger(dateMatching: comp2, repeats: true)
let content = UNMutableNotificationContent()
content.title = "Don't forget"
content.body = "Buy some milk"
content.sound = UNNotificationSound.default()
let identifier = "UYLLocalNotification"
let request = UNNotificationRequest(identifier: identifier,
content: content, trigger: trigger)
center.add(request, withCompletionHandler: { (error) in
if let error = error {
// Something went wrong
print(error as Any)
}
})
}
тогда я вызываю уведомления () в моем viewDidLoad
Модель
class ListModel: Object {
@objc dynamic var createdDate: Date?
@objc dynamic var remiderDate: Date?
}
на основании ответа Sh
Моя функция
func getDataFromDB() -> Results<ListModel>? {
let todoListArray: Results<ListModel> = database.objects(ListModel.self)
return todoListArray
}
мой viewdidLoad был теперь
TodoListFunctions.instance.getDataFromDB()?.forEach({ (list) in
notifcation(list.remiderDate)
})
в моем AppDelegate для разрешения
let center = UNUserNotificationCenter.current()
let options: UNAuthorizationOptions = [.alert, .sound]
center.requestAuthorization(options: options) {
(granted, error) in
if !granted {
print("Something went wrong")
}
}
другие коды будут предоставлены по запросу