iosswiftxcodepush-notification

Swift ios check if remote push notifications are enabled in ios9 and ios10


How can I check if the user has enabled remote notifications on ios 9 or ios 10?

If the user has not allowed or clicked No I want to toggle a message asking if they want to enable notifications.


Solution

  • Updated answer after iOS 10 is using UNUserNotificationCenter .

    First you need to import UserNotifications then

    let current = UNUserNotificationCenter.current()
    current.getNotificationSettings(completionHandler: { permission in
        switch permission.authorizationStatus  {
        case .authorized:
            print("User granted permission for notification")
        case .denied:
            print("User denied notification permission")
        case .notDetermined:
            print("Notification permission haven't been asked yet")
        case .provisional:
            // @available(iOS 12.0, *)
            print("The application is authorized to post non-interruptive user notifications.")
        case .ephemeral:
            // @available(iOS 14.0, *)
            print("The application is temporarily authorized to post notifications. Only available to app clips.")
        @unknown default:
            print("Unknow Status")
        }
    })
    

    this code will work till iOS 9, for iOS 10 use the above code snippet.

    let isRegisteredForRemoteNotifications = UIApplication.shared.isRegisteredForRemoteNotifications
    if isRegisteredForRemoteNotifications {
         // User is registered for notification
    } else {
         // Show alert user is not registered for notification
    }