演示前取消通知
Posted
技术标签:
【中文标题】演示前取消通知【英文标题】:Cancel notification before presentation 【发布时间】:2018-01-04 12:57:23 【问题描述】:是否可以在提交本地通知之前进行一个简短的评估过程?
然后根据评估结果,我会取消/删除可能不必要的通知。
【问题讨论】:
您的通知是基于时间的吗? UserNotifications cancel, swift3的可能重复 @PrashantTukadiya 我不这么认为,因为该答案说明了如何删除已注册的待处理通知。这个问题更多的是关于何时。 @Abdul91 都是关于从通知队列中删除PendingNotificationRequests。所以它是相关的。如果您已安排通知,则它在队列中。如果你不希望它删除它。没有什么时候 Delete a particular local notification的可能重复 【参考方案1】:是的。请注意提及:
是否可以在在之前进行一个简短的评估过程 正在显示本地通知?
表示通知状态为Pending。
所以你应该做的是调用removePendingNotificationRequests(withIdentifiers:) 并将通知标识符传递给它,你希望它/它们被删除。
你可以这样实现它:
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["notificationID"])
这应该可以完成工作。
请注意,它将identifiers
作为一个字符串数组,即使您只需要删除一个通知,您也需要传递一个包含一个字符串的数组。
显然,“notificationID”是您在注册时使用的通知标识符(创建UNNotificationRequest
时):
// ...
let request = UNNotificationRequest(identifier: "notificationID", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
【讨论】:
你什么时候调用 removePendingNotificationRequests ? 谢谢。这就说得通了。但我想这需要一个后台进程到removePendingNotificationRequests
而应用程序不处于活动状态?
@Abdul91 基于 OP 请求,它应该取决于“短评估过程”验证...
@Bernd 您也许可以实现它,检查UNUserNotificationCenterDelegate 的两种方法希望对您的情况有用。以上是关于演示前取消通知的主要内容,如果未能解决你的问题,请参考以下文章