iOS推送證書從申請到使用
關於這個話題,已經有非常多寫的非常好的文章了。可是,在自己做的過程中,即使別人寫的已經非常好了,還是會遇到這樣那樣的問題。
自己還是再寫一遍吧。
本文記錄了從無到有申請證書,到最後可以發出通知。當然,前提是我們有一個合適的開發人員帳號。
準備工作
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推送證書從申請到使用