You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 11.2.2调用移除通知API后通知仍留存于通知中心的问题求助

解决iOS 11.2.2本地通知移除失效的问题

看起来你碰到的是iOS 11.2.2版本特有的通知中心bug,毕竟在iOS 11.1上功能完全正常,升级后才出现异常,而且手动删除一条就触发同应用通知全清的现象也很典型。下面给你几个可行的排查和解决方向:

  • 尝试全局移除代替指定标识符
    先暂时替换掉按标识符移除的代码,改用全局移除方法测试:

    UNUserNotificationCenter.current().removeAllDeliveredNotifications()
    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    

    如果这个操作能正常清空通知中心,说明问题出在标识符匹配的系统逻辑上,而非你的代码逻辑错误。

  • 严格校验通知标识符的一致性
    虽然你提到每条通知都有不同的标识符,但还是要仔细核对:添加通知请求时设置的identifier字符串,和移除时传入的是否完全一致(包括大小写、特殊字符、空格等)。建议在添加和移除时都打印日志,对比两个场景下的标识符是否完全匹配——iOS的通知标识符是大小写敏感的,哪怕一个字符差异都可能导致移除失败。

  • 给移除操作加短暂延迟
    有时候系统通知中心的状态更新存在延迟,你可以尝试把移除代码放在延迟队列里执行:

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: yourIdentifiersArray)
        UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: yourIdentifiersArray)
    }
    

    给系统一点时间同步通知状态后再执行移除,可能会解决这个异常。

  • 重置通知权限并重启设备
    这是修复系统通知异常的通用步骤:

    1. 进入「设置」->「通知」-> 找到你的应用,关闭所有通知权限;
    2. 重启设备;
    3. 重新打开应用的通知权限,再测试移除功能。
  • 向苹果提交Bug报告
    由于问题仅出现在iOS 11.2.2,且iOS 11.1正常,这大概率是系统层面的bug。你可以通过苹果的Feedback Assistant提交问题,附上你的代码片段、设备型号、系统版本,以及复现步骤,帮助苹果定位修复。

另外,你提到手动删除一条通知后同应用其余通知也被移除,这说明系统内部其实把这些通知标记为了同一组,哪怕你设置了不同的标识符——这也进一步佐证了是iOS 11.2.2的通知中心逻辑出现了问题。

内容的提问来源于stack exchange,提问作者Saleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:26