標籤:blog http io ar os 使用 sp 檔案 on
來源連結:http://blog.csdn.net/showhilllee/article/details/8631734?reload
遠程推送寫的最詳細的就是這位啦,鑒於我反反覆複搞了四五遍,我就不連字帶圖的轉了,再也難不倒我╭(╯^╰)╮
主要寫各種坑:
1.認證Certificates
開發或者發布ipa肯定都申請過認證,不過當時真是迷迷糊糊的,拿著公司帳號各種暈,裡面一堆的id,帶*的不帶*的,各種認證也不知道哪些能用哪些不能用。反正就是各種試,能用的趕緊用了再說。
在這裡,先說一下,基本上剛拿到賬戶,對申請各種認證沒什麼概念的孩子,可以在裡面各種操作,研究命名規則之類的,方便以後取名字。
但是,記住:一旦你搞懂了,一定要把哪些烏七八糟,各種test的認證都刪掉,清除掉。認證不要錢啊,親,隨便刪喲,不然,認證跟csr不配套,全部百搭。要知道csr是自己電腦產生的,一個沒有儲存妥當,不匹配,有認證也百搭。如果這些認證還發布了產品,就更暈菜了。
所以,搞清楚以後,在正式發版本前,把亂七八糟的認證都刪了。保證開發人員中心裡的認證等乾淨整潔。
一般我們使用會用兩種認證:1.development開發認證,2.production發布認證。可以簡單的理解為debug和release版本需要的認證。
這兩種認證是最多隻能申請兩份的。所以資源寶貴。申請完了,請把申請時使用的那個csr【鑰匙串裡建立的,認證申請檔案】,和產生的ios_開頭的cer檔案妥善保管好。尤其是前面那個csr檔案,因為後面的認證沒了還能重新上開發人員中心裡下載。
安裝認證,雙擊cer檔案就行。但是,安裝之前,先把你之前test時裝進鑰匙串裡的那些亂七八糟的認證都刪除掉。保持清爽。不然後面你再也不想翻看裡面的細節。。。
好了,我建議同時申請開發認證和發布認證,這樣他們對應同一個csr,日後方便管理維護。分別雙擊安裝兩個cer認證進鑰匙串裡。認證前面都會出現小三角,點開下面就是你的csr密鑰。如果沒有這個小三角,說明沒有匹配的csr檔案,基本上這個認證就不太好用了,可以刪了,重新申請安裝,或者在別的電腦上找到csr檔案,*.certSigningRequest。拷貝回來。
2.App ID
這次刪除安裝了N遍,深刻體會了他的含義啊。T_T
以前不知道AppID的bundleID是做什麼用的,全部用野id,就是*通配的,一般的開發,這也就夠了。但是要想做APNs遠程推播通知的話,就必須有唯一的BundleID字串。而且這個字串要和app的bundleID一致。
這裡,我掉進了一個坑。我申請了app一致的ID,因為某些原因不能推送,所以我建立了一個test的app,然後把測試程式的bundleID改成了已經用於發布的這個正式的bundleID,後來推送ok了,我那個開心啊。
然後換回我要發布的app,運行,推送,接收。然後,我發現在通知中樞裡,通知app的名字居然是test!!!!!我死活改不回來了!!!!!!!
因為這是APNs的一個安全機制,就是為了防止有人偽造BundleID,截獲推播通知的。於是我真正要用的app接收了,但是標題名是註冊成功那次的app名稱。而我註冊成功的那次是test!坑爹。
好在,APNs的註冊機制是針對一台一台的裝置,每個裝置只對應一個drive token的。所以,別的測試機還沒來得急被我汙染,⊙﹏⊙b。
我試了刪掉App ID,重建立一個,bundle ID必須唯一,所以以前那個必須刪除,但是刪除重建一個後,沒有任何改變。我才想起來APNs的註冊是針對一個裝置的。於是把裝置還原了,再重新安裝,推送,接收推送,然後推播通知裡正常了。
app ID申請推送的兩個SSl認證,這個沒什麼好說的,記得csr檔案跟上面說的Certificates裡面用的一致就ok了。然後雙擊cer檔案,安裝到鑰匙串中。
3.provisioning profiles
設定檔,給Xcode用的。在此之前,肯定也測試過,安裝過很多provisioning profiles。開啟build setting->Code signing,點開provisong profiles,就可以看到目前安裝上去的。博主我的xcode裡面那叫亂七八糟啊,以前個人賬戶的,公司賬戶的,別的項目拿來試試看能不能用的。。。。趁此機會全部刪掉了。。。
刪除就在Xcode->preferences->accounts裡面,選擇賬戶,右下角有個View details,點開,裡面就有目前安裝過的provisioning profiles。可以清理了。
清理好了,就可以點擊安裝最新產生的設定檔了,現在,再看看xcode的build setting->Code signing裡,很清爽,有木有。
4.產生ck.pem
匯出.p12檔案,這個檔案一定是點擊我上面Certificates裡說的那個鑰匙串裡安裝好認證後,三角形下面密鑰那裡右鍵匯出。我曾經圖簡單,直接找密鑰,匯出,然後我發現單獨匯出的只有1k多,認證下這個匯出的有3k多。(為什麼我這麼容易犯二~~~~(>_<)~~~~ )
然後產生chatcert.pem,chatkey.pem,兩者加起來產生ck.pem。密碼最好和p12的一致,好管理啊。
5.php pushMe.php
我就被源地址裡那個博主的這個伺服器檔案坑死了。因為他通篇講的是測試環境,偏偏php檔案裡用的是APNs正式地址,我又眼鏡帶坑,看了幾遍沒發現。於是用戶端老是收不到。以為我認證哪裡不對,就不停的刪啊建啊,改啊,換app測試啊。。。折騰兩天。。。
6.推送基於網路
遠程推送在裝置沒連網時是收不到的,所以,做需求時也要看看有沒有不合適的地方。而且推送也很不靠譜,有時候會掉推送。嗯嗯。。。
目前就先總結這些。發現不是在總結推送,完全是在總結各種認證申請及配置嘛。。。。。。
總之,沒做出來前,聽到手機裡別的app推送訊息,感覺都是在對我無情的嘲笑。如今做出來了,叮咚聲真悅耳啊,我推我推我使勁推送啊,啊哈哈哈哈~不許嫌煩(⊙o⊙)哦~~~
ios遠程推送的各種坑,啊吼吼吼~APNs