升级了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.
- if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
- [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
- settingsForTypes:(UIUserNotificationTypeSound |
- UIUserNotificationTypeAlert |
- UIUserNotificationTypeBadge)
- categories:nil]];
- [[UIApplication sharedApplication] registerForRemoteNotifications];
- }
- else {
- //这里还是原来的代码
- [[UIApplication sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|
- UIRemoteNotificationTypeBadge|
- UIRemoteNotificationTypeSound];
- }
原本在IOS7当中 判断PUSH是否打开的方法是:
- UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (types & UIRemoteNotificationTypeAlert);
如果将这段代码使用在 IOS当中,不会出现crash的现象,但是基本没什么作用。
在IOS8中,使用如下的新代码来取代以上的代码
UIRemoteNotificationType types;