UNCalendarNotificationTrigger Каждый третий день? - PullRequest
0 голосов
/ 25 апреля 2018

мое приложение должно напоминать пользователю о чем-то каждые n дней.

В настоящее время у меня есть

var dateComponents = DateComponents()
dateComponents.hour = userHour
dateComponents.minute = userMinute
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

Моя проблема в том, что я не знаю, как выразить пропускдаты с DateComponents.

Я нашел UNTimeIntervalNotificationTrigger, что позволяет мне отключать его каждые 24 или 48 часов и т. д., но это дает мне возможность стрелять в определенное время дня.

Должен ли я смешать эти 2?Сначала установите триггер Календаря, и в первом уведомлении он действительно повторяется?Мне не кажется правильным, должен быть более легкий путь.

1 Ответ

0 голосов
/ 25 апреля 2018

Я довольно глубоко изучил локальные уведомления iOS, и есть некоторые вещи, которые странным образом отсутствуют.Насколько я знаю, это одна из тех вещей.

Если вам не нужно устанавливать конкретное время для запуска уведомления, вы можете использовать UNTimeIntervalNotificationTrigger, который позволит вам устанавливать уведомление каждые 72 часа с момента его установки.

Если вам нужно и точное время для уведомления, вы можете использовать свой код, но добавьте dateComponents.weekday и установите 1 и 4 или что-то еще.Что не идеально, но может работать для того, что вам нужно.

Решение, которое потребует гораздо больше усилий, состоит в том, чтобы создать как 5 уведомлений.Установите день и время, когда вы хотите, чтобы они срабатывали (3 дня, 6 дней, 9 дней и т. Д.). Затем, когда пользователь запустит приложение, вы посмотрите, было ли отправлено какое-либо из уведомлений, и установите их снова в будущем.Это не будет повторяться.Это зависит от вас, чтобы вручную установить их каждый раз.

...