iOS推送证书从申请到使用

关于这个话题,已经有很多写的很好的文章了。但是,在自己做的过程中,即使别人写的已经很好了,还是会遇到这样那样的问题。自己还是再写一遍吧。

本文记录了从无到有申请证书,到最后能够发出通知。当然,前提是我们有一个合适的开发者帐号。

准备工作

1. 登录开发者帐号,如果帐号的权限合适。我们会看到如下图:


或者最新的界面应该是下面(刚刚发现页面更新了):

iOS推送证书从申请到使用_第1张图片

2. 点击红色框内的菜单,会来到如下界面:

iOS推送证书从申请到使用_第2张图片

创建App ID

这里要创建的App ID就是我们的App的Bundle Id。

3. 点解左侧的“App IDs”,会看到当前帐号下的所有App ID。

iOS推送证书从申请到使用_第3张图片

4. 点击右上角的➕

iOS推送证书从申请到使用_第4张图片


App ID Description下添加这个这个App ID的描述,如“My Test App”。
App ID Prefix下填写App的Bundle ID。不要带*号。
App Services下,勾选Push Notifications。

5. 点击Continue,会看到刚创建的App Id的信息。如下图:

iOS推送证书从申请到使用_第5张图片

6. 这时候再点击左侧的“App IDs”,会看到右边的列表多了一条。

iOS推送证书从申请到使用_第6张图片

申请证书

推送证书分为开发证书和生产证书。我们以生产证书为例。

7. 点击左侧的“Certificates”下的“Production”,会看到当前帐号下的所有生产证书

iOS推送证书从申请到使用_第7张图片

8. 点击右上角的➕

iOS推送证书从申请到使用_第8张图片

9. 选中Production下的Apple Push Notification service SSL,点击Continue

iOS推送证书从申请到使用_第9张图片

10. 在App ID下选中我们新建的App ID。点击Continue


11. 点击Continue,来到如下界面,需要我们上传CSR文件


接下来,我们要先在本地生成CSR文件。

12. 打开钥匙串(Keychain Access)程序,点击左上角的Keychain Access,做如下图的选择


12. 然后会看到如下提示


13. 填入邮箱等信息,选择“Save to Disk”。点击Continue后,会提示保存选择保存位置。选择合适的保存位置,保存。

14. 再接着第#11步,我们要上传刚才生成的CSR文件。点击“Choose File”,选择我们刚才生成的文件,然后点击Continue。然后会来到如下界面:

iOS推送证书从申请到使用_第10张图片

这时,我们的证书已经创建好了。点击Download,将证书下载到本地。我在桌面创建一个名为Cert的文件夹,将证书放到该文件夹下。一会儿还会用。

创建Provisioning Profile

15. 点击左侧的Provisioning Profiles下的Distribution


16. 点击右上角的➕

iOS推送证书从申请到使用_第11张图片

17. 点击Distribution下的In House,点击Continue

iOS推送证书从申请到使用_第12张图片

18. 在App ID下选择我们新建的App ID。点击Continue

iOS推送证书从申请到使用_第13张图片

19. 选择我们刚才新建的证书所属的帐号。点击Continue


19. 在Profile Name中,输入Profile的名字。点击Continue


这时,我们的Profile已经创建好了。点击Download,下载到本地。我把下载的Profile放到了在#14步中新建的Cert文件下。

生成供服务端使用的证书

这一步是在我们已经申请好的证书基础上,运行SSL命令。生成供我们的服务端使用的证书(也就是说,我们的服务端在发送通知的时候,要加载合适的证书)。
20. 打开桌面上的Cert文件夹,双击我们新申请的证书,证书会被倒入到钥匙串(Keychain Access)中。
打开钥匙串程序,点击Certificate,找到我们新建的证书,右键导出。如下图:
iOS推送证书从申请到使用_第14张图片
21. 输入文件名称,选择要保存的位置(我放在桌面上)。点击Save
iOS推送证书从申请到使用_第15张图片
22. 导出的时候,会要求输入密码,如下图:
iOS推送证书从申请到使用_第16张图片
23. 输入密码。点击OK。证书就被保存到了桌面上
iOS推送证书从申请到使用_第17张图片

24. 好吧,刚才保存的位置不好。把刚才导出的证书拖到Cert文件夹中。

25. 在Cert下创建一个Gen文件夹,将下载的证书和导出的证书复制到Gen中。并在Gen文件下,做如下的重命名:

下载的证书->developer_identity.cer

导出的证书->mykey.p12

注:这一步不是必须的,完全可以省略。我只是为了方便实用接下来的命令(参考自这里)。

25. 打开终端(Terminal)程序,cd到桌面的Gen文件夹下。依次输入如下命令:

openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem
openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12
期间会要求输入密码(导出的证书的密码和新生成的证书的密码),按要求输入就可以了。如下图:


运行完毕后,会在Gen下生成几个文件,其中iphone_dev.p12就是供服务端使用的证书。

使用新证书对程序签名

当然,我们打包的时候要用新的证书和Profile。如下图:
在Project下,

在Target下,
iOS推送证书从申请到使用_第18张图片

接下来,就是打包了。当然,还需要在服务端实现通知的推送。


参考:

http://blog.csdn.net/kepoon/article/details/22672133

http://stackoverflow.com/questions/7213074/notnoop-java-apns-push

Distributing Enterprise Apps

Distributing Enterprise Apps的PPT

你可能感兴趣的:(ios,push,notification,apns,推送证书)