iOS8 PUSH解决方法

本文转载至 http://blog.csdn.net/pjk1129/article/details/39548523

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types NS_DEPRECATED_IOS(3_0, 8_0, "Please use registerForRemoteNotifications and registerUserNotificationSettings: instead")

昨天晚上整理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);
}

每当苹果更新一个新的版本的时候,最痛苦的莫过于我们这群屌丝啊
加油码农!
本文转自  http://www.999dh.net/home.php?mod=space&uid=1&do=blog&quickforward=1&id=419  转载请注明!!

时间: 2024-11-09 05:32:08

iOS8 PUSH解决方法的相关文章

UITableViewCell点击不能push解决方法

一般情况下不能push是因为当前控制器没有导航控制器,造成不能push的情况. 解决方法如下: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; NSLog(@"点击left-%d",(int)indexPath.row); NSLo

[git push] rejecteded 问题的解决方法

错误信息: hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart. Check out this branch and integrate the remote changes hint: (e.g. 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in

页面跳转问题,多次 push 到新的页面的问题的解决方法

今日在做一个扫一扫的功能,突然发现多次点击了扫一扫的图片后,造成多次触发轻拍手势,就多次push到新的页面,本想在轻拍手势内对push的进行拦截,但是又觉得如果有好多的地方都要实现对该问题的解决岂不是很麻烦吗?于是想了一下,我们可以通过重写导航控制器的方法来解决这个问题. 下面就是我写好的方法,你可以直接引入到你的工程中,就能够解决类似的问题. (1).首先在程序的一个导航控制器类(就是程序中的所有导航控制器的父类名字一般都是:XXXBaseNavgationController )的延展中去遵

push到github报错解决方法

在push代码到远程仓库时,报了如下的错误: $ git push -u origin master To https://github.com/11pdg/group-buy.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/11pdg/group-buy.git' hint: Updates were rejected beca

关于在使用 sourcetree 进行代码 push 时, 出现的用户名或者密码提示错误 解决方法

关于在使用 sourcetree 进行代码 push 时, 出现的用户名或者密码提示错误 错误截图如下: 以下错误截图是出现在 pull (拉取)正常, push(推送)出现 password/user出错, 截图如下: 解决方法如下: 本人是在填写的用户名和 GitHub 上的不匹配, 将其移除, 然后在 push 会有添加用户名和密码的提示弹出, 填写 GitHub 上对应的用户名和密码即可 原文地址:https://www.cnblogs.com/canfixme/p/8686732.ht

Missing Push Notification Entitlement解决方法

原委 最近提交APP到Apple Store审核,结果很快就收到Apple很"贴心"的邮件.原文如下: Dear developer, We have discovered one or more issues with your recent delivery for "APP Name". Your delivery was successful, but you may wish to correct the following issues in your

git push错误failed to push some refs to的解决方法

! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '[email protected]:yangchao0718/cocos2d.githint: Updates were rejected because the tip of your current branch is behinhint: its remote counterpart. Integrate the remo

ios8 横屏状态栏不显示解决方法

解决方法:在plist文件中将 View controller-based status bar appearance 设置为NO  在application:didFinishLaunchingWithOptions:中添加下面代码[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; [[UIApplication sharedApplication]

提交代码出现 Push to origin/master was rejected 错误解决方法

原文地址:https://www.cnblogs.com/wurendao/p/11732876.html 为什么会出现这样的问题 一般发生在 GitHub 或 码云 刚刚创建仓库第一次pull的时候,两个仓库的差别非常大,所以git拒绝合并两个不相干的东西 快速解决方法 切换到自己项目所在的目录,右键选择GIT BASH Here  然后依次输入一下命令即可解决 git pull git pull origin master git pull origin master --allow-unr