ioscocoa-touchusernotifications

Check whether user notifications are enabled after UILocalNotification deprecation


In my app, I want to be able to check if the user has notifications enabled or not. In iOS 10, I did this using a check in the delegate.

This check is now deprecated and I want to update it, but I can't figure out what to use in iOS 11.

The deprecation warning is as follows:

currentUserNotificationSettings' was deprecated in iOS 10.0: Use UserNotifications Framework's -[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] and -[UNUserNotificationCenter getNotificationCategoriesWithCompletionHandler:]

I've tried to update the code with the help of this warning but I can't figure it out.

If anyone can suggest anyway to get a check like this working it would help a lot. The code I have been using for iOS 10 is below, thanks.

let notificationType = UIApplication.shared.currentUserNotificationSettings!.types
if notificationType == [] {
    print("Notifications are NOT enabled")
} else {
    print("Notifications are enabled")
}

Solution

  • Step 1 : import UserNotifications

    Step 2 :

    UNUserNotificationCenter.current().getNotificationSettings { (settings) in
      if settings.authorizationStatus == .authorized {
        // Notifications are allowed
      }
      else {
        // Either denied or notDetermined
      }
    }
    

    Inspect the settings object for more informations.