关于应用推送的一些总结html
推送通知详解xcode
http://www.cnblogs.com/menghe/archive/2012/02/20/2359278.htmlapp
http://www.cocoachina.com/bbs/simple/?t102110.htmlide
http://xiaolv154.blog.163.com/blog/static/1733641632012129115730396/网站
http://blog.sina.com.cn/s/blog_560193a80100w8xr.html (很重要哦)编码
关于推送发布的一些流程(重要)加密
http://blog.csdn.net/silencetq/article/details/8115501spa
咱们的应用若是要用到推送,确定是须要push证书,而这个时候咱们须要注意,证书分为两种,一个是Development 证书,一种是Production 证书,这个时候,你得注意,在你发布应用到appstore的时候,就必定要改成Production的证书。.net
我这里只大体写下怎么将p12格式的证书转换成pem的证书,这个pem文件是要给服务器用的。
前面应该已经生成了三个文件,(这里是以production证书为例)
~1.aps_production.cer(开发者网站生成)
~2.PushChat.p12(匹配开发者帐号,在钥匙串里面导出)
~3.配置文件mobileprovision
1.openssl x509 -in aps_production.cer -inform DER -out aps_production_identity.pem -outform PEM
2.openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChat.p12 (JAVA,.Net服务器须要文件)
3. cat aps_production_identity.pem PushChatKey.pem > ck.pem (PHP服务器须要此文件)
这里须要注意的是改变颜色的部分,这是须要更改为你的明明的地方,其余的就能够彻底套用。
第一步的含义是将.cer的文件转换为.pem
第二步的意思是将.p12转换为.pem
第三步是将前面两个步骤生成的.pem文件再合成一个pem文件,这就是咱们最后须要的结果
第二步须要补充一下的是,当你将该语句输入肯定以后,会根据你每一步的肯定出现
Enter Import Password: 这个是让你输入生成.p12文件时候的密码
MAC verified OK这是提示信息,正确的话会出现这个
Enter PEM pass phrase: 这句话的含义是输入一个加密密码
Verifying – Enter PEM pass phrase: 这是确认加密密码
pass phrase 能够不用输入,这个时候生成的p12就默认没有私钥
OK了
下面这句是用于验证是否成功的
telnet gateway.sandbox.push.apple.com 2195
成功后出现的提示应该以下
Trying 17.172.232.226…
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is ‘^]’.
注意:当cer证书导入到电脑的时候,没有自动生成专用密匙的话,应该是当前使用的电脑不是以前申请的电脑,这个证书要以前生成的电脑才能正经常使用
********************************************************************************
关于更换PUSH证书的问题
http://blog.csdn.net/silencetq/article/details/8023952
我本来已经有成功安装一个push证书,而且正常使用。
但是当我有需求须要更换另一个push证书的时候,问题出现了。
个人操做是这样:
我直接到苹果官网,登陆个人开发者帐号,而后从新建立了一个App IDs,而后根据App IDs 建立了一个新的Provisioning,而后我在xcode的Organizer界面刷新了一下,而后新的证书就出现了。
这个时候我链接上个人设备,而后将我新建立的证书拖拉到设备里。而后我更改了xcode里面的Code Sigining的证书选择以及.plist文件中的Bundle identifier.此时运行,发现没报错,可是当我获取设备号的时候,就一直提示
Code=3000 "未找到应用程序的“aps-environment”的权利字符串" 这个错误
而后我开始根据这个错误搜索一些解决方案。不少说重启设备,重启xcode的方法试过,彻底没用。中间折腾不少次,最后成功,成功的操做是这样:
首先把设备里面有push的证书删除,而后去苹果官网从新建立一个Provisioning,而后加入设备,把xcode里面的相关证书以及identifiter修改为你如今的证书,而后关掉xcode。注意,这里的关闭是须要结束进程的。
重启后,运行,发现有一个错误
Code Sign error: Provisioning profile ‘XXXX’ can't be found
解决这个错误的操做是以下:
1.彻底关闭xcode,找到项目文件XXXX.xcodeproj ,右键,显示包内容。从新打开一个文件夹
2.打开该文件夹里面的project.pbxproj,而且在这找到你以前证书的编码信息,例如报错是:Code Sign error: Provisioning profile '37D44E7F-0339-4277-9A82-C146A944CD46',因此我用查找的方式找到了全部包括37D44E7F-0339-4277-9A82-C146A944CD46的行,而且删除
而后重启xcode,再运行,就成功了。
这里有点得注意,所谓push证书,跟普通证书的不一样在于,它激活了push功能。这个push功能须要你从钥匙串里面请求一个证书,而后导出,最后上传到苹果官网,而后才能够激活。这里不详细描述了。push证书的identifiter的不能带.*