Как сделать локальные уведомления по дням/часам на Swift?

Доброго времени суток. Новичок в Swift, поэтому не нашёл ответа на вопрос в гугле. Не судите строго.
Сделал приложение с локальными уведомлениями. Хочу что бы каждый день приложение выдавало уведомление с НОВОЙ фразой.
Как сделать уведомления по дате? То есть что бы 18/02/20 в 18:54 приложение выдало фразу. Далее 19:02:20 в 18:54 выдало следующую фразу.
Как сделать такой тип уведомлений, и как «запихнуть» более простым способом?
  • Вопрос задан
  • 583 просмотра
Пригласить эксперта
Ответы на вопрос 2
ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode
let content = UNMutableNotificationContent()
content.sound = .default
content.title = "Заголовок"
content.body = "Сообщение"
            
var dateComponents = DateComponents()
dateComponents.hour = 9
dateComponents.minute = 0
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UNNotificationRequest.weeklyAlKahID, content: content, trigger: trigger)
            
UNUserNotificationCenter.current().add(request) { error in
       guard error == nil else {
              print(error ?? "Error with donate")
              return
        }
}


В этом примере каждые 9 часов утра будет доставляться уведомление. Обратите внимание, у trigger стоит repeat. Не забудьте перед запросить разрешение на пуши.

P.S. Это тривиальный вопрос. Вы, наверное, начинающий разработчик. В сообществе не принято с любой проблемой обращаться на тостер, первые 5 ссылок в гугле на вопрос local notification swift тоже хорошие ответы.
Ответ написан
NSA-bot
@NSA-bot
Если вы уже сделали такое приложение, то знаете, что такое триггер.
Используйте для вашего уведомления триггер UNCalendarNotificationTrigger, в котором указывайте только час и минуту (можно и секунды) срабатывания уведомления. Но не указывайте день, месяц и т.п.
Вот например уведомление с таким триггером будет срабатывать в 8:30
var date = DateComponents()
date.hour = 8
date.minute = 30 
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы