iOS8 - UILocalNotification,稍后从代码检查权限

时间:2014-09-20 06:25:47

标签: swift ios8 uilocalnotification

我正在使用Swift for iOS8编写我的应用程序。

我想使用UILocalNotification来通知用户一些事情。为此,我在应用程序启动时请求允许:

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))

确认框显示要求许可。如果用户允许,那就没问题了。

如果用户未授予权限,如何通过代码(以编程方式)检查是否启用了本地通知?

4 个答案:

答案 0 :(得分:8)

..这就是你在Swift中检查它的方法:

let currentSettings = UIApplication.sharedApplication().currentUserNotificationSettings()
let required:UIUserNotificationType = UIUserNotificationType.Sound; // Add other permissions as required
let notification = UILocalNotification()

    if (currentSettings.types & required) != nil {
        println("sound will come and also vibration")
        notification.soundName = UILocalNotificationDefaultSoundName
    }else{
        println("no sound no vibration")
    }

很高兴知道:
它会自动振动,无论声音是通过你的iPhone按钮打开/关闭 - 如果用户在你的应用程序的设置中设置声音就不会发生任何事情。
所以你不必另外增加振动。

答案 1 :(得分:4)

对于记录,这是检查Objective-C中的权限的方法:

UIUserNotificationSettings *current = [[UIApplication sharedApplication] currentUserNotificationSettings];
UIUserNotificationSettings *required = UIUserNotificationTypeSound | UIUserNotificationTypeAlert; // Add other permissions as required
if(current.types & required) {
    NSLog(@"Permission present: 0x%ulX", settings.types);
} else {
    NSLog(@"Permission not present: 0x%ulX", settings.types);
}

答案 2 :(得分:2)

documentation回答的问题如下:

  

在调用此方法后,应用程序调用应用程序:didRegisterUserNotificationSettings:其app委托方法以报告结果。您可以使用该方法确定您的请求是被用户授予还是拒绝。

答案 3 :(得分:0)

来自documentation

application.currentUserNotificationSettings()