Swift 3 - настраиваемое повторение уведомлений пользователя, например приложение iOS Reminders

Я хочу сделать приложение, похожее на приложение iOS Reminders. Моя проблема - это пользовательская повторяющаяся часть. Мы можем установить собственные повторы, например «Каждые 2 месяца в третий понедельник» (скриншот ниже), но я не знаю, как реализовать такие повторы с уведомлением пользователя.

Что мне делать?

скриншот


person Sanhood    schedule 02.11.2017    source источник
comment
Это может помочь вам developer.apple.com/documentation/usernotifications   -  person swetansh kumar    schedule 02.11.2017
comment
Это сложно реализовать, я не рекомендую использовать. Однако вы можете установить уведомление на каждый день, каждую неделю, каждый год, каждые будние дни. это просто работает   -  person Mannopson    schedule 02.11.2017


Ответы (1)


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

Если вы хотите, чтобы уведомление отображалось на основе определенной даты/интервала — как вы упомянули «Каждые 2 месяца в третий понедельник» — вам следует работать с UNCalendarNotificationTrigger:

Дата и время доставки локального уведомления.

Пример:

import UserNotifications

// first, you declare the content of the notification:
let content = UNMutableNotificationContent()
content.title = "Notification Title"
content.subtitle = "Notification Subtitle"
content.body = "Notification Body"

// now, you should declare the UNCalendarNotificationTrigger instance,
// but before that, you'd need to describe what's the date matching for firing it:

// for instance, this means it should get fired every Monday, at 10:30:
var date = DateComponents()
date.weekday = 2
date.hour = 10
date.minute = 30

// declaring the trigger
let calendarTrigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

// creating a request and add it to the notification center
let request = UNNotificationRequest(identifier: "notification-identifier", content: content, trigger: calendarTrigger)
UNUserNotificationCenter.current().add(request)
person Ahmad F    schedule 02.11.2017
comment
Эй, Ахмад! Мы довольно застряли здесь на вопросе. Мы пытаемся сделать повторяющееся уведомление с другим телом каждый раз, когда оно срабатывает. Можем ли мы обновить тело уведомления, даже если пользователь не открывает приложение? - person Roi Mulia; 20.03.2018
comment
@RoiMulia, нет сомнений, что ты сможешь это сделать. Это зависит от того, как вы создадите триггеры. Обратите внимание, что UNCalendarNotificationTrigger содержит repeats: true в своем инициализаторе, что означает, что вы можете запустить его только один раз, поэтому добавьте много триггеров без повторения... - person Ahmad F; 20.03.2018
comment
Можем ли мы обновить существующий или нам нужно создать новый? - person Roi Mulia; 20.03.2018