取消已安排的本地通知
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% 确保当用户禁用应用设置中的通知时,我的预定本地通知不会显示。以上是关于取消已安排的本地通知的主要内容,如果未能解决你的问题,请参考以下文章