确定是否已明确拒绝本地通知

时间:2016-01-28 17:38:52

标签: ios swift uilocalnotification

有几个问题关闭,但我还没有发现任何完全正确的问题:

这与远程通知无关,我只使用本地通知。

我想确定本地通知权限的当前状态,以便我可以显示三个接口之一:

  • 启用通知
  • 未启用通知,此处是启用它们的按钮(会触发标准对话框)
  • 通知已被拒绝(因此无法再次显示对话框),这里有一个指向Settings.app的链接,因此可以在那里启用它们。

很容易弄清楚是否通过currentUserNotificationSettings()启用了通知,但我无法弄清楚如何确定"未启用,因为我们还没有问过& #34;并且"未启用,因为用户说不#34;。

1 个答案:

答案 0 :(得分:0)

正如@shpasta所述,您必须使用NSUserDefaults跟踪此情况。使用NSUserDefaults非常简单。

致电registerUserNotificationSettings:后,请添加以下代码:

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "didRegister")

然后,无论您想要检查本地通知的当前状态,请使用以下命令:

if UIApplication.sharedApplication().currentUserNotificationSettings().types == TYPES_YOU_NEED {
    // Code for enabled notifications
} else if NSUserDefaults.standardUserDefaults().boolForKey("didRegister") {
    // Code for denied notifications
} else if !(NSUserDefaults.standardUserDefaults().boolForKey("didRegister")) {
    // Code for non-enabled notifications, can display dialog
}

上述实现的唯一警告是,如果用户只允许您需要的某些类型,而不是所有类型。你会在第一个条件下检查,但我没有加入,因为我不知道你对那种特殊情况你想要什么。

相关问题