从 NotificationContentExtention 关闭 IOS 通知
Posted
技术标签:
【中文标题】从 NotificationContentExtention 关闭 IOS 通知【英文标题】:Dismiss IOS Notification from NotificationContentExtention 【发布时间】:2020-06-25 22:27:26 【问题描述】:是否可以通过 NotificationContentExtension 中的按钮关闭/取消本地通知?
我只能关闭 NotificationContentExtension 本身,而不是整个通知。
if #available(iosApplicationExtension 12.0, *)
self.extensionContext?.dismissNotificationContentExtension()
【问题讨论】:
关闭NotificationContentExtension
和关闭整个通知有什么区别?
关闭通知会将其从锁定屏幕中完全删除。关闭内容扩展会撤消长按效果(显示按钮或自定义 GUI)
【参考方案1】:
您可以使用 UNUserNotificationCenter 和 UNNotificationContentExtension 协议来做到这一点
使用 UNUserNotificationCenter 添加操作
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization (options: [.alert, .sound]) (_, _) in
let clearAction = UNNotificationAction(identifier: "ClearNotif", title: "Clear", options: [])
let category = UNNotificationCategory(identifier: "ClearNotifCategory", actions: [clearAction], intentIdentifiers: [], options: [])
center.setNotificationCategories([category])
在扩展的视图控制器中添加协议 UNNotificationContentExtension 的委托方法
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void)
if response.actionIdentifier == "ClearNotif"
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
completion(.dismiss)
试试吧,让我知道它有效。
【讨论】:
不完全符合我的要求,但它为我指明了方向。谢谢 @YardenST 你在找什么?你不希望它成为一个动作?你想让它成为一个普通的按钮吗? 我希望它是 ContentExtension 中的一个按钮,我只想删除那个通知。通知中心并非所有通知 @YardenST 您可以使用 UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers:以上是关于从 NotificationContentExtention 关闭 IOS 通知的主要内容,如果未能解决你的问题,请参考以下文章