How to update code using enabledRemoteNotification

2020-02-09 03:20发布

问题:

this is the code i used for the RemoteNotificationType:

NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

The error i got was this:

2014-09-29 15:46:47.416 Dummy[258:21766] enabledRemoteNotificationTypes is not supported in iOS 8.0 and later.

Would be a great help if someone could give me the solution.

回答1:

You can also use this code:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {

    UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];

    if (types == UIUserNotificationTypeNone) {
        // Do something
    }

} else {

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone) {
        // Do something
    }
}

Or this one if you only want to check the user is registered for remote notifications:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {

    BOOL isRegisteredForRemoteNotifications = [[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

    if (isRegisteredForRemoteNotifications) { 
        // Do something
    }

} else {

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone) {
        // Do something
    }
}


回答2:

Use with this condition to give support in both iOS 7 and prior iOS 8

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

NSUInteger rntypes;
  if (!SYSTEM_VERSION_LESS_THAN(@"8.0")) {
   rntypes = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
}else{
   rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
}


回答3:

Please use following methods -

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications]

or

[[UIApplication sharedApplication] currentUserNotificationSettings]

to retrieve user-enabled remote notification and user notification settings in iOS 8.