iOS:如何访问NFC标签生成的含DeepLink系统通知并实现删除?
iOS NFC系统通知的删除权限与替代方案
核心原因说明
iOS读取NFC标签时生成的系统通知,不属于UNUserNotificationCenter的管理范围——这个API仅负责处理当前APP通过UserNotifications框架发送的本地/远程通知。这就是你调用UNUserNotificationCenter.current().getDeliveredNotifications()返回空数组的根本原因。
针对问题的解答
读取标签时自动删除此前同类系统通知
没有直接可行的方案。这类通知是iOS系统(CoreNFC相关进程)生成的,APP没有权限干预或删除系统级别的通知生命周期,iOS也未提供相关开放API。点击通知后从APP内删除该通知
同样无法实现。系统生成的NFC通知记录不归当前APP管理,无法通过UserNotifications框架的API删除通知中心内的对应条目。
替代实现方案
如果需要实现“读取标签时替换旧通知”或“APP内管理通知”的效果,建议绕过系统自动通知,改为自定义本地通知:
- 在CoreNFC的读取回调方法(如
readerSession(_:didDetect:))中,先调用UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers:)删除之前的同类自定义通知(给同类通知设置统一的标识符)。 - 再创建并发送新的本地通知,通知内容关联DeepLink跳转逻辑。
- 这种方式下,所有通知都由APP自主管理,既可以实现读取时自动替换旧通知,也能在用户点击通知进入APP后,通过
UNUserNotificationCenter的API删除对应通知。
内容的提问来源于stack exchange,提问作者JamesDerrick248
相关产品推荐
相关产品推荐

