前言
最近在做一個項目讶凉,客戶要求一定要用國外的亞馬遜推送(Amazon Simple Notification Service)。。身害。本來感覺推送就比較簡單的,應(yīng)該都是大同小異的流程草戈,然而塌鸯。。唐片。還是太年輕丙猬,想得太簡單,折騰了很久费韭。最初是認(rèn)認(rèn)真真在看亞馬遜文檔茧球,然而文檔是中英文混雜,一半的都是靠想象星持,后來就想上網(wǎng)搜搜看看有沒有什么前輩積累的經(jīng)驗的抢埋,結(jié)果并沒有搜到什么有用的信息,所以只有還是打開文檔接著繼續(xù)看督暂,文檔寫的其實挺清晰簡單的揪垄,但是過程中還是遇到了一些些奇怪的問題。
為了以后能有個參考逻翁,也為了大家有個參考決定在這里簡單記錄一下下饥努。(其實之前并沒有寫這些的習(xí)慣。卢未。肪凛。)考驗?zāi)托牡臅r候到了??
前提條件
你得有個亞馬遜賬號。辽社。
步驟
1.在正式開始之前可以先看看開發(fā)文檔伟墙,這是支持中文的,大概了解一下滴铅。把文檔中的snsmobilepush.zip文件下載下來戳葵,里面有很多平臺的demo,在前端的代碼書寫可以參照demo.
2.和之前提到的極光推送類似汉匙,首先我們需要創(chuàng)建應(yīng)用
? ? 向AWS注冊您的移動應(yīng)用拱烁,左邊欄有個topics和 Applications 生蚁,前者是針對主題推送,就是推送給所有用戶的消息戏自,前提是你需要提前訂閱某個主題邦投,這個我們暫時沒有涉及到先忽略;后者是最熟悉的關(guān)于APP的擅笔。點擊Create platform application進行應(yīng)用的創(chuàng)建志衣,填寫好應(yīng)用名稱,在選擇Push notification platform 之后就是下面的界面:
劃重點
這里沒有我們熟悉的build ID的輸入猛们,最開始很奇怪不用輸入build id它是怎么匹配的念脯。。不過后來想想我們配置的證書里面包含了build ID弯淘。绿店。。
首先Push certificate type ?這里我們只能選擇 第一個庐橙,其他的不符合需求;
然后是Choose P12 file 假勿,點擊后選擇從鑰匙串中導(dǎo)出的p12文件就可以了,然后輸入之前設(shè)定的密碼怕午;
不過后面還有Certificate ?和 ?PrivateKey ?兩項废登,這是什么鬼?郁惜?好像要把這兩項填寫完才能點擊右下方的Create 按鈕堡距。。兆蕉。想想很奇怪羽戒,這里是方框,應(yīng)該是輸入的一些東西虎韵,不是上傳的文件類型易稠。都知道p12文件是對之前的證書的包裝,里面本來就包含了證書和私鑰的信息包蓝,并且注意到了輸入密碼的旁邊還有個按鈕是 Load credentials from file,應(yīng)該是點擊這里會自動填充下面兩行的信息驶社。如果點擊這里之后很幸運的加載出來下面兩項就可以直接跳到第3步了,但是我并不幸運测萎,我很激動的點擊了這個按鈕亡电,,硅瞧,份乒,頁面提示這樣??
下載錯誤?重點是就提示了Error ?,并沒有提示到底是錯在哪里!好吧或辖,只有自己去找瘾英。。颂暇。我想可能是自己創(chuàng)建的證書有問題缺谴,就重新去配置了一次然后繼續(xù)以上步驟。忐忑的點擊Load 按鈕后還是一樣的錯誤提示蟀架,重復(fù)了好幾次都是一樣的結(jié)果瓣赂,我??...........
為了試驗,我隨便找了一個之前項目沒有問題的發(fā)布證書的p12文件片拍,再次添加進去,點擊Load后果然加載出來了后面的Certificate 和Private key<酥捌省!但是并不是件高興的事,因為這個證書并不是這個項目的碉钠!好吧纲缓,這就是我遇到的最奇怪的事,在最開始就遇到了瓶頸喊废。
算了祝高,還是再看看有沒有關(guān)于這里的文檔說明,于是我點擊了頁面上的Learn more污筷。
認(rèn)真地看完之后就是??這個表情工闺。大概意思就是上傳p12文件就自動轉(zhuǎn)換了,說明之前的步驟沒有錯瓣蛀,不過還是耐心地按照文檔步驟在終端上做了以下操作:
? ? ? 獲取SSL證書得到.pem文件
? ? ? openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem
? ? ? 獲取私鑰得到的也是.pem文件
? ? ? openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts
? ? ? ?驗證證書和應(yīng)用程序私有密鑰
? ? ? ?openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem
前面連個得到的應(yīng)該就是對應(yīng)的創(chuàng)建時后面的Certificate和 private Key這兩項陆蟆,但是這兩項是輸入的內(nèi)容所以要查看文件的內(nèi)部數(shù)據(jù)才行,這里直接右鍵用文本編輯打開以上.pem文件即可惋增。
我們可以看到類似這樣的內(nèi)容
太好了叠殷,看到了certificate了,這應(yīng)該就是輸入的內(nèi)容诈皿,下面還有關(guān)于Private Key的內(nèi)容林束。接下來我們就直接復(fù)制粘貼到對應(yīng)位置就行。這里要注意;鳌:啊!一定要從Begin那一行開始到end那一行結(jié)束措左。去掉之前選擇的p12證書依痊,兩種方式只需要一種即可,然后點擊create,就成功了胸嘁。
點擊左邊的application就可以看到創(chuàng)建的應(yīng)用了瓶摆。
3.提供設(shè)備Token
? ? 獲取Device Token 就在appdelegate 里面獲取就好,記得打印出來性宏,去掉中間的空格以及其他字符群井。
4.測試推送
? ? ? ?點擊左邊的application就可以看到創(chuàng)建的應(yīng)用后,點擊應(yīng)用的ARN那一行就會跳轉(zhuǎn)頁面進行測試操作毫胜。
頁面是我添加好的一個設(shè)備书斜,endpoint其實就是指你需要手動添加的Device token,當(dāng)然你也可以用代碼添加酵使,具體參考文檔說明荐吉。
添加好endpoint以后點擊頁面的Publish to endpoint進行推送測試,選擇JSON格式口渔,方框里面是需要你自己輸入JSON格式样屠,不過點擊下面的JSON message generation 就可以自動生成相應(yīng)格式內(nèi)容,然后點擊右下角的Publish message就好缺脉。
如果設(shè)備收到測試內(nèi)容痪欲,說明功能正常;如果頁面報錯了攻礼,那就看看提示的錯誤信息业踢,這里比較詳細,包含錯誤原因以及錯誤碼礁扮,對照API錯誤說明更改就好知举。
后記
測試推送的時候記得打開推送權(quán)限
可能需要配置iOS9網(wǎng)絡(luò)ATS
好久沒寫作文了。深员。负蠕。好長的文章,總結(jié)完了發(fā)現(xiàn)好像很簡單似的??不知道這么久我到底是干了撒??