我正在使用Swift for iOS8编写我的应用程序。
我想使用UILocalNotification来通知用户一些事情。为此,我在应用程序启动时请求允许:
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
确认框显示要求许可。如果用户允许,那就没问题了。
如果用户未授予权限,如何通过代码(以编程方式)检查是否启用了本地通知?
答案 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)
application.currentUserNotificationSettings()