У меня возникла очень странная ошибка при попытке запланировать уведомление. Пользователь предоставляет час и минуту, когда они хотят получить локальное уведомление, и они могут выбрать, хотите ли они, чтобы он планировался ежедневно еженедельно или ежемесячно.Местное уведомление не срабатывает, если повтор установлен на ежедневный
Однако у меня возникла очень странная проблема. Это мой код:
func enableLocalNotifications() {
notificationsSwitch.isOn = true
notificationsOn = true
//first cancel all current local notifications
UIApplication.shared.cancelAllLocalNotifications()
//create new one according to input
let calendar = Calendar(identifier: .gregorian)
var fireComponents=calendar.dateComponents([.day, .month, .year], from:NSDate() as Date)
fireComponents.hour = notificationHour
fireComponents.minute = notificationMinute
fireComponents.second = 00
fireComponents.calendar = calendar
let notification = UILocalNotification()
notification.timeZone = NSTimeZone.local
notification.alertBody = notificationDescription
notification.alertTitle = "Reminder"
notification.fireDate = fireComponents.date
notification.soundName = UILocalNotificationDefaultSoundName
switch notificationRepeat {
case "Daily":
notification.repeatInterval = NSCalendar.Unit.minute
case "Weekly":
notification.repeatInterval = NSCalendar.Unit.weekOfYear
case "Monthly":
notification.repeatInterval = NSCalendar.Unit.month
default:
break
}
UserDefaults.standard.setValue(notificationRepeat, forKey: "notificationRepeat")
UserDefaults.standard.setValue(notificationDescription, forKey: "notificationDescription")
UserDefaults.standard.setValue(notificationHour, forKey: "notificationHour")
UserDefaults.standard.setValue(notificationMinute, forKey: "notificationMinute")
UserDefaults.standard.setValue(true, forKey: "notificationSet")
}
}
Самое смешное, если я, например, хочу, чтобы создать «ежедневно» уведомление в 12:00, и на данный момент это 11:59, его просто не будет запускать уведомление в 12:00, на самом деле он ничего не срабатывает. Однако я заметил, что если я изменил repeatInterval на NSCalendar.Unit.minute, то вдруг, если я планирую уведомление за 12:00, и это 11:59, я действительно получаю его в 12:00.
Есть ли какие-либо исправления для моей ошибки?
Привет, к сожалению, это не проблема, но я понял это вскоре после этого. Я был в приложении и ждал моих местных уведомлений. Однако, как только я закрываю приложение/позволяю ему работать в фоновом режиме, я получил все локальные уведомления в нужное время. Однако знаете ли вы, как я могу узнать, было ли локальное уведомление запущено, когда пользователь находится внутри приложения? – Misha