检查通知设置iOS8

时间:2014-10-04 23:04:58

标签: swift ios8

我正在尝试检查以确保用户已获得授权的警报和徽章。一旦得到它,我在弄清楚如何处理当前设置时遇到了问题。

let settings = UIApplication.sharedApplication().currentUserNotificationSettings()
println(settings)
// Prints - <UIUserNotificationSettings: 0x7fd0a268bca0; types: (UIUserNotificationTypeAlert UIUserNotificationTypeBadge UIUserNotificationTypeSound);>

if settings.types == UIUserNotificationType.Alert // NOPE - this is the line that needs an update
{
    println("Yes, they have authorized Alert")
}
else
{
    println("No, they have not authorized Alert.  Explain to them how to set it.")
}

1 个答案:

答案 0 :(得分:7)

您正在检查==,如果所有设置选项都包含在您要比较的值中,则只会返回true。请记住,这是一个位图枚举,您可以使用按位或|向相同的值添加其他选项。您可以使用按位&检查特定选项是否属于值的一部分。

if settings.types & UIUserNotificationType.Alert != nil {
    // .Alert is one of the valid options
}

在Swift 2.0+中,您需要使用新的表示法。您的设置集合是[UIUserNotificationType]类型的数组,因此您可以像这样检查:

if settings.types.contains(.Alert) {
   // .Alert is one of the valid options
}