detect "Allow Notifications" is on/off for iOS8
I am trying to detect the Local notification settings for the App in iOS 8
for UIUserNotificationSettings
, it returns me 7 as I have turned on all Badge, Sound & Alert.
In the setting, I switch off "Allow Notification" , the app still return me 7 for UIUserNotificationSettings (Badge, Sound & Alert on). Is there a way to detect "Allow Notification
" on/off?
- (void)application:(UIApplication *)application
didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
NSLog(@"---notificationSettings.types %d" , notificationSettings.types );
if(notificationSettings.types!=7){
UIAlertView * alert =[[UIAlertView alloc ] initWithTitle:@"Please turn on Notification"
message:@"Go to Settings > Notifications > App.\n Switch on Sound, Badge & Alert"
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles: nil];
[alert show];
}
}
Method enabledRemoteNotificationTypes
is deprecated since iOS8.
To check remote notifications status in iOS8 you can call
[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];
it will return NO if user disable notifications in Settings. Documentation on isRegisteredForRemoteNotifications
Or you can retrieve all current notification settings:
[[UIApplication sharedApplication] currentUserNotificationSettings];
Documentation on currentUserNotificationSettings
Swift 3+
let isRegisteredForLocalNotifications = UIApplication.shared.currentUserNotificationSettings?.types.contains(UIUserNotificationType.alert) ?? false
Swift 2.3
let isRegisteredForLocalNotifications = UIApplication.sharedApplication().currentUserNotificationSettings()?.types.contains(UIUserNotificationType.Alert) ?? false