Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 取消已计划的本地通知_Ios_Swift_Notifications - Fatal编程技术网

Ios 取消已计划的本地通知

Ios 取消已计划的本地通知,ios,swift,notifications,Ios,Swift,Notifications,如果用户已禁用应用程序设置中的通知,我希望避免显示本地计划通知 然而,这似乎是不可能的 我已经考虑过两种可能的解决方案,但我不知道怎么做: 与远程数据通知一样,如果您不手动执行,则不会显示在通知中心中,我们是否有用于本地通知的等效机制? 另一个解决方案是能够监听应用程序通知设置的更改,但我还没有找到任何相关信息。 目前,我的最佳解决方案是每次应用程序返回前台时检查getNotificationSettings。如果状态未授权,则我调用removePendingNotificationReques

如果用户已禁用应用程序设置中的通知,我希望避免显示本地计划通知

然而,这似乎是不可能的

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

与远程数据通知一样,如果您不手动执行,则不会显示在通知中心中,我们是否有用于本地通知的等效机制? 另一个解决方案是能够监听应用程序通知设置的更改,但我还没有找到任何相关信息。 目前,我的最佳解决方案是每次应用程序返回前台时检查getNotificationSettings。如果状态未授权,则我调用removePendingNotificationRequests。 但是,如果用户在触发计划事件之前未打开应用程序,则此解决方案是不够的。

您是否尝试过删除所有相关通知请求


请参阅:

您无法侦听状态更改。唯一的方法是当用户打开应用程序时检查getNotificationSettings

如果用户 已从应用程序设置中禁用通知授权


如果用户已通过设置禁用通知权限。因此不会显示通知。

我的问题不是如何删除pendingNotification,而是何时删除。我想100%确保当用户禁用应用程序设置中的通知时,不会显示我的计划本地通知。这是错误的。即使用户已禁用应用程序设置中的通知,也始终可以触发本地通知。请参阅此处的Apple注释:。它说,在安排本地通知之前,请始终检查应用程序的授权状态。但它们并没有解释如果用户在发出通知之前禁用了通知,如何处理已经安排好的通知。文档警告开发人员在注册新notif之前一定要检查。因为如果处理不当,它可能无法工作,或者崩溃。通过设置禁用权限不会显示任何新通知。您可以在模拟器中进行测试,本地通知可用,您可以每隔1分钟进行一次测试。10 notif然后更改设置中的权限以查看。您可以检查此答案,因为有矩阵解释用例。