<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                這是一篇來自[raywenderlich](http://www.raywenderlich.com)的教程,內容翔實!結構簡單透徹、講解循序漸進、文章質量上乘!是一篇難的的博文!使用半瓶的英語水平翻譯了一下: 1.【iOS push全方位解析】(一) [push的概述](http://blog.csdn.net/hherima/article/details/45583787) 2.【iOS push全方位解析】(二) 生成push證書,生成Provisioning Profile(本篇) 3.【iOS push全方位解析】(三) [一個極簡的demo,并測試一下push](http://blog.csdn.net/hherima/article/details/45624075) [這里查看原文](http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1) ### Provisioning Profile和證書,Oh My! 為了App中push通知好用,App需要provisioning profile簽名。另外,App Server需要用SSL證書對push通知簽名。provisioning profile和SSL 證書是緊密連接在一起的,并且僅對一個App ID可用,這么做可以保證只有你的App Server可以發送push消息到你的App而不是別人的App。 正如你所知,App使用不同的provisioning profile分別用于開發和發布。同樣,也有兩種push證書: ● Development 被開發者provisioning profile簽名的app,App Server必須使用開發者證書發送通知。 ● Production 按照Ad Hoc或者APP Store發布的app,App Server必須使用production證書。如果兩者混淆,那么App則收不到push通知。 本教程僅使用development 證書 ![](https://box.kancloud.cn/2016-03-10_56e11b0f9e82d.jpg) ### 生成Certificate Signing Request(CSR) 還記得你是如何為App真機聯調生成Development 證書么?如果記起來了,下面的步驟會很熟悉。但,我建議你還是嚴格按照步驟操作。大多數做push通知開發的時候,都遇到了證書問題。 數字證書是基于公-私鑰的密碼學。你不必知道cryptography如何使用證書:,但是你有必要了解:證書總是跟私鑰一起工作的。證書只是“公-私鑰”的公開部分。發給其他人是安全的,然而,私鑰應該被保護好,它是一個秘密。私鑰不是別人的事兒,而是你自己的事!有一點很重要:沒有私鑰,不能使用證書。 無論什么時候,請求一個數字證書,需要提供一個Certificate Signing Request(簡寫CSR)。當生成CSR,一個新的私鑰被放到mac的鑰匙串中了。接著,你發送CSR到一個證書機構(這里就是iOS developer protal),該機構將基于你提交的CSR生成SSL證書。 打開mac中的“鑰匙串”,選擇菜單,“Request a Certificate from a Certificate Authority” ![](https://box.kancloud.cn/2016-03-10_56e11b0fb24f9.jpg) (圖)請求證書1 如果你沒有這個菜單選項或者顯示“Request a certificate from a certificate Authority with key”,你下載并安裝[WWDR InterMediate Certificate](https://developer.apple.com/certificationauthority/AppleWWDRCA.cer)?,并確保在鑰匙串窗口中沒有選中任何一個私鑰。 你應該看到下圖: ![](https://box.kancloud.cn/2016-03-10_56e11b0fc3804.jpg) (圖)請求證書2 輸入email地址。我聽說需要使用,用于App簽名的email相同。但是,好像其他什么email都ok。 輸入“PushChat”作為名字,這兒可以輸入任何字符,找一個好記的,方便后面我們發現私鑰。選中【 Saved to disk】點擊“Continue”。將文件保存為“PushChat.certSigningRequest”。在“密鑰”這個欄中可以看到剛剛申請的private,右鍵,并選擇“Exprot” ![](https://box.kancloud.cn/2016-03-10_56e11b0fd32e5.jpg) (圖)導出證書 保存私鑰為PushChatKey.p12并輸入一個密碼。本教程中,我使用“pushchat”作為p12文件的密碼,但是你應該選一個容易記的密碼。這個密鑰(p12)文件需要保密。 ### 生成App ID和SSL證書 登錄iOS Dev Center選擇右側面板的“Certificate,Identifiers&Profile”。 ![](https://box.kancloud.cn/2016-03-10_56e11b0fe867a.jpg) (圖)iOS dev center 下面的界面出現了 ![](https://box.kancloud.cn/2016-03-10_56e11b1013148.jpg) (圖)Certificate,Identifiers&Profile大綱 既然我們搞iOS app,在iOS Apps中選擇“certificates”。現在你可以生成一個新的App ID。每一個push App需要唯一的ID,因為push通知是發送給指定的app 在左側點擊“App IDs”,點擊“+”按鈕 ![](https://box.kancloud.cn/2016-03-10_56e11b102ceaf.jpg) (圖)添加App id 輸入下面的信息: ● App ID Description:PushChat ● App Services Check the push Notification Checkbox ● Explicit App ID 你最好使用自己的BundleIdentifier-com.yoursite.PushChat-而不是使用我的。你還需要在Xcode中設置相同的Bundle ID。輸入這些信息后,點擊“Continue”。將詢問你是否確定這些信息,如果一切無誤后點擊“Submit” 哈哈!你已經成功注冊了一個新的App ID ![](https://box.kancloud.cn/2016-03-10_56e11b105ecc8.jpg) (圖)App ID生成了 接下來幾分鐘,你還會生成SSL證書,App Server將使用這個SSL證書跟APNS建立一個安全連接。這個證書跟App ID相連。APP Server只能發送push通知給這個App ID的程序,而不是其他App。 生成App ID后,它看在列表中這個位置: ![](https://box.kancloud.cn/2016-03-10_56e11b1079abb.jpg) (圖)App id的展示 在列表中點擊這個PushChat App id,一個相關的窗口出現了: ![](https://box.kancloud.cn/2016-03-10_56e11b10915be.jpg) (圖)App id詳情 注意在“Push Notification”這一行,兩個橙色的原點,“Configurable”分別在Develop和Distribution欄。這表示你的App ID可以用于push,但是你還需要設置一下。點擊“setting”按鈕,配置一下: ![](https://box.kancloud.cn/2016-03-10_56e11b10a909f.jpg) (圖)App id config 向下滾動到“Push Notification”這一段,選擇Develop SSL Certificate這一行的“Create Certificate”按鈕。 ![](https://box.kancloud.cn/2016-03-10_56e11b10c4527.jpg) (圖)生成證書 “Add iOS Certificate”向導出現了: ![](https://box.kancloud.cn/2016-03-10_56e11b10da6aa.jpg) (圖)向導 第一件事,詢問你生成Certificate signing Request,這一步你已經做完了,點擊“continue”。下一步,你該上傳CSR文件。選擇剛才生成的CSR,點擊“Generate”。 生成SSL 證書這將花費幾秒鐘,當它進行完成,點擊“Continue”。 ![](https://box.kancloud.cn/2016-03-10_56e11b1101fe2.jpg) 現在點擊“Download”來獲取證書,它自動被命名為“aps_development.cer” ![](https://box.kancloud.cn/2016-03-10_56e11b111942f.jpg) (圖)下載證書 正如你看到的,你已經有一個可用的證書,現在開發可以用push了。如果有需要,你還可以下載這個證書。開發者push證書三個月有效。 當你發布app,重復上面的操作。獲取一個production 證書。步驟是相似的。production證書的有效期是一年,你需要確保在期限前。 沒必要添加這個certificate到鑰匙串,當然你可以雙擊aps_development.cer文件,你會發現它跟私鑰關聯起來了。 ### 制造PEM文件 到目前位置,你有三個文件: ● CSR文件 ● PushChatKey.p12私鑰文件 ● SSL證書(aps_development.cer) 將這三個文件保存好。你可以把CSR扔了,但是我覺得存著更容易一些。當證書過期,你可以使用那個CSR來生成一個新的證書。如果你生成一個新的CSR,還要導出一個新的私鑰(p12)。通過復用CSR你可以使用已有的私鑰,僅.cer文件會變化。 你得將證書和私鑰轉成更容易使用的格式。因為,我們的app Server是用PHP寫的,所以你需要將證書和私鑰合成為PEM格式。PEM格式對PHP來說更容易使用。如果你的app Server使用其他語言寫的,下面這些步驟不使用了。 你將使用OpenSSL命令行來操作。打開命令行執行下面的步驟,進入證書的下載文件夾,我的是桌面: $ cd ~/Desktop/ 轉換cer為pem文件 $ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem 轉換p12為pem文件 $ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12 Enter Import Password:? MAC verified OK Enter PEM pass phrase:? Verifying - Enter PEM pass phrase:? 你第一次需要輸入p12的密碼,這樣opensll可以讀取它。接著你還為PEM需要輸入一個新的密碼。這兒我還使用“pushchat”,你可以使用更安全的密碼。 注意:如果你沒有輸入PEM密碼,openssl不會提示錯誤信息,但是生成的pem文件并沒有私鑰。 最后,合成證書和key為一個pem文件 $ cat PushChatCert.pem PushChatKey.pem > ck.pem 至此,檢查一下證書是否正常。執行下面的命令: $ 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 Server。看到以上的信息,說明你的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 PushChatKey.pem:? 你應該看到一大堆輸出,這些是openssl想讓你知道后面在干什么。如果連接成功,你可以鍵入一些字符。輸入回車,服務器關閉了連接。如果建立連接的時候有問題,openssl會給出錯誤信息,但是你得向上滾動查找到并查看。 【注意】:有兩個APNS服務器:沙盒服務器用于測試,線上live用于生產模式。這里,我們使用沙盒服務器,因為我們的證書是development的,不是distribution的 ----------------------------------------------------------------------------------------------------------------------------- 譯者加: 生成openssl證書和ck.pem的過程可以歸納為: ![](https://box.kancloud.cn/2016-03-10_56e11b115e39c.jpg) ----------------------------------------------------------------------------------------------------------------------------- ### 制造provisioning profile 在iOS Dev Center 還沒有,點擊左側欄的Provisioning profiles按鈕,點擊“+”按鈕。 ![](https://box.kancloud.cn/2016-03-10_56e11b1177bb7.jpg) (+provisioning file) **Step1:選擇類型** 選擇“iOS App development”選項按鈕,點擊continue ![](https://box.kancloud.cn/2016-03-10_56e11b1189f56.jpg) (provision develop) **Step2:配置** 選擇PushChat app ID,可以保證provisioning profile準確的綁定了PushChat App ![](https://box.kancloud.cn/2016-03-10_56e11b11a4de3.jpg) (選擇app id) **Step3:生成** 選擇要包含的證書,這一步現在應該很常規。 ![](https://box.kancloud.cn/2016-03-10_56e11b11bded4.jpg) (選擇證書) **Step4:選擇devices** 選擇你想包含的設備, ![](https://box.kancloud.cn/2016-03-10_56e11b11dfe6d.jpg) **Step5:profile的名字** 設置provisioning profile的名字為“PushChat Development” ![](https://box.kancloud.cn/2016-03-10_56e11b12098c5.jpg) (provisioning name) 你幾乎已經完成了,最后,點擊“Download”按鈕,下載最新生成的provisioning profile。 雙擊provisioning profile添加到Xcode或者拖拽到xcode中。 如果你是發布App,可重復相似的過程。生成一個Ad Hoc或者App Store發布的profile。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看