我正在设置多个本地通知,并且我已经设置了通知的操作数量。比如打瞌睡,表演,关门。
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
let id = response.notification.request.identifier
if response.actionIdentifier == "SnoozeId" {
completion(UNNotificationContentExtensionResponseOption.dismiss)
}}在didReceive上-如果操作是snooze -执行snooze,然后我关闭通知虚构。由于我驳回了所有其他通知,通知中心已经不再发送了。如果我有两个通知A和B。如果我长按并在A上打瞌睡。A和B都离开了通知中心。它应该只驳回A。
发布于 2019-07-08 02:55:36
以下是使用我的应用程序进行测试的结果。
为了更好地回答您的问题,请提供更多信息,例如-通知的json及其userInfo (可能您正在对通知进行分组并立即将其全部清除?)以及您调用的哪个函数会导致调用didReceive(...)。
如果你调用
self.extensionContext?.dismissNotificationContentExtension()然后,它关闭内容扩展,但不会将其清除。
如果你打电话给:
self.extensionContext?.performNotificationDefaultAction()然后,它完成该操作并取消该单个通知(而不是其他通知)。但是,这会打开应用程序,而您可能不想这样做。
我的代理设置如下:
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
// Dismiss action stuff.
completion(.dismiss)
// To not dismiss
// completion(.doNotDismiss)
case UNNotificationDefaultActionIdentifier:
// Default action stuff.
// Let's say the user executed default action, we want to dismiss and forward the action.
completion(.dismissAndForwardAction)
break
default:
break
}
}发布于 2018-02-15 19:51:51
Tia可能会帮助你it was answered a while ago,只要它在objective C中得到了答案。我想你会想要查看的答案是将通知存储在一个可变的数组中,并在必要时从数组中删除通知。
https://stackoverflow.com/questions/48800313
复制相似问题