Повторите локальное уведомление каждые n дней - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь создать приложение, которое будет отправлять локальные уведомления каждые n дней.

У меня есть DailyRepeat структура, которая содержит информацию уведомления:

struct DailyRepeat: BaseRepeat {

    var title: String
    var body: String
    var date: Date

    var day: Int

}

И метод, который запланировал уведомление:

func notifyDaily(at notification: DailyRepeat) {
    let content = generateContent(title: notification.title, body: notification.body)
    let dateComponents = DateComponents(day: notification.day, hour: notification.date.time.hours, minute: notification.date.time.minutes)
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

    notificationCenter.add(request)
}

Моей первой мыслью было создать UNCalendarNotificationTrigger в первый день запуска, затем обработать уведомление и установить UNTimeIntervalNotificationTrigger, но, к сожалению, я не могу найти способ обработки уведомления без взаимодействия с пользователем.

Есть мысли, как это должно работать?

1 Ответ

1 голос
/ 23 февраля 2020

Согласно документации , если вы хотите, чтобы уведомление повторялось, вам нужно установить повторяемые ограничения для компонентов даты.

Таким образом, чтобы настроить отправку уведомлений каждое утро в 8:30, вам нужно просто установить час и минуту и ​​повторить их.

var date = DateComponents()
date.hour = 8
date.minute = 30 
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

Я не думаю, что вы можете использовать повторы для повторения каждого x числа дней, вы можете установить определенные c дни недели или даты месяца, но не каждые n дней ,

Вы можете установить TimeInterval x дней и повторить это, но получить точное время для запуска может быть сложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...