Здесь мы используем уведомление о триггере: Календарь: триггер с указанием c даты и времени. Триггер создается с использованием объекта компонентов даты, который облегчает выполнение определенных повторяющихся интервалов. Чтобы преобразовать дату в ее компоненты даты, используйте текущий календарь. Например:
`// Swift
let date = Date(timeIntervalSinceNow: 3600)
let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,],from: date)
//Objective-C
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:3600];
NSDateComponents *triggerDate = [[NSCalendar currentCalendar]
components:NSCalendarUnitYear +
NSCalendarUnitMonth + NSCalendarUnitDay +
NSCalendarUnitHour + NSCalendarUnitMinute +
NSCalendarUnitSecond fromDate:date];`
Чтобы создать триггер из компонентов даты:
// Swift
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)
// Objective-C
UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:triggerDate repeats:NO];
Чтобы создать триггер, повторяющийся с определенным интервалом, используйте правильный набор компонентов даты. Например, чтобы уведомление повторялось ежедневно в одно и то же время, нам нужны только час, минуты и секунды:
let triggerDaily = Calendar.current.dateComponents([hour,.minute,.second,], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDaily, repeats: true)
Чтобы оно повторялось еженедельно в одно и то же время, нам также нужен день недели:
let triggerWeekly = Calendar.current.dateComponents([.weekday,hour,.minute,.second,], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerWeekly, repeats: true)
Это интересное изменение по сравнению с более старой платформой уведомлений, в которой были дата запуска и интервал повторения. Компоненты даты более гибкие, но не существует простого способа полностью воспроизвести свойство fireDate старой платформы. Например, если я хочу, чтобы ежедневный триггер начинался через 1 неделю.
пожалуйста, выполните gothrough
UNCalendarNotificationTrigger https://developer.apple.com/documentation/usernotifications/uncalendarnotificationtrigger
Визит https://useyourloaf.com/blog/local-notifications-with-ios-10/