演示前取消通知

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 的两种方法希望对您的情况有用。

以上是关于演示前取消通知的主要内容,如果未能解决你的问题,请参考以下文章

取消本地通知后如何停止本地通知声音

IOS 取消本地通知

如何取消警报管理器的每日通知?

取消通知

如何取消或停止来自客户端的推送通知?

取消注册推送通知