Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking Push Notification Registration: isRegisteredForRemoteNotifications Not Updating

Tags:

ios

iphone

The following method keeps returning the same value:

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

Every time this code runs, the results is YES. Even when I go into the "Settings" app and set push notifications to "off" for my app, when the code above runs, it evaluates to YES.

Other details: * I'm running the app on got an iphone that has iOS 8.1.3 * I'm running the app in Xcode 6.1 and I've got the phone physically attached to my machine

Any idea why the value of "isRegisteredForRemoteNotifications" doesn't change?

like image 229
Ben Downey Avatar asked Feb 10 '15 20:02

Ben Downey


1 Answers

Because iOS 8 does register the device and provides a Token even if the user opts out from pushes.

In that case pushes are not presented to the user when the push is sent, but if your app is running it gets the payload so you can update it when the app is running...

To check if push notifications are enabled in iOS 8 you should check for the enabled user notification types:

- (BOOL)pushNotificationsEnabled {
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
        UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
        return (types & UIUserNotificationTypeAlert);
    }
    else {
        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        return (types & UIRemoteNotificationTypeAlert);
    }
}
like image 114
Lefteris Avatar answered Oct 14 '22 16:10

Lefteris