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

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

但是,这似乎不可能。

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

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

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

【问题讨论】:

    标签: ios swift notifications


    【解决方案1】:

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

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

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

    【讨论】:

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

    【讨论】:

    • 我的问题不是“如何”删除pendingNotification,而是“何时”我想这样做。我希望 100% 确保当用户禁用应用设置中的通知时,我的预定本地通知不会显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多