iOS远程推送
来源:互联网 发布:淘宝小店推广 编辑:程序博客网 时间:2024/06/14 17:45
该文章属于<简书 — 刘小壮>原创,转载请注明:
<简书 — 刘小壮> http://www.jianshu.com/p/5639a3d2a2be
远程推送应用配置过程
一. 创建支持远程推送功能的App ID
![](http://upload-images.jianshu.io/upload_images/270478-6cbf05805ada9f96.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/270478-4dea708ba909a7a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
勾选远程通知选项,可以在配置App ID的时候勾选,也可以在原有App ID的基础上进行更改。
![](http://upload-images.jianshu.io/upload_images/270478-f81c2902842362ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/270478-13a875186eeaf79c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二. 申请开发者证书,并选中刚刚创建的App ID
![](http://upload-images.jianshu.io/upload_images/270478-b313fb7f2a8035c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/270478-4930add1e6cb4536.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选择我们刚才配置好,勾选推送选项的App ID.
![](http://upload-images.jianshu.io/upload_images/270478-8940fbb6a2c3aea5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选择我们电脑本地使用证书助理生成的CSR文件
![](http://upload-images.jianshu.io/upload_images/270478-085a0f13f25a5c7a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
三. 下载CER文件,并导入钥匙串管理
![](http://upload-images.jianshu.io/upload_images/270478-4d57790865c85ef2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
四. 我们需要重新生成一下配置文件
![](http://upload-images.jianshu.io/upload_images/270478-58bb1a7062e69ea5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选择此Provisioning Profile的环境后点击Continue
![](http://upload-images.jianshu.io/upload_images/270478-d9eee3df7b759141.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选择要创建Provisioning Profile的App ID后点击Continue
![](http://upload-images.jianshu.io/upload_images/270478-f1a233421eb6ed82.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选择所属的开发者证书,(这里创建了多个开发者证书,建议只创建一个,方便管理)为了方便。这里选择Select All,再点击Continue进入下一步。
![](http://upload-images.jianshu.io/upload_images/270478-c7d044b2df0965dc.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
为该Provisioning Profile选择将要安装的设备(一般选择Select All),点击Continue
![](http://upload-images.jianshu.io/upload_images/270478-2c981dcbe382ac34.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
给该Provisioning Profile填写Profile Name,点击generate完成创建
![](http://upload-images.jianshu.io/upload_images/270478-fe8a5ce0f3e697dc.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
创建完成,点击download下载到本地。双击下载下来的Provisioning Profile,添加到xcode。
五. 将推送证书导出后缀为.p12的文件,上传服务器。在团队开发中如果遇到多人开发,也需要给同事导出.p12证书给他人使用。
注意:导出证书的时候,尽量不要展开私钥。
![](http://upload-images.jianshu.io/upload_images/270478-a237f41db3095740.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/270478-65219e1772f7c953.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上传给服务器时,需要告诉服务器开发同事证书的密码。
![](http://upload-images.jianshu.io/upload_images/270478-3aaea50bfdb6d507.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
六. 远程推送应用程序开发过程
具体怎么新建应用程序和其他开发就不多说了,直接说和推送相关的。
打开info.plist文件的Bundle identifier选项,将配置推送证书的App ID填写进去
![](http://upload-images.jianshu.io/upload_images/270478-6e95fb67c407692e.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
点击项目,进入Build Setting 界面,向下滑动,去到Code Signing 配置证书
![](http://upload-images.jianshu.io/upload_images/270478-0ca0f5e9579621ef.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
需要在Xcode 中修改应用的 Capabilities 开启Remote notifications
![](http://upload-images.jianshu.io/upload_images/270478-953beaeb5b65abcc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
七. 获取DeviceToken,并发送给服务器
由于iOS系统权限限制,需要注册远程通知,我们直接上代码
![](http://upload-images.jianshu.io/upload_images/270478-a43c3e421b659ec7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注册通知之后,苹果会将DeviceToken通过代理方法的形式返回相应的代理方法。注意:一定要联网!
这个代理方法会将手机的UDID + 应用程序的Bundle ID发送给苹果,苹果进行某种编码之后再通过代理方法返回。
deviceToken = (手机的UDID + 应用程序的Bundle ID) 苹果编码
返回的deviceToken是NSData类型的,大概格式如下:<7040f7d5 5a974598 c5cf31b5 3e340b39 68affd25 122f0ce1 3f315226 396c2e5b>
注册通知后,在代理方法中接收到苹果返回的deviceToken
![](http://upload-images.jianshu.io/upload_images/270478-b2f690428adca38e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
实现接收到远程通知的代理方法,触发方法和本地通知流程一致
iOS8以前使用这个方法:
![](http://upload-images.jianshu.io/upload_images/270478-e4ea95f65ef7c294.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
iOS8之后使用这个方法:
![](http://upload-images.jianshu.io/upload_images/270478-bf3a469d704a21d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
执行completionHandler有两个目的
1> 系统会估量App消耗的电量,并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用
2> 调用完成的处理代码时,应用的界面缩略图会自动更新
注意:接收到远程通知到执行完网络请求之间的时间不能超过30秒
原文链接:http://www.jianshu.com/p/5639a3d2a2be
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- iOS推送之远程推送
- iOS推送之远程推送
- iOS推送之远程推送
- ios推送之远程推送
- iOS推送之远程推送
- iOS推送之远程推送
- iOS 远程推送通知
- iOS远程推送通知
- IOS远程推送通知
- iOS远程消息推送
- ios远程推送笔记
- 【iOS】远程消息推送
- iOS远程推送注意事项
- ios远程推送
- ios远程消息推送。
- iOS开发 远程推送
- iOS的远程推送
- ios之远程推送
- iOS 蓝牙开发(二)iOS 连接外设的代码实现
- 镜花水月,过不留痕————铭记那些给我们带来进步的C语言小难题<2>
- Java使用quartz实现作业调度
- java中的Clone(深拷贝,浅拷贝)
- Kmp 模板(邝斌 - 人一我百,人百我万)
- iOS远程推送
- imfilter()函数的用法
- 网络流二十四题之十二 —— 软件补丁问题(BUG)
- min3d用法
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- Flume event转化为ES的document过程分析
- 连续子数组的最大和
- 一亿条数据的排序处理
- 机器学习之支持向量机: Support Vector Machines (SVM)