iOS 推送问题 registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
来源:互联网 发布:tumblr类似软件 编辑:程序博客网 时间:2024/05/19 00:38
registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
IOS8 PUSH解决方法
昨天晚上整理PUSH的东西,准备些一个教程,全部弄好之后,发现没有达到预期的效果,本以为是服务器代码的问题(因为本人对PHP代码一点都不懂),所以在网上四处搜索,后来看xcode log才发现,原来是IOS8系统更新了的问题,提示 registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.
使用IOS8 xcode6的同学,在使用推送(push)的时候应该已经出现这个问题了。那么让我们来看看具体的解决方法。
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.
// IOS8 新系统需要使用新的代码咯
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
//这里还是原来的代码
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
原本在IOS7当中 判断PUSH是否打开的方法是:
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (types & UIRemoteNotificationTypeAlert);
如果将这段代码使用在 IOS当中,虽然不会出现crash的现象,但是基本没什么作用。
在IOS8中,我们使用如下的新代码来取代以上的代码
{
UIRemoteNotificationType types;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
}
else
{
types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
}
return (types & UIRemoteNotificationTypeAlert);
}
IOS8 PUSH解决方法
昨天晚上整理PUSH的东西,准备些一个教程,全部弄好之后,发现没有达到预期的效果,本以为是服务器代码的问题(因为本人对PHP代码一点都不懂),所以在网上四处搜索,后来看xcode log才发现,原来是IOS8系统更新了的问题,提示 registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.
使用IOS8 xcode6的同学,在使用推送(push)的时候应该已经出现这个问题了。那么让我们来看看具体的解决方法。
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.
// IOS8 新系统需要使用新的代码咯
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
//这里还是原来的代码
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
原本在IOS7当中 判断PUSH是否打开的方法是:
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (types & UIRemoteNotificationTypeAlert);
如果将这段代码使用在 IOS当中,虽然不会出现crash的现象,但是基本没什么作用。
在IOS8中,我们使用如下的新代码来取代以上的代码
{
UIRemoteNotificationType types;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
}
else
{
types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
}
return (types & UIRemoteNotificationTypeAlert);
}
0 0
- iOS 推送问题 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 later
- 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 later
- 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 late
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
- IOS错误之 ---- registerForRemoteNotificationTypes: is not supported
- dylibs/frameworks are only supported on iOS 8.0 and later
- embedded dylibs/frameworks are only supported on iOS 8.0 and later 错误解决
- embedded dylibs/frameworks are only supported on iOS 8.0 and later
- embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest
- Xcode报错:embedded dylibs/frameworks are only supported on iOS 8.0 and later
- iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
- iOS: Device token and registerForRemoteNotificationTypes, didReceiveRemoteNotification
- Android笔记--对缓存、三级缓存和Android的Dalvik虚拟机和java编译过程的理解
- Arcgis Engine中IVector3D关于旋转的注意事项
- java基础学习总结——流
- 赋值操作符
- 一个简单的递归实现数组组元素的组合
- iOS 推送问题 registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later
- Netty开源库的初步使用
- android存储方式(内部存储、外部存储)
- C语言队列
- jquery datatables 的 配置参数
- RxJava的初学随笔(一)
- Set(HashSet、TreeSet)、泛型
- java自带线程池和队列详细讲解
- fatal: Not a git repository (or any of the parent directories): .git