Как запустить уведомление в определенный день недели, но каждую вторую неделю (Swift + Xcode)? - PullRequest
0 голосов
/ 02 сентября 2018

По сути, мне нужно приложение, которое запускает уведомление каждый второй понедельник. У меня есть приложение, которое запускает уведомление каждый понедельник. Есть ли способ настроить его так, чтобы при получении первого уведомления приложение начинало двухнедельный интервал времени, когда оно снова запускало уведомление и повторяло ли оно? Например, если у меня была переменная с именем «week» и она менялась между «1» и «2» каждую вторую неделю, как я могу пометить ее для триггера уведомления?

func notification(hour: Int, minute: Int, weekday: Int, text: String){

    let content = UNMutableNotificationContent()
    content.title = "Example"
    content.body = text
    content.sound = UNNotificationSound.default()

    let trigger = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: hour, minute: minute, weekday: weekday), repeats: true)

    let request = UNNotificationRequest(identifier: text, content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

}

override func viewDidLoad() {
    super.viewDidLoad()

    notification(hour: 12, minute: 0, weekday: 2, text: "Test")

}

1 Ответ

0 голосов
/ 02 сентября 2018

Вы не можете сделать это для повторных уведомлений. Единственный способ сделать это - использовать неповторяющиеся уведомления и настроить их заранее в заданное время (в вашем случае по понедельникам) - например, создать цикл for, который настроит одно уведомление в следующие 10 понедельников, - вы должны вручную рассчитать время срабатывания для всех из них в цикле.

Ограничение состоит в том, что вы не можете сделать их инфинитивами - но, вероятно, если пользователь не будет реагировать на эти 10 уведомлений - есть очень небольшой шанс, что вы будете использовать их позже - по крайней мере, из моего опыта.

Лучшим способом сделать это будет также настройка этих уведомлений каждый раз, когда пользователь закрывает приложение - например, если мы откроем приложение в 5-й понедельник, вам следует очистить все уведомления и снова настроить следующий набор из 10 уведомлений.

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