TL;DR:是否可以在不使用APNS
(或替代推送通知服务)的情况下获得重复的随机本地通知?
我正在构建一个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
(或替代品)并不真正感兴趣,因为我觉得我不需要这样做并且不想处理所需的所有额外东西,但我似乎找不到替代品。
请注意,此问题与以下问题不重复: