qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          AndroidPN真機環境測試

            一:AndroidPN環境配置
            AndroidPN框架實現了從服務器到android移動平臺的文本信息推送。下面是AndroidPN的環境配置
            1.先確保本機已經配置好了java環境
            2.下載androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip
            網址:http://sourceforge.net/projects/androidpn/
            解壓兩個包,Eclipse導入client,配置好目標平臺,打開raw/androidpn.properties文件,
            apiKey=1234567890
            xmppHost=10.0.2.2
            xmppPort=5222
            如果是模擬器來運行客戶端程序,把xmppHost配置成10.0.2.2 (模擬器把10.0.2.2認為是所在主機的地址,127.0.0.1是模擬器本身的回環地址).
            如果是真機,配置成本機的IP地址 比如我在局域網內的IP是192.168.1.101
            xmppPort=5222 是服務器的xmpp服務監聽端口(注意5222端口貌似是固定的,我改成其他端口就行了)
            二:運行測試
            從命令行運行androidpn-server-0.5.0\bin\run.bat啟動服務器(有些朋友說會一閃而過啟動不了,注意要從命令行進入該目錄了在運行),從瀏覽器訪問http://127.0.0.1:7070/index.do (androidPN Server有個輕量級的web服務器,在7070端口監聽請求,接受用戶輸入的文本消息)
            運行客戶端,客戶端會向服務器發起連接請求,注冊成功后,服務器能識別客戶端,并維護和客戶端的IP長連接
            進入Notifications界面,輸入消息發送
            真機客戶端接受到server推送來的消息
            最后,我把AndroidPN服務器配置的VPS進行測試,同樣的測試成功!

          這樣AndroidPN的環境就搭好了。真機環境也測試通過
            問題:
            1.asmack的包太大,3百多K。
            2.只是完成Android的Push功能使用XMPP協議感覺很笨重。
            3.androidpn服務器端的負載很難控制,除非自己改寫。
            第一個問題關系不大,畢竟一個軟件多了300多K不算什么,如果自己來控制socket連接,我估計沒有100K也很難控制好。
            第二個問題確實如此,使用XMPP的后果是帶來了60%的信息冗余量
            第三個問題,負載的控制應該來說,用到socket都必須要考慮的,負載方面,androidpn用到了MINA這個socket框架,而在socket的處理方面,很多人都是用的socket來處理的。
            總的來說,源代碼的開放是最大的優點,就算用到androidpn,無論如何也是要在原有的基礎上進行修改的,照搬照抄肯定是不行的。但是比自己用socket來控制,在服務器和客戶端之間建立一個網關,要來的容易。
            注意:需將lib 沖命名 改為libs,然后在build path里面導入libs這個包,否則會報類找不到的錯誤
            首先,基礎中的基礎,就是按照第一篇日志中所說,使用模擬器完成web推送。這一塊非常簡單,按照第一篇去做完全可行,可能出錯的地方就是你忘記更改配置文件了。
            后來我下載了第二篇日志中博主提供的tomcat版本服務端,放在自己本機tomcat下,并且啟動。用模擬器去測試發現無法推送,配置文件也沒有錯。檢查后發現,原來自己tomcat的端口是8080,而server中配置的是7070。只要打開config.properties,修改admin.console.port=端口號,即可。
            再接著,用同一個局域網內其他機子的客戶端模擬器進行測試,只要將androidpn.properties中的xmppHost=服務端所在內網IP就可以啦。比如192.168.1.150。
            用真機測試,其實和模擬器沒啥區別,只要配置文件不寫錯,原則是不會出問題的。但是我測試的時候,還是出現無法推送成功的問題。仔細檢查后,原因有二。
            1.客戶端android版本太低,換個android4.0版本就可以。貌似是不兼容低版本。
            2.真機上其他的應用中,也有應用到這個androidpn的。其中,在androidpn.properties中,apikey默認是123456789。因為那個應用和我自己本機都選擇了默認的,所以我將自己這里的apikey改掉了。切記!這里有一點需要注意的,客戶端androidpn.properties中更改了apikey,服務端config.properties也要隨之修改。??!
            OK,基本上單獨的web推送就完成了。
            接下來就是整合到自己項目中,也就是從自己項目后臺將數據推送到客戶端,至于androidpn的server端,則作為中間的橋梁。
            這里需要注意一點,androidpn會在你本地數據庫中新增一個表apn_user。如果你本地數據庫有權限,拒絕的話,你最好自己先手動增加這么一張表。
            首先,我單獨啟動一個新的tomcat,將server端部署到這下面,修改配置文件config。properties,jdbc.properties。jdbc.properties這個文件是配置你本地數據庫的參數的,不能有錯。啟動后,簡單測試成功,在自己項目中使用http協議將數據POST到server端這個org.androidpn.server.console.controller.NotificationController類的send方法中。具體參數名稱及獲取參數的代碼,可以修改server端。
            在這里插一句,不論時間多么緊張,至少你得追一邊代碼,尤其這個類。
            代碼寫好后可以執行,斷點跟蹤下,只要你代碼正確,配置文件沒錯,是可以正常推送的。
            基本上,寫到這里的話,應該可以滿足項目需求了。如果你還需要將哪些用戶在線的功能整合到你自己項目中。那你就得自己跟蹤下代碼了。
            我項目做到這里,基本上都是在windows環境下。將項目部署到linux環境下,又出問題了。
            路徑問題比較容易堅決,按照后臺日志中提示的地方,將路徑修改下。
            關鍵是在linux下重啟server端,會發現報錯,5222端口被占用。因為時間限制,能力有限,沒辦法修改代碼,只能每次重啟時,都先用命令將5222端口殺掉。

          posted on 2014-01-16 11:35 順其自然EVO 閱讀(3600) 評論(2)  編輯  收藏 所屬分類: android

          評論

          # re: AndroidPN真機環境測試[未登錄] 2014-10-27 17:23 123

          的  回復  更多評論   

          # re: AndroidPN真機環境測試 2015-09-14 16:48 cc魯

          androidpn的代碼太亂,已重構!  回復  更多評論   

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 静乐县| 阜城县| 达尔| 扬中市| 陵川县| 沂南县| 苗栗县| 东辽县| 电白县| 镇康县| 司法| 万全县| 彭水| 龙胜| 曲松县| 新乡县| 望城县| 商丘市| 通州市| 石狮市| 吉安市| 三都| 耒阳市| 蛟河市| 虎林市| 马龙县| 静安区| 八宿县| 邮箱| 北海市| 山阳县| 五莲县| 文昌市| 行唐县| 鄂尔多斯市| 望城县| 长葛市| 长沙市| 仁化县| 原阳县| 集贤县|