Случайное повторение локальных уведомлений в Swift

TL;DR: возможно ли иметь повторяющиеся случайные локальные уведомления без использования APNS (или альтернативный сервис push-уведомлений)?

Я строю Core Data приложение, которое включает в себя кучу объектов. (Мы будем называть их виджетами.) Каждый день в определенное время, скажем, в полдень, я хочу отправить уведомление, чтобы проверить один из этих виджетов.

В didFinishLaunchingWithOptions Я проверяю, чтобы убедиться, что уведомления включены, и устанавливаю делегата и т. Д. И вызываю функцию для создания локального уведомления. Все это работает отлично.

    var date = DateComponents()
    date.hour = 12
    date.minute = 00
    let content = UNMutableNotificationContent()
    content.title = "You should see this widget!"
    content.userInfo = ["widgetID": widget.id]
    content.body = "Today's Widget:\n\(widget.title!)"
    content.sound = UNNotificationSound.default()
    let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
    let request = UNNotificationRequest(identifier: notificationIdentifer, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request, withCompletionHandler: { (error : Error?) in if let theError = error { print(theError.localizedDescription)}}

И обработчик делегата тоже работает правильно:

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) { ... a bunch of stuff to happen ... }

Как и сейчас, в этой функции я могу "сбросить" UNMutableNotificationContent к новому случайному виджету, ЕСЛИ пользователь взаимодействует с уведомлением любым явным образом. Проблема в том, что если пользователь вообще не взаимодействует с уведомлением - см. Раздел "Обработка стандартных системных действий" в документации Apple по планированию и обработке локальных уведомлений - у меня нет возможности "сбросить" уведомление, поэтому завтра они просто снова предложат один и тот же виджет, и это раздражает.

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

Обратите внимание, что этот вопрос не является дубликатом:

0 ответов