最近有幸負責參與開發公司的CMPP簡訊網關程式,採用的是Apache Mina架構實現。通過該項目對Socket通 信、長串連有了更深一步的理解,於是就想試試將Mina用到Android平台的資訊推送上。經過瞭解發現,目前 已經有不少成型的架構能夠實現Android平台的資訊推送,特別是AndroidPn。
平時我們開發手機客戶 端,都少不了要於伺服器互動,那麼當伺服器端有新的資料時,用戶端是怎麼知道的呢?一般可以採用如下兩 種方式來實現:
1)用戶端定期(每隔一段時間,輪詢)向伺服器發起請求,以檢測是否有新的資料。 如果輪詢的頻率太慢,可能導致擷取的資訊已經過時;如果輪詢的頻率過快會很耗電、耗手機流量;
2 )採用Android的廣播機制,攔截服務端發送的簡訊。即當伺服器端有新的資料時,伺服器向所有Android客戶 端傳送簡訊,用戶端基於廣播機制將簡訊攔截並通過手機用戶端應用呈現。該方案成本較高,需要向電信運營 商申請簡訊傳送埠。
以上兩種實現方式多少都存在著弊端,並不能真正滿足要求,那有沒有更好的 實現方式呢?當然有,那就是資訊推送。推送就意味著當有新的資料時,伺服器端會主動將資料“推”到客戶 端,而不需要用戶端不停地檢測。這裡就不再過多地對“資訊推送”進行解釋了,下面將直接通過一個 AndroidPn樣本來示範。
AndroidPn即Android Push Notification,它是Android平台的資訊推送架構 ,基於XMPP協議的Java實現,它包含了完整的伺服器端和用戶端程式。因此,我們不用開發一行代碼,就能體 驗到資訊推送,還在等什麼,馬上動手吧。AndroidPn架構的下載地址: http://sourceforge.net/projects/androidpn/files/,將以下檔案全部下載:
其中,androidpn-server是服務端程式,它包含可執行指令碼,能夠直接啟動運行;android-demoapp是示範 樣本,一會就直接用它來示範;androidpn-client是用戶端原始碼,你可以用它來研究androidpn的內部實現 。
第一步:啟動androidpn服務端程式。即點擊運行android-server-0.5.0\bin\run.bat。啟動完成後,可 以通過瀏覽器訪問到如下介面: