Я испытываю странную ошибку с iOS 10.2 с UNTimeIntervalNotificationTrigger
и UNUserNotificationCenterDelegate
. В основном уведомление, которое я создаю, сразу же получает делегат, а затем снова на правильном внутреннем. Это происходит только тогда, когда для свойства повторов установлено значение true на триггере.iOS 10.2 UNUserNotificationCenterDelegate/UNTimeIntervalNotificationTrigger Ошибка?
Кто-нибудь еще видел эту проблему? Сейчас я думаю, что мне нужно проверить дату запуска в делегате и сравнить с сохраненной зарегистрированной датой, но я хочу избежать этого, если это возможно.
Пример кода для создания уведомлений
let content = UNMutableNotificationContent()
content.body = "My notification message"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
let request = UNNotificationRequest(identifier: "MY_IDENTIFIER", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
UNUserNotificationCenterDelegate обжигают непосредственно после .Add
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Code called here instantly when trigger repeats = true
// Code called again at proper interval as well (60 seconds)
}
Если изменить триггер повторами фальшивыми, это не происходит
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)
Документы говорят: «Если повторы истинны, значение параметра timeInterval должно быть 60 секунд или больше». Заставляет меня задаться вопросом, не лучше ли было бы выбрать больший интервал и посмотреть, что произойдет тогда, так как вы правы на линии, так или иначе. – matt
Фактически он установлен на несколько дней, я просто изменил его на 60 для примера кода здесь. –