detect "Allow Notifications" is on/off for iOS8

JosephT picture JosephT · Aug 4, 2014 · Viewed 33.3k times · Source

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];
    }
}

Answer

Ponf picture Ponf · Aug 8, 2014

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