我正在构建一个提醒应用程序,它会根据用户的自定义设置发送重复的本地通知。例如,我可以每隔一天晚上 8 点发送一条通知。每次我发送这些通知之一时,我都想替换可能已经显示在用户通知中心的任何以前的通知。
iOS 中新的 UserNotifications 框架让我接近能够做到这一点。据我所知,通知可以通过两种方式替换:
UNCalendarNotificationTrigger
与 一起使用repeats: true
。重复的触发器替换过去的触发器。UNNotificationRequest
用同样的方式新建一个identifier
。每当使用相同的 发送请求时identifier
,它都会替换所有其他实例。
这些解决方案都不适合我:
- 我不能使用重复通知,因为
UNCalendarNotificationTrigger
使用DateComponents
的重复计划不够精细。我上面的“每隔一天晚上 8 点”的例子不能用DateComponents
. - 因为我需要同时安排多个通知,所以我必须指定唯一
identifier
的 s,因此,它们在显示时不会相互替换。
我希望服务扩展能救我到这里。如果我可以在收到通知时执行代码,我可以在触发新通知时以编程方式删除旧通知。不幸的是,服务扩展似乎只适用于远程通知。即使我可以使用远程通知(它本身就是一整罐蠕虫),这种解决方案也有点违反了允许服务扩展的规则。
有没有人对如何解决这个问题有任何想法,或者我注定要向用户的通知中心发送垃圾邮件?