ios ios8注册推送送 为什么 uiremotenotificationtypenone

1037人阅读
不久之后iPhone 6/6 plus就会在国内如雨后春笋般遍地开花了。iOS 8早已现行一步,不过有的开发者也注意到了,报错提示为:
registerForRemoteNotificationTypes:&is&not&supported&in&iOS&8.0&and&later.
之后国外有开发者在使用了新的解决方案注册成功后发现在iPhone 6上仍然不能运行。鉴于iPhone 6/6 Plus将在国内开售,我们大可未雨绸缪一下。
iOS 8因为改变了推送消息的注册方式,所以在有推送需求的应用开发时,需要。然后可以试试在appDelegate.m文件的didFinishLaunchingWithOptions方法中加入下面一段代码以避免在iPhone
6/6 Plus上出现问题:
#ifdef&__IPHONE_8_0&//这里主要是针对iOS&8.0,相应的8.1,8.2等版本各程序员可自行发挥,如果苹果以后推出更高版本还不会使用这个注册方式就不得而知了……
if&([[UIApplication&sharedApplication]&respondsToSelector:@selector(registerUserNotificationSettings:)])&{
&&&&UIUserNotificationSettings&*settings&=&[UIUserNotificationSettings&settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert&categories:nil];
&&&&[[UIApplication&sharedApplication]&registerUserNotificationSettings:settings];
&&&&UIRemoteNotificationType&myTypes&=&UIRemoteNotificationTypeBadge&|&UIRemoteNotificationTypeAlert&|&UIRemoteNotificationTypeS
&&&&[[UIApplication&sharedApplication]&registerForRemoteNotificationTypes:myTypes];
UIRemoteNotificationType&myTypes&=&UIRemoteNotificationTypeBadge&|&UIRemoteNotificationTypeAlert&|&UIRemoteNotificationTypeS
[[UIApplication&sharedApplication]&registerForRemoteNotificationTypes:myTypes];
然后在appDelegate.m中加入此方法:
#ifdef&__IPHONE_8_0
-&(void)application:(UIApplication&*)application&didRegisterUserNotificationSettings:(UIUserNotificationSettings&*)notificationSettings
&&&&[application&registerForRemoteNotifications];
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:406211次
积分:4812
积分:4812
排名:第6210名
原创:23篇
转载:317篇
评论:11条
(1)(1)(1)(1)(1)(5)(3)(1)(2)(2)(2)(3)(11)(4)(2)(9)(7)(23)(25)(25)(4)(5)(4)(13)(16)(10)(19)(6)(18)(57)(17)(18)(2)(3)(23)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'> 博客详情
if([[[UIDevice&currentDevice]systemVersion]floatValue]&&=8.0)
&&&&&&&&[[UIApplication&sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&settingsForTypes:(UIUserNotificationTypeSound|UIUserNotificationTypeAlert|UIUserNotificationTypeBadge)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&categories:nil]];
&&&&&&&&[[UIApplication&sharedApplication]registerForRemoteNotifications];
&&&&}else{
&&&&&&&&//这里还是原来的代码
&&&&&&&&//注册启用push
&&&&&&&&[[UIApplication&sharedApplication]registerForRemoteNotificationTypes:
&&&&&&&&&(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge)];
注册APNS推送遇到如下问题:registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.的解决方案。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我再开发app 使用到了xcode6,然后调用指南中的 - (BOOL)application:
(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Register for push notifications
[application registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];
编译时出错,提示ios8 需要registerUserNotificationSettings 该如何处理?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
if ([application respondForSelector:@selector(registerUserNotificationSettings:)])
[application registerUserNotificationSettings:...];
[application registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:& & 苹果推送通知服务(Apple Push Notification Service) 简称APNS. 是iOS应用中十分常见的一种交互方式.&
& & APNS依托一个或几个系统常驻进程运作, &接管所有应用的消息推送, 所以可看作是独立于应用之外, 而且是设备和苹果服务器之间的通讯, 而非应用的提供商服务器.&
& & 这和 Android不同, Android更像是传统桌面电脑系统的做法. 每个需要后台推送的应用有各自的单独后台进程, 才能和各自的服务器通讯, 交换数据.&
& & 另外其实 Android 也有类似 APNS 的 GCM(Google Cloud Message),属于开发者可选,非强制.
& & 所以你大概看出来区别,iOS 的消息推送机制面世之时是一种全新的解决方案(堪称平台中的平台),应用本身不能有常驻的后台进程,系统的开销少,内存使用更少,电量也
更少(把更多的运算和资源开销放在云端,非设备端)。而 Android 的特点,虽然开销大,优点是更稳定快速,但不明显。
& & APNS的工作原理:
& & & & &1. App向设备请求是否允许使用通知服务
& & & & &2. 设备会携带App名向苹果的推送通知服务器发送允许接受通知服务的请求
& & & & &3. 苹果推送通知服务器将deviceToken和App名发送给设备
& & & & &4. App将deviceToken等信息发送至我们自己的存储通知内容的服务器
& & & & &5. 我们自己的存储通知内容的服务器将deviceToken和通知内容发送给苹果推送通知服务器
& & & & &6. 苹果推送通知服务器最后将通知内容按照deviceToken下发到设备
& & APNS的使用:
& & & & &1. 在/account/ios/identifiers/bundle/bundleList.action中注册App的id
& & & & &2. 在/account/ios/certificate/certificateList.action?type=development中注册APNS推送证书下载并安装
& & & & &3. 一般的APNS都是在AppDelegate中进行.
& & & & & & 1). 首先要注册通知服务, 由于iOS8.0之后的推送通知注册方法改变, 所以要进行设备的系统版本判断
& & & & & & // 注册通知服务
& & & & & & if ([UIDevice currentDevice].systemVersion.floatValue & 8.0)&{
& & & & & & & & [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &UIRemoteNotificationTypeSound |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &UIRemoteNotificationTypeAlert)];
& & & & & & } else {
& & & & & & & &UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:(
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & UIRemoteNotificationTypeBadge |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & UIRemoteNotificationTypeSound |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & UIRemoteNotificationTypeAlert) categories:nil];
& & & & & & & [application registerUserNotificationSettings:settings];
& & & & & & & [ application registerForRemoteNotifications];
& & & & & &}
& & & &4. 注册成功调用的方法
& & & & &- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
& & & &5. 注册失败调用的方法
& & & & &- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
& & & &6. 接送推送消息的触发方法
& & & &&- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
& &另: 推送中经常出现在icon上的角标 [UIApplication sharedApplication].applicationIconBadgeNumber
阅读(...) 评论()}

我要回帖

更多关于 ios 注册远程推送 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信