第一步:首先你要有个开发者账号;进入https://developer.apple.com官网,进入自己的MemberCenter ;
1>点击APP IDs 进入后点右上角的“+”创建一个自己的Id(这个Id的Bundle identifier名字一定要和自己的项目名Bundle identifier保持一致格式最好是“com.xxx.Name”)点击进去后勾选自己所需的功能 Push Notifications,最后点击Continue,最后确认done 完成;
2>再次点击1中创好的ID 点击“Edit” 进去后在 Push Notifications 栏目下选择自己要创建的推送通知证书的类型,开发或发布。点击Production SSL Certificate 里的Create Certificate... 选择下面已经请求好的证书。一步一步点击确认按钮直到出现“Download”字样,先点击“Done”,最后下载这个证书,保存到桌面重命名为“xxxxxx.cer”。
(拿发布的为例吧:现在最小化页面窗口,打开电脑的“钥匙串访问”,点击它,下拉选择从证书颁发机构请求证书,会弹出一个证书信息窗口需要填写:电子邮件地址填自己的,常用名称填项目名xxx(最好不要中文名),再在存到磁盘前打钩,点击下面的继续选择保存的位置如:桌面。进去“钥匙串访问”里面的刚创建的xxx,会有两个,点击第二个右击“显示简介”把名称换成xxx.p12)
3>返回初始页面,进入Certificates->Production ,同样右上角的“+”新建一个新的Distribution 证书,只要点选"App Store and Ad Hoc"后点Continue,
4>配置描述文件,Provisioning Profiles ->Distribution ,同样右上角的“+”新建一个新的ProProvisioning Profiles证书 勾选里面的App store ->App ID 先前1里面制作的Id,点击继续勾选3中制作的证书,接着会出现给这个证书命名如:XXX Distribution ,点确认,直到出DownLoad , 点击Done后 下载这个证书,和上面下载的证书放在一起。
5>在Xcode 选中刚刚制作的证书;首先看Bundle identifier是否与我们制作证书所使用的的Bundle identifier名一致,点PROJECT->info->Configurations ->"+"选Release,再把名字替换成Distribution
点击PROJECT->Build Settings->Code signing ->code signing identity 下的Debug 和Release全选中自己制作的push证书如:“Apple Production IOS Push Services:com.xxx.Name ”,Distribution 里选中3中的发布证书,对应的Provisioning Profiles 下面的证书只要选中Distribution 栏目下的4中的证书。
再选中 TARGECTS->General->Bundle identifier名一致要一致,team就是自己的开发的团队名即自己账号的名字; TARGECTS->General->Bundle Settings->codeSigning 只需选中Distribution里面的对应证书就行了
6>在Xcode 最左上角的地方,IOS Device 左侧点击项目名下的Edit Scheme->Archive 点击后在BuildConfiguration选中Distribution就可以打包发布了。
7>制作后台服务器所需的p12 文件;
$ cd /Users/桌面刚下载的两个文件包名/Desktop
把.cer文件转换成.pem文件:
$ openssl x509 -in xxx.cer -inform der
-out xxxCert.pem
把私钥.p12文件转换成.pem文件:在钥匙串中的
$ openssl pkcs12 -nocerts -out xxx.pem -in xxx.p12
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
你首先需要为.p12文件输入passphrase密码短语,这样OpenSSL可以读它。然后你需要键入一个新的密码短语来加密PEM文件。还是使用”pushchat”来作为PEM的密码短语。你需要选择一些更安全的密码短语。
注意:如果你没有键入一个PEM passphrase,OpenSSL将不会返回一个错误信息,但是产生的.pem文件里面将不会含有私钥。
最后。把私钥和证书整合到一个.pem文件里:
$ cat xxxCert.pem xxx.pem > ck.pem
为了测试证书是否工作,执行下面的命令:
$ telnet gateway.push.sandbox.push.apple.com 2195 //发布用的网址
$ telnet gateway.sandbox.push.apple.com 2195 //本地开发用的网址
Trying 17.172.232.226…
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is ‘^]’.
它将尝试发送一个规则的,不加密的连接到APNS服务。如果你看到上面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。
然后再次连接,这次用我们的SSL证书和私钥来设置一个安全的连接:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195
-cert PushChatCert.pem -key PushChatKey.pem
Enter pass phrase for xxx.pem: