Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 8 enabled device not receiving PUSH notifications after code update

I recently upgraded one of my test iphones to iOS 8 and then upgraded the PUSH registration code as below (using xCode 6)

-(BOOL)hasNotificationsEnabled {      NSString *iOSversion = [[UIDevice currentDevice] systemVersion];     NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject];     float versionVal = [prefix floatValue];       if (versionVal >= 8)     {          NSLog(@"%@", [[UIApplication sharedApplication]  currentUserNotificationSettings]);         //The output of this log shows that the app is registered for PUSH so should receive them          if ([[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone) {              return YES;          }      }     else     {         UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];         if (types != UIRemoteNotificationTypeNone){             return YES;         }      }      return NO; }  -(void)registerForPUSHNotifications {      NSString *iOSversion = [[UIDevice currentDevice] systemVersion];     NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject];     float versionVal = [prefix floatValue];       if (versionVal >= 8)     {               //for iOS8         UIUserNotificationSettings *settings =         [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert |          UIUserNotificationTypeBadge |          UIUserNotificationTypeSound categories:nil];         [[UIApplication sharedApplication] registerUserNotificationSettings:settings];         [[UIApplication sharedApplication] registerForRemoteNotifications];       }     else     {              [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];       } } 

Despite this upgrade and the fact that [[UIApplication sharedApplication] currentUserNotificationSettings] shows PUSH is enabled for the device, I am not receiving PUSH notifications.

I am using Parse and doing everything by the book as far as they are concerned ( https://parse.com/tutorials/ios-push-notifications) .

Is anyone experiencing the same issue? Is there something else that I may be missing ?

like image 917
Zigglzworth Avatar asked Sep 18 '14 09:09

Zigglzworth


People also ask

Why am I not getting notifications after iOS update?

You can fix an iPhone that's not getting notifications by restarting it or making sure notifications are turned on. You should also make sure your iPhone is connected to the internet so apps can receive notifications. If all else fails, you should try resetting the iPhone — just make sure to back it up first.

How do I get my iPhone notifications back after update?

Show recent notifications on the Lock Screen You can allow access to Notification Center on the Lock Screen. Go to Settings > Face ID & Passcode (on an iPhone with Face ID) or Touch ID & Passcode (on other iPhone models). Enter your passcode. Scroll down and turn on Notification Center (below Allow Access When Locked).


1 Answers

The way to register for push notifications has been changed in iOS 8: Below is the code for all versions till iOS 9:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {     [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];  } else {     [[UIApplication sharedApplication] registerForRemoteNotificationTypes:      (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; } 

In case you want to check whether push notifications are enabled or not use below code:

- (BOOL) pushNotificationOnOrOff {     if ([UIApplication instancesRespondToSelector:@selector(isRegisteredForRemoteNotifications)]) {         return ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]);     } else {         UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];         return (types & UIRemoteNotificationTypeAlert);     } }  #ifdef __IPHONE_8_0 - (void)application:(UIApplication *)application   didRegisterUserNotificationSettings:   (UIUserNotificationSettings *)notificationSettings {     //register to receive notifications     [application registerForRemoteNotifications]; }  - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString   *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler {     //handle the actions     if ([identifier isEqualToString:@"declineAction"]){     }     else if ([identifier isEqualToString:@"answerAction"]){     } } #endif 

Above code will run on Xcode 6+ only...

like image 107
Pankaj Wadhwa Avatar answered Oct 15 '22 11:10

Pankaj Wadhwa