取消已安排的本地通知

Posted

技术标签:

【中文标题】取消已安排的本地通知【英文标题】:Cancel a local notification which has been scheduled 【发布时间】:2020-04-30 11:36:17 【问题描述】:

如果用户从应用设置中禁用通知,我想避免显示本地预定通知。

但是,这似乎不可能。

我已经考虑了两种可能的解决方案,但我不知道该怎么做:

就像一个远程数据通知,如果你不手动执行,它不会显示到通知中心,我们是否有一个等效的本地通知机制? 另一种解决方案是能够监听“应用通知设置更改”,但我没有找到任何相关信息。

目前,我最好的解决方案是每次应用返回前台时检查getNotificationSettings。如果状态不是authorized,那么我调用removePendingNotificationRequests。 但是,如果用户在触发预定事件之前没有打开应用程序,则此解决方法是不够的。

【问题讨论】:

【参考方案1】:

你不能监听状态变化。唯一的方法是当用户打开应用程序检查getNotificationSettings

我想避免显示本地预定通知,如果用户 已从应用设置中禁用通知授权。

如果用户通过设置禁用了通知权限。所以不会有通知显示。

【讨论】:

错了。即使用户已从应用设置中禁用通知,也始终可以触发本地通知。请在此处查看有关此内容的 Apple 说明:developer.apple.com/documentation/usernotifications/…。它说“在安排本地通知之前,请始终检查您的应用的授权状态。”。但他们没有解释如何处理已经安排好的通知,如果用户在触发此通知之前禁用通知。 文档警告开发人员“在注册新通知之前总是检查。因为它可能不起作用,或者如果处理不当会崩溃”。通过“设置”禁用权限不会显示任何新通知。您可以在模拟器中测试,本地通知可用,您可以间隔 1 分钟。 10 通知然后更改设置中的权限以查看。 你可以查看这个答案,矩阵解释用例。 ***.com/questions/30644343/…【参考方案2】:

你试过removeAllPendingNotificationRequests()吗?

见:https://developer.apple.com/documentation/usernotifications/unusernotificationcenter/1649509-removeallpendingnotificationrequ

【讨论】:

我的问题不是“如何”删除pendingNotification,而是“何时”我想这样做。我希望 100% 确保当用户禁用应用设置中的通知时,我的预定本地通知不会显示。

以上是关于取消已安排的本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在一段时间后取消安排以前安排的本地通知?

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

已安排本地通知,但未在挂起和未运行模式下传递

创建将于明天开始的每日本地通知

重新安排用户通知(本地)?

安排本地通知的数量