node.js正夯
在github發現一個有趣的套件
用這個套件就可以直接以node.js架設簡單的APNS server
iOS的推撥通知服務是啥?
在行動裝置開發上,開發者可以利用推撥通知服務(iOS:APNS, Android:GCM)
送訊息給裝在客戶手機的App...
簡單的說,就是這個
以水果提供的APNS服務來說,串接方法可以先看完這篇文章...
然後你就會串惹~
上面那篇文章如果懶得看的話,歸納出實作推撥通知的需求如下
1. SSL handshake的憑證跟私密金鑰
2. 使用者裝置的device token
3. 欲送出給行動裝置的訊息
然後只要以水果規定的推撥通知的封包格式,組出一個封包
之後透過SSL憑證建立SSL連線,送出封包就可以射後不理惹~
憑證跟私密金鑰的申請方式網路上已經很多了,自己去google就好
拿到憑證跟私密金鑰後,必須把它匯出成憑證檔跟金鑰檔
步驟如下
1. 匯出憑證
2. 匯出憑證所對應的私鑰
這組密碼是類似sudo的動作,系統跟你要root權限用的
這邊要注意一下
匯出私鑰時,必須指定一組密碼來保護私鑰
可以隨便設個qwe123之類的,不必跟系統的密碼一樣...
3. 用openssl把憑證與私鑰轉換成.pem並測試
$ openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem $ openssl pkcs12 -in key.p12 -out key.pem -nodes Enter Import Password: (輸入你剛剛匯出私鑰的密碼)
接著,先用這些轉好的pem測試跟水果攤server的SSL connection是否正常
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cert.pem -key key.pem
如果收到類似下圖一樣的東西,就表示憑證與key可以用了。
憑證跟金鑰準備好之後,就開始寫程式了
1. 先用npm安裝套件
$ npm install apn
2. coding... 10行解決XD
var apn = require('apn'); var notify = new apn.Notification(); notify.device = new apn.Device(""); // ""裡面放欲推撥裝置的token notify.badge = 100; // App icon上面的數字badge notify.alert = "測試XD"; // 推撥顯示文字 new apn.Connection({ cert:'cert.pem', key:'key.pem', gateway:'gateway.sandbox.push.apple.com' }).sendNotification(notify);
3. 測試...
把剛剛的code存檔成test.js
然後key下面的指令
$ node test.js
之後可能要稍微等個幾秒鐘
如果沒有意外的話,就可以在手機上面看到推撥訊息了。
沒有留言:
張貼留言