确定本地通知是不是已被明确拒绝
Posted
技术标签:
【中文标题】确定本地通知是不是已被明确拒绝【英文标题】:Determine if local notifications have been explicitly denied确定本地通知是否已被明确拒绝 【发布时间】:2016-01-28 17:38:51 【问题描述】:有几个问题接近,但我没有找到任何完全正确的问题:
Determine if local notification is allowed Check if Local Notifications allowed Check if Local Notifications are enabled in ios 8这与远程通知无关,我只是使用本地通知。
我想确定本地通知权限的当前状态,以便显示三个界面之一:
通知已启用 通知未启用,这里有一个按钮来启用它们(这将触发标准对话框) 通知已被拒绝(因此对话框无法再次显示),这是 Settings.app 的链接,因此可以在那里启用它们。很容易判断通知是否启用currentUserNotificationSettings()
,但我不知道如何确定“未启用,因为我们没有询问”和“未启用,因为用户说不”。
【问题讨论】:
我相信检测它的唯一方法是自己跟踪它,即如果您询问通知保存一些标志,例如 NSUserDefaults 中的一些布尔值。 【参考方案1】:正如@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
上述实现的唯一警告是,如果用户只允许您需要的某些类型,而不是所有类型。你会在第一个条件下检查它,但我没有添加它,因为我不知道你想要什么样的特定情况。
【讨论】:
以上是关于确定本地通知是不是已被明确拒绝的主要内容,如果未能解决你的问题,请参考以下文章