iOS开发之(APNS)远程推送实现,证书与真机调试
2016-03-19 10:07
656 查看
http://www.skyfox.org/ios-apns-use-and-debug.html
远程推送通知
什么是远程推送通知
顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(ApplePush Notification Services)
为什么需要远程推送通知
传统获取数据的局限性 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容远程推送通知可以解决以上问题 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知
远程推送通知使用须知
所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接 什么是长连接 只要联网了,就一直建立连接长连接的作用 时间校准 系统升级 查找我的iPhone ..
...
长连接的好处 数据传输速度快 数据保持最新状态
推送原理
Provider就是我们公司的服务器,经过苹果的APNs服务器找到我们的设备,给我们设备上的客户端应用推送消息。那 APNs服务器是如何找到我们的设备和设备上的应用呢,答案就是DeviceToken,DeviceToken需要配置推送证书才可以获得,推送证书需 要知道我们的APP ID(应用的BundleID,应用唯一标识)和UDID(设备唯一标识),还有自己服务器的UDID,我们先来打一个推送证书,登录开发者中心,点击证 书模块
点击iOS Apps的证书
进入这样的界面
点击App IDs,然后点右上角的加号
箭头所指为应用ID描述,我们假设写了一个很牛逼的应用,ExcitedApp,接下来我们填入App ID,注意这里的App ID是固定的,不能有星号
接下来我们添加App所需要的服务,然后点击Continue
一直点击下一步,完成,在App IDs 列表里面找到我们的ExcitedApp,我们看到
发现Push服务是黄色警告,这时点击Edit,找到推送模块,我们需要配置推送证书了,点击红色箭头所指的位置
我们需要一个CSR文件,CSR是一个签名请求文件,意思就是让我们的MAC具有调试推送的权限,点击继续
点击了继续我们看到
然后我们打开Mac上的钥匙串,从证书颁发机构请求证书
前两个随便写,最后选择存到磁盘
完成之后,接下来我们就可以添加CSR文件了
添加完,选择生成
证书配好了,下载下来
打开我们刚刚下载的证书,添加到钥匙串中
终于能开始整我们的项目了,快哭了都
不要忘记修改bundle id 这里还要搞一个真机调试的证书才可以
真机调试的东西这里不累述,搞了这么多东西,我们终于可以拿到DeviceToken了
在AppDelegate.m中注册推送
123456789101112131415 | - (BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{ if([[[UIDevicecurrentDevice]systemVersion]floatValue]>= 8.0){ UIUserNotificationTypemyTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; UIUserNotificationSettings*settings = [UIUserNotificationSettingssettingsForTypes:myTypescategories:nil]; [[UIApplicationsharedApplication]registerUserNotificationSettings:settings]; }else { UIRemoteNotificationTypemyTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound; [[UIApplicationsharedApplication]registerForRemoteNotificationTypes:myTypes]; } return YES;} |
1 2 3 4 | -(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { NSLog(@"%@",deviceToken); } |
1 2 3 4 5 6 7 | //ios8 另外增加以下方法 #ifdef __IPHONE_8_0 - (void)application:(UIApplication*)applicationdidRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings { [applicationregisterForRemoteNotifications]; } #endif |
DeviceToken处理流程
接下来我们用SmartPush来测试一下我们的推送:https://github.com/shaojiankui/SmartPush
相关文章推荐
- iOS-设置文本行高并计算高度
- iOS地图展示mapkit框架-基本使用
- iOS数据持久化之偏好设置
- iOS代理设计模式
- iOS使用GCD或NSTimer定时刷新按钮的文字,按钮文字闪烁的问题
- iOS App开发中Masonry布局框架的基本用法解析
- iOS:OC九宫格的计算方法
- xcode 开发ios兼容性问题的上下黑边 和 coco2d-x 游戏分辨率适配 ResolutionPolicy::FIXED_WIDTH 都会引起上下黑边问题!!!
- 实现颜色渐变--iOS开发
- NavigationBar颜色不对怎么破--iOS 开发
- iOS手机摇晃事件
- NavigationController的基本使用
- 蜂窝教育iOS培训 让学员学有所用
- IOS-强指针和property属性的理解
- iOS GCD学习笔记
- iOS面向对象的建模:MVC(OC基础)
- iOS之OC面向对象的建模:MVC
- iOS下bound,center和frame
- iOS各版本特性
- IOS NavigitionController导航栏的基本设置