我正在构建一个提醒应用程序,它根据用户的自定义设置发送重复的本地通知 . 例如,我可能每隔一天晚上8点发送通知 . 每次我发送其中一个通知时,我都想替换可能已在用户通知中心显示的任何先前通知 .

iOS中新的UserNotifications框架让我接近能够做到这一点 . 据我所知,通知可以通过两种方式替换:

  • UNCalendarNotificationTriggerrepeats: true 一起使用 . 重复触发器替换过去的触发器 .

  • 使用相同的 identifier 创建新的 UNNotificationRequest . 每当使用相同的 identifier 发送请求时,它将替换所有其他实例 .

这些解决方案都不适合我:

  • 我无法使用重复通知,因为 UNCalendarNotificationTrigger 使用 DateComponents 作为重复计划,仅仅 DateComponents 只能用 DateComponents 来描述 .

  • 因为我需要一次安排几个通知,所以我必须指定唯一的 identifier ,因此,它们在显示时不会相互替换 .

我希望服务扩展会在这里拯救我 . 如果我在收到通知时可以执行代码,我可以在触发新通知时以编程方式删除旧通知 . 不幸的是,似乎服务扩展仅适用于远程通知 . 即使我可以使用远程通知(这本身就是一整套蠕虫),这种解决方案也会对服务扩展允许的内容产生规则 .

有没有人对如何解决这个问题有任何想法,或者我注定要向用户的通知中心发送垃圾邮件?