1. 程式人生 > >iOS推送證書從申請到使用

iOS推送證書從申請到使用

打包 desc apns div overflow cbe b2c 點擊 打開終端

關於這個話題,已經有非常多寫的非常好的文章了。可是,在自己做的過程中,即使別人寫的已經非常好了,還是會遇到這樣那樣的問題。

自己還是再寫一遍吧。

本文記錄了從無到有申請證書,到最後可以發出通知。當然,前提是我們有一個合適的開發人員帳號。

準備工作

1. 登錄開發人員帳號,假設帳號的權限合適。我們會看到例如以下圖:

技術分享

或者最新的界面應該是以下(剛剛發現頁面更新了):

技術分享

2. 點擊紅色框內的菜單。會來到例如以下界面:

技術分享

創建App ID

這裏要創建的App ID就是我們的App的Bundle Id。

3. 點解左側的“App IDs”。會看到當前帳號下的全部App ID。

技術分享

4. 點擊右上角的?

技術分享

技術分享

技術分享

App ID Description下加入這個這個App ID的描寫敘述,如“My Test App”。


App ID Prefix下填寫App的Bundle ID。不要帶*號。


App Services下,勾選Push Notifications。


5. 點擊Continue。會看到剛創建的App Id的信息。例如以下圖:

技術分享

6. 這時候再點擊左側的“App IDs”,會看到右邊的列表多了一條。

技術分享

申請證書

推送證書分為開發證書和生產證書。我們以生產證書為例。

7. 點擊左側的“Certificates”下的“Production”,會看到當前帳號下的全部生產證書

技術分享

8. 點擊右上角的?

技術分享

9. 選中Production下的Apple Push Notification service SSL。點擊Continue

技術分享

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。然後會來到例如以下界面:

技術分享

這時。我們的證書已經創建好了。點擊Download,將證書下載到本地。

我在桌面創建一個名為Cert的目錄,將證書放到該目錄下。

一會兒還會用。

創建Provisioning Profile

15. 點擊左側的Provisioning Profiles下的Distribution

技術分享

16. 點擊右上角的?

技術分享

17. 點擊Distribution下的In House,點擊Continue

技術分享

18. 在App ID下選擇我們新建的App ID。

點擊Continue

技術分享

19. 選擇我們剛才新建的證書所屬的帳號。

點擊Continue

技術分享

19. 在Profile Name中。輸入Profile的名字。點擊Continue

技術分享

這時。我們的Profile已經創建好了。點擊Download,下載到本地。我把下載的Profile放到了在#14步中新建的Cert文件下。

生成供服務端使用的證書

這一步是在我們已經申請好的證書基礎上,執行SSL命令。生成供我們的服務端使用的證書(也就是說,我們的服務端在發送通知的時候。要載入合適的證書)。 20. 打開桌面上的Cert目錄。雙擊我們新申請的證書,證書會被倒入到鑰匙串(Keychain Access)中。

打開鑰匙串程序,點擊Certificate,找到我們新建的證書,右鍵導出。

例如以下圖: 技術分享
21. 輸入文件名。選擇要保存的位置(我放在桌面上)。

點擊Save 技術分享
22. 導出的時候,會要求輸入password。例如以下圖: 技術分享
23. 輸入password。點擊OK。

證書就被保存到了桌面上 技術分享

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
期間會要求輸入password(導出的證書的password和新生成的證書的password),按要求輸入就能夠了。例如以下圖:

技術分享

執行完成後。會在Gen下生成幾個文件。當中iphone_dev.p12就是供服務端使用的證書。

使用新證書對程序簽名

當然。我們打包的時候要用新的證書和Profile。

例如以下圖: 在Project下, 技術分享
在Target下, 技術分享

接下來。就是打包了。

當然,還須要在服務端實現通知的推送。


參考:

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推送證書從申請到使用