推送总结(重要)

关于应用推送的一些总结

 

推送通知详解

http://lutaf.com/91.htm

http://www.cnblogs.com/menghe/archive/2012/02/20/2359278.html

http://www.cocoachina.com/bbs/simple/?t102110.html

http://xiaolv154.blog.163.com/blog/static/1733641632012129115730396/

http://blog.sina.com.cn/s/blog_560193a80100w8xr.html (很重要哦)

 

关于推送发布的一些流程(重要)

http://blog.csdn.net/silencetq/article/details/8115501

 

我们的应用如果要用到推送,肯定是需要push证书,而这个时候我们需要注意,证书分为两种,一个是Development 证书,一种是Production 证书,这个时候,你得注意,在你发布应用到appstore的时候,就一定要改为Production的证书。

我这里只大致写下怎么将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的不能带.*

原文地址:https://www.cnblogs.com/kevingod/p/3375512.html