registerForRemoteNotification iOS7 iOS8
2015-03-06 17:03
393 查看
如果你还在代码里用 registerForRemoteNotificationTypes 这个方法来注册推送功能,你的 App 又用 iOS 8 的 SDK 编译了,那么你的 App 在 iOS 8 下将无法注册功能推送(在 iOS 7 下是可以的)。Apple 直接将这个 API 在 iOS 8 下设置成了「无法工作」,而不是简单的标记了 deprecated。
那么在 iOS 8 下用哪个 API 去注册远程推送功能?用新的 API:registerForRemoteNotifications。
但是,这个 API,仅仅会注册一个静默功能的远程推送,尽管 App 之后会收到推送并进行处理,它不会在用户界面上有任何提示。那么如何在 iOS 8 下完成和 iOS 7 下一样的远程推送注册支持?下面的代码可以让推送的支持在 iOS 7 和 iOS 8 下都正常工作,if 里面的是 iOS 8 的,而 else 那里是 iOS 7。
可以看到,iOS 8 把原先一步到位的 RemoteNotification 的注册分成两部分,一部分是注册新引入的那个「UIUserNotificationSettings」,另一部分才是 RemoteNotifications。Apple 为什么要这样设计?
简单的说,Apple 在 iOS 8 将 RemoteNotification 和 LocalNotification 统一了起来。两种 Notifications 将统一由 UIUserNotificationSettings 来管理用户界面相关的东西:标记、声音和提醒。除了统一用户界面的通知外,UIUserNotificationSettings 还引入了 UIUserNotificationCategory,可以让用户方便的直接在 Notification 上进行一些快捷的操作(Action)。这部分我还没玩过,所以又不多讲了。
总之,Apple 为了推进新的技术,不惜直接把老的 API 弄成不工作,实在是让人惊叹…
那么在 iOS 8 下用哪个 API 去注册远程推送功能?用新的 API:registerForRemoteNotifications。
但是,这个 API,仅仅会注册一个静默功能的远程推送,尽管 App 之后会收到推送并进行处理,它不会在用户界面上有任何提示。那么如何在 iOS 8 下完成和 iOS 7 下一样的远程推送注册支持?下面的代码可以让推送的支持在 iOS 7 和 iOS 8 下都正常工作,if 里面的是 iOS 8 的,而 else 那里是 iOS 7。
UIApplication *application = [UIApplication sharedApplication]; if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert) categories:nil]; [application registerUserNotificationSettings:settings]; [application registerForRemoteNotifications]; } else { [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert)]; }
可以看到,iOS 8 把原先一步到位的 RemoteNotification 的注册分成两部分,一部分是注册新引入的那个「UIUserNotificationSettings」,另一部分才是 RemoteNotifications。Apple 为什么要这样设计?
简单的说,Apple 在 iOS 8 将 RemoteNotification 和 LocalNotification 统一了起来。两种 Notifications 将统一由 UIUserNotificationSettings 来管理用户界面相关的东西:标记、声音和提醒。除了统一用户界面的通知外,UIUserNotificationSettings 还引入了 UIUserNotificationCategory,可以让用户方便的直接在 Notification 上进行一些快捷的操作(Action)。这部分我还没玩过,所以又不多讲了。
总之,Apple 为了推进新的技术,不惜直接把老的 API 弄成不工作,实在是让人惊叹…
相关文章推荐
- iOS iOS8中 问题"registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later" 解决方案
- iOS iOS8中 问题"registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later" 解决方案
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- firebase messaging - Register for remote notification
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and late
- iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
- iOS 推送问题 registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- iOS iOS8中 问题"registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later" 解决方式
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
- ios8 sdk 推送兼容代码 registerForRemoteNotifications
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
- IOS错误之 ---- registerForRemoteNotificationTypes: is not supported
- iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- iOS6和iOS7处理push不同之处,解决重复push,-(void) application: didReceiveRemoteNotification: fetchCompletionHandl
- iOS7 Background Remote Notification(后台远程通知——静默push)