В моем приложении я планирую локальные уведомления следующим способом:
func addNotificationRequest(fireDate: Date, identifier: String, sound: UNNotificationSound)
{
let notificationCenter = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Important"
content.body = notificationMessage
content.sound = sound
content.categoryIdentifier = "UserActions"
let calendar = Calendar(identifier: .gregorian)
let triggerDate = calendar.dateComponents([.hour, .minute, .second], from: fireDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: true)
let notificationRequest = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
notificationCenter.add(notificationRequest) { error in
if let error = error
{
print(error.localizedDescription)
}
}
let myAction = UNNotificationAction(identifier: "MyActionID", title: "Open", options: [.foreground])
let category = UNNotificationCategory(identifier: "UserActions", actions: [myAction], intentIdentifiers: [], options: [])
notificationCenter.setNotificationCategories([category])
}
Уведомления должны срабатывать в определенное время и должны повторяться каждый день в одно и то же время.
На iOS 13 я обнаружил ошибку, которая может быть воспроизведена с помощью следующих шагов:
- I go до iOS Настройки> Уведомления> Имя приложения> Отключить «Разрешить уведомления»
- Затем я открываю приложение и планирую локальное уведомление, например, через 2 минуты
- После этого я go возвращаюсь в Настройки и снова включаю переключатель «Разрешить уведомления».
- После 2 минут локальное уведомление не отображается. Протестировано на более старых iOS версиях и уведомления отображаются как предполагается.
Возможно, некоторые люди тоже нашли эту ошибку и посоветовали, как ее исправить. Любая помощь приветствуется.