關於應用推送的一些總結html
推送通知詳解xcode
http://www.cnblogs.com/menghe/archive/2012/02/20/2359278.htmlapp
http://www.cocoachina.com/bbs/simple/?t102110.htmlide
http://xiaolv154.blog.163.com/blog/static/1733641632012129115730396/網站
http://blog.sina.com.cn/s/blog_560193a80100w8xr.html (很重要哦)編碼
關於推送發佈的一些流程(重要)加密
http://blog.csdn.net/silencetq/article/details/8115501spa
咱們的應用若是要用到推送,確定是須要push證書,而這個時候咱們須要注意,證書分爲兩種,一個是Development 證書,一種是Production 證書,這個時候,你得注意,在你發佈應用到appstore的時候,就必定要改成Production的證書。.net
我這裏只大體寫下怎麼將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的不能帶.*