registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later

升级了xcode到6后,xcode5(ios7)中的工程在build后,调试output提示:registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later

iOS 8 has changed notification registration in a non-backwards compatible way. While you need to support iOS 7 and 8 (and while apps built with the 8 SDK aren’t accepted), you can check for the selectors you need and conditionally call them correctly for the running version.

Here’s a category on UIApplication that will hide this logic behind a clean interface for you that will work in both Xcode 5 and Xcode 6.

注册方式:

  1. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {  
  2.   
  3.         [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings  
  4.   
  5.                                                                              settingsForTypes:(UIUserNotificationTypeSound |  
  6.   
  7.                                                                                                UIUserNotificationTypeAlert |  
  8.   
  9.                                                                                                UIUserNotificationTypeBadge)  
  10.   
  11.                                                                              categories:nil]];  
  12.   
  13.         [[UIApplication sharedApplication] registerForRemoteNotifications];  
  14.   
  15.           
  16.   
  17.     }  
  18.     else {  
  19. //这里还是原来的代码  
  20.         [[UIApplication sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|  
  21.   
  22.                                                                             UIRemoteNotificationTypeBadge|  
  23.   
  24.                                                                             UIRemoteNotificationTypeSound];   
  25.   
  26.     }  

原本在IOS7当中 判断PUSH是否打开的方法是:

  1. UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];  
  2. return (types & UIRemoteNotificationTypeAlert);  

如果将这段代码使用在 IOS当中,不会出现crash的现象,但是基本没什么作用。
在IOS8中,使用如下的新代码来取代以上的代码

  1. UIRemoteNotificationType types;  
  2. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)  
  3.    {  
  4.  types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;  
  5.     }  
  6. else  
  7.    {  
  8.  types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];  
  9.     }  
  10. return (types & UIRemoteNotificationTypeAlert);  

未经允许不得转载:ganlei的个人博客 » registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later

赞 (0)
分享到:更多 ()