Случайное повторение локальных уведомлений в 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
(или альтернатива), потому что я не чувствую, что мне нужно это делать, и я не хочу иметь дело со всеми необходимыми дополнительными вещами, но я не могу найти альтернативу.
Обратите внимание, что этот вопрос не является дубликатом: