android實現主動推送小結

openkk 12年前發布 | 58K 次閱讀 Android Android開發 移動開發

推送功能,大致能用其實就這么兩種,一種pull和一種push:

所謂pull就是客戶端做論詢,定期從服務端指定接口獲取數據

而push就是目前較主流的,服務端主動推數據到客戶端(IOS實現起來很簡單)

 

而實現方式呢,能用其實就幾種

1,MQTT(IBM的一套輕量訂閱)

2,http長連接(使用keep-alive技術,http1.0 需要添加此字段  http1.1默認是開啟的)

3,   AndroidPn(開源框架都有)

 

我目前只跑通了 mqtt 和 androidPn 對于http長連接個人不建議用,我也沒有去嘗試

 

一,MQTT小結一下

參考下面鏈接:

構建Android Push Notification Service服務端及客戶端[含代碼]  (MQTT及php的)
http://blog.csdn.net/huzhangyou/article/details/7314988


沒有做過驗證,到底可以支持多少用戶在線,想過一種方式,服務端做處理,監聽在線用戶量,當達到極限時,退出一部分在線用戶,比如讓其sleep 10分鐘(通知方式呢,可以以通知的方式指定字段告訴客戶端),,,以減少服務端壓力

另外MQTT其實已經是socket長連接了,只是維護工作放到了客戶端來做,斷線重連等(早知道有現成的當初就不自己寫套socket維護機制了)

然后,說下推送方式,抓到了調用了地址
http://apache服務器地址/androidpushservice/send_mqtt.php?target=tokudu%2F設備ID&message=內容

替換紅色的字段就可以實現調用一個地址推送數據了,,

另外如果要做群發,,沒想到怎么做好,可以服務端做異步對列么?留給大家討論下

 

二,AndroidPn小結

參考資料

Android Push Notification實現信息推送使用
http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html

推送數據到指定設備上

http://配置的服務器地址/notification.do?action=send&broadcast=N&username=設備名&title=提醒&message=內容&uri=動作
推送數據到所有在線設備上
http://配置的服務器地址/notification.do?action=send&broadcast=Y&username=&title=提醒&message=內容&uri=動作

 

 

最后說下,根據項目需求,可能還需要做是否收到提醒的反饋?是否要發送到指定部分用戶群中,,因此比較后,建議使用AndroidPn因為服務端可編輯的多,

安裝方式都不難

MQTT:windows 或 linux 需安裝mosquitto,,它會監聽1833端口,,客戶端會通過wmqtt與服務器的1833端口掛上連接(目前服務端只看到有一套php的運行環境)

AndroidPn : windows和linux都能一鍵運行(需求復雜的話可編輯源碼重新生成部署),安裝后,會監聽7070端口和5222端口 客戶端會通過asmack去連接服務端的5222端口

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!