Как обновить ежедневное локальное уведомление в iOS 10?
Я пытаюсь выяснить, как обновить сообщение в локальных уведомлениях, когда оно повторяется ежедневно.
В настоящее время у меня есть следующий код в моем AppDelegate:
func scheduler(at date: Date, numOfNotes: Int)
{
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: true)
content.badge = numOfNotes as NSNumber
content.body = "REMINDER: " + String(numOfNotes) + " needs to be looked at!"
content.sound = UNNotificationSound.default()
let request = UNNotificationRequest(identifier: "reminderNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().add(request) {(error) in
}
}
Я храню numOfNotes
в UserDefaults
, у меня есть UISwitch
в моем UITableViewCell
, что при включении вызывает scheduler
функционировать так:
func remindMeSwitch(_ remindMeSwitch: UISwitch)
{
numOfNotes = UserDefaults.standard.integer(forKey: "Notes")
let delegate = UIApplication.shared.delegate as? AppDelegate
delegate?.scheduler(at: time, numOfNotes: numOfNotes)
}
Однако при настройке repeats
параметр для true
чтобы уведомление повторялось ежедневно в указанное время, numOfNotes
вызывается только один раз, когда я переключаю UISwitch
на.
Как настроить уведомление на ежедневное оповещение, но при этом иметь возможность обновлять уведомление по мере необходимости?
Благодарю.
1 ответ
Как правило, у вас нет возможности изменить локальные уведомления. Единственный способ - удалить / отменить старое уведомление и создать новое уведомление. Но вы можете использовать функцию копирования.
Например, если вы хотите изменить содержимое уведомления:
// create new content (based on old)
if let content = notificationRequest.content.mutableCopy() as? UNMutableNotificationContent {
// any changes
content.title = "your new content's title"
// create new notification
let request = UNNotificationRequest(identifier: notificationRequest.identifier, content: content, trigger: notificationRequest.trigger)
UNUserNotificationCenter.current().add(request)
}