服務器主動向android手機端推送消息---------windows下Androidpn環境搭建

前段時間參與了一個項目,最近有空就來總結以下。時常總結纔會進步,尤其是做技術,要不就會很容易陷入狗熊掰棒子的窘境。

我在項目中完成的模塊是實現服務器主動向android手機端推送消息。老師的要求是用C語言在Linux下寫一個服務器來實現服務器主動向android手機端推送消息。經過收集資料,最終發現一個韓國人寫的開源項目Android Push Notification(簡稱Androinpn)可以實現此功能。androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和服務器端。官方網址是:http://sourceforge.net/projects/androidpn/。我用的版本是一個經過國人大神修改後的版本,裏面有一些這個大神做的註釋,更便於我們理解(再此表示對這位大神的感謝微笑)。可以從這裏下載到這個修改後的版本:推送.rar。下載後得到的是一個壓縮包。解壓後得到,其中Androidpn是服務器端程序,是一個 Java Web應用程序,androidpn-client是android程序。下面介紹下將這個開源項目運行起來的環境配置。

因爲之前沒做過java的項目,所以下面寫的會小白一點。

首先是服務器端,服務器端是一個Java Web應用程序,首先要運行java程序就要裝jdk。我裝的jdk版本是,windows下安裝只需要一路next就好了,只是要注意安裝路徑。安裝完JDK後需要配置下環境變量,我的是win7系統配置過程如下:鼠標右擊計算機----->屬性---->高級系統設置(在左邊欄)---->環境變量---->在系統環境變量中進行如下操作:1、新建->變量名:JAVA_HOME 變量值:D:\Program Files\Java\jdk1.6.0_10(這裏就是你jdk的安裝目錄)。2、新建->變量名:CLASSPATH 變值:.;%JAVA_HOME%\lib

(注意最前面有個點)。3、編輯->變量名Path :在Path 變量值的最前面加上:%JAVA_HOME%\bin;

完成後使用文本編輯器(比如:edit.com/記事本/UltraEdit/EditPlus)編寫如下代碼,並保存爲文件HelloWorld.java如下:

/* HelloWorld.java */
  public class HelloWorld {

  public static void main(String arg[]) {

  System.out.println("Hello, World!");

  }

  }
開啓一個DOS窗口,跳轉到HelloWorld.java所在的目錄中,執行以下操作,,如上則表明我們的jdk安裝成功。

服務器端是一個java Web應用程序,要運行此程序我們需要在eclipse中安裝apache-tomcat。安裝步驟如下:
首先下載 對應 eclipse 版本的 tomcat 插件版本,(這裏要注意: Tomcat 插件是Tomcat 插件,Tomcat 是 Tomcat, 兩者不能混淆!)下載地址:http://www.eclipsetotale.com/tomcatPlugin.html
然後將得到的壓縮包解壓,放入 eclipse 的 plugins 目錄中重啓 eclipse, Tomcat 插件安裝成功!當然安裝成功並不代表能使用,這裏還要配置 Tomcat, 才能正常使用 Tomcat 插件。
配置過程:
首先下載當前 Eclipse 能使用的 Tomcat 版本,下載地址:http://tomcat.apache.org/(我用的是apache-tomcat-7.0.32)。然後解壓到指定的目錄,然後配置:Eclipse - toolsbar  ->  Window  ->  Prefences  ->  Tomcat  -> 指向剛纔 Tomcat 解壓的目錄,到此配置完成,下面截個圖:


使用 Tomcat 插件可以啓動、關閉 Tomcat。
因爲服務器端的Web應用程序用到了mysql數據庫,所以我們還得要裝mysql數據庫,我用的

mysql數據庫版本是mysql-5.5.20-win32.exe。windows下的安裝也是一路next,

這裏需要注意的是別忘了安裝過程中設置的root密碼。
準備環境都搭好了以後,現在我們將服務器端程序Androidpn,import到eclipse中

(在eclipse左邊的工程界面區右鍵---->import---->General---->Existing Projects into Workspace

---->Browse---->找到Androidpn位置---->finish)。導入完成後需要修改工程中的jdbc.properties文件,

將其中的jdbcUsername和jdbcPassword兩項改爲你本機的mysql的用戶名和密碼。


根據jdbc.properties配置文件中 

得我們要用到一個androidpn數據庫,而剛裝好的mysql中並沒有這個數據庫,

所以我們需要在mysql數據庫中用:create database androidpn;這條命令來建立androidpn數據庫。

一切都完成後我們運行Androidpn程序(右擊工程區的Androidpn---->Run as---->Run on Server)。

運行成功後我們在瀏覽器地址欄中輸入:http://localhost:8080/index.do可以看到Androidpn服務器端所對應的4

個頁面:



初始這裏應該是空的,上面那條記錄是我之前連得。



服務器端運行成功後,會在我們剛創建的androidpn數據庫中創建兩張表:

其中apn_user存儲用戶的信息,當我們要向指定用戶發送消息時就可以從這張表中通過查找用戶名,來向指定的用戶發送消息。apn_notification是存儲發送消息內容的一張表。

服務器端運行起來了我們在來看客戶端程序androidpn-client。androidpn-client是一個android程序,只需要將這個android程序導入到eclipse中然後在模擬器中運行即可。這裏需要注意的是我們需要修改androidpn-client工程中的res/raw/androidpn.properties文件中的xmppHost這一項:


如果是要在模擬器中運行就將xmppHost這項修改爲10.0.2.2xmppHost=10.0.2.2。如果是要在真機上運行就將此項改爲androidpn服務器端主機的地址。

啓動androidpn-client後(右擊工程區的androidpn-client---->Run as---->Android Application)模擬器的效果爲:

現在就可以感受服務器端向android手機端推送消息了。

首先啓動Androidpn服務器端,然後再啓動客戶端androidpn-client,這時在服務器端瀏覽器中的頁面就會顯示登錄的客戶端的信息:



到推送消息頁面推送一條消息:


這時客戶端模擬器接收到了消息,拉下上邊欄即可看到:





我的任務是要用C語言在linux寫一個服務器,然後就尋找解決方法。網上有前輩告訴我Webservise

這種技術可以實現我的需求,於是就開始學習Webservice技術。至於我對Webservice技術的學習放到下一篇再講吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章