成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android消息推送之Androidpn_Demo版到正式上線

移動開發 Android
本文講述了一位程序員在公司項目上線前,對于Android消息推送的深入研究的全過程與總結,拿出來與大家分享,希望能幫助到大家。

最近公司需要android的消息推送,在網上找了很多消息推送的例子,都是無法運行.

經過一段時間的研究,終于把例子運行起來了.現在共享出來,共同學習.

在下載的文件里面在bin目錄下有run.bat文件直接雙擊即可運行.然后在瀏覽器里面輸入

http://127.0.0.1:7070即可,如果在eclipse中運行了客戶端即可在服務器端看到.這個很簡單,不是本文的重點.現在主要的就是把下載后的的服務器端源碼搭建起來,然后部署到myeclipse中運行,當然可以在androidpn的官網下載(http://sourceforge.net/projects/androidpn/files/),

也可以下載我已經調好的程序.現在把源碼共享給大家,http://download.csdn.net/detail/johnny901114/4410546

需要注意的是我的這個源碼使用數據庫是mysql,所以讀者的pc機上需要安裝mysql數據庫,關于數據這里就不多說了.當然最好能夠懂點spring和hibernate,這樣的話改的時候更加順手.

但是可能還有不懂hibernate的人,為了能夠讓他很好的運行,這里就簡單的說一下了.

過程:

首先打開jdbc.properties:

 

  1. # JDBC Configuration 
  2. jdbcDriverClassName=com.mysql.jdbc.Driver 
  3. jdbcUrl=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull 
  4. hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 
  5. jdbcUsername=root 
  6. jdbcPassword= 
  7. # DBCP Pool settings 
  8. jdbcInitialSize=5 
  9. jdbcMaxActive=10 
  10. jdbcMaxIdle=5 
  11. jdbcMaxWait=30000 
  12. jdbcValidationQuery=select 1

jdbcDriverClassName:表示數據庫驅動的類名

jdbcUrl:表示連接數據庫的url,其中test是數據庫的名稱

hibernate.dialect: 數據庫方言

jdbcUsername和jdbcPassword:mysql的用戶名和密碼

其他的就不多說了.

如果沒有以外的話,服務器啟動成功后,可以在瀏覽器里輸入:http://localhost:8080/

就可以出現如下界面:

然后,運行客戶端代碼,需要注意的是把androidpn.properties中的xmppHost改為你的局域網ip地址.運行如下圖所示:

然后在瀏覽器中的Users界面可以看到手機與服務器之間的連接.如:

然后在Notifications界面可以發送消息給客戶端:

在客戶端就收到了通知:

其中通知里面的內容就是網頁中message輸入的內容.ok按鈕就是網頁中uri的內容.

最后還有一個問題當我們服務器端重啟的時候,客戶端就無法在連接到服務器了,除非把android后臺的服務關掉,然后重啟才行.在XmmpManager中加上如下紅色代碼就可:

 

  1. private void addTask(Runnable runnable) { 
  2.         Log.d(LOGTAG, "addTask(runnable)..."); 
  3.         taskTracker.increase(); 
  4.         synchronized (taskList) { 
  5.             if (taskList.isEmpty() && !running) { 
  6.                 running = true
  7.                 futureTask = taskSubmitter.submit(runnable); 
  8.                 if (futureTask == null) { 
  9.                     taskTracker.decrease(); 
  10.                 } 
  11.             } else { 
  12.             //解決服務器端重啟后,客戶端不能成功連接androidpn服務器 
  13.             runTask(); 
  14.                 taskList.add(runnable); 
  15.             } 
  16.         } 
  17.         Log.d(LOGTAG, "addTask(runnable)... done"); 
  18.     }

后續:

今天公司終于把Androidpn服務器端部署到服務器端了,終于真正的上線了.

大體步驟如下:

1,把服務器的程序通過myeclipse到處war包,然后訪問tomcat首頁,把war包上傳到tomcat服務器.

點擊 Tomcat Manager出現如下界面:

在默認的情況下登錄不成功,需要在tomcat-user.xml文件中配置,在該文件的加上如下配置:

 

  1. <role rolename="manager-gui"/> 
  2. <user username="tomcat" password="tomcat" roles="manager-gui"/> 

 

然后通過如下界面把war包上傳到tomcat上:

注意需要在服務器電腦上有相應數據庫(我這個里是mysql),并且有Androidpn對應的數據庫(我這里的數據庫名為test).并且還要注意數據庫的用戶名和密碼.

2,假設服務器端已經能夠訪問了,需要把客戶端的androidpn.properties文件的xmppHost的值改成你服務器端的主機名稱,假設你的服務器端訪問地址為:http://push.android.net:8080/ ,那么把xmppHost的值改成push.android.net

3,注意把你的8080端口和5222端口打開(這里是服務器那邊的人搞的自己不是很懂).

后續二 :關于Androidpn的一些問題

1,如果把客戶端的隨機生成的UUID代碼,改成把設備的id或者mac(device/mac)作為用戶名,會出現重復插入的錯誤.

2,把客戶端的數據清除(或者重新安裝),那么sharedPre里的數據也會沒有,然而服務器端又有我們手機的設備id,然后啟動程序又會出現重復插入的問題.

所以解決方案為,在服務器端保存用戶的時候,檢查數據時候存在該用戶.

因為在客戶端來說自己有沒有注冊到服務器端,通過SharedPreferences里面是否存在username和password.

后續三 :關于Android推送的其他方式

其他的推送方案 : 

1> android官網最新提供的 , GCM ,是用來代替的C2DM , 其官網為 http://developer.android.com/google/gcm/index.html

2> 可以通過Java nio來實現自己的服務器, 聽同事說它的經理自己通過Java NIO寫了一個推送服務器 可以接收30w左右的并發, 自己正在嘗試寫一個 , 如果有進展 , 一定會共享給大家 . 同時可以研究apache的項目mina 該項目就是封裝Java NIO的 . 

3> 當然可以使用XMPP協議來實現推送的. 自己也曾寫過簡單的一對一即時聊天軟件.

4> 也可以通過MQTT協議來實現推送 . 

     客戶端下載地址: https://github.com/tokudu/AndroidPushNotificationsDemo 

     服務器下載地址 : https://github.com/tokudu/PhpMQTTClient

責任編輯:閆佳明 來源: oschina
相關推薦

2019-09-04 09:26:42

谷歌Android開發者

2021-11-05 15:28:55

TensorFlow數據機器學習

2012-05-06 08:36:54

iOS

2010-06-08 13:29:43

微軟Web版Offic

2023-05-05 18:42:20

iOS蘋果iOS 16.5

2014-11-13 09:59:39

Android 5.0GoogleLollipop

2012-12-14 09:17:03

Google

2017-01-09 10:13:53

互聯網

2021-09-30 05:39:05

微信Android 8.0騰訊

2021-09-10 10:50:24

iOS蘋果系統

2014-06-25 15:14:29

WP 8.1

2013-04-08 15:19:53

百度云百度

2018-11-09 16:11:30

攝像頭

2012-06-25 17:26:38

豌豆莢Flipboard

2017-03-13 09:41:12

2021-09-02 00:06:56

Windows 11Windows微軟

2014-04-23 17:21:45

Cooliris豌豆莢

2017-09-20 07:13:28

蘋果iOS

2013-05-14 10:41:23

Firefox火狐瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产久精国产 | 99热都是精品 | 韩国精品在线 | 欧美一级欧美三级在线观看 | 高清免费在线 | 国产黄色大片在线观看 | 精品一区二区观看 | 欧美成人免费在线视频 | 欧洲高清转码区一二区 | 超级碰在线 | 欧美专区在线 | 亚洲精品国产一区 | 亚洲天堂999| 成人精品一区二区三区中文字幕 | 天天拍天天插 | 九九热热九九 | 国产做爰| 日本一区二区不卡 | 中文字幕在线观看一区二区 | 91亚洲国产成人久久精品网站 | 日韩视频免费看 | 久久毛片 | 精品一二三区在线观看 | 日韩一级 | 国产精品美女久久久久久免费 | 综合久久一区 | 一区二区三区视频 | av一区二区三区四区 | 成人欧美一区二区三区在线播放 | 精品国产一区二区三区久久久蜜月 | 偷拍第一页 | 色综合99| 亚洲码欧美码一区二区三区 | 午夜国产一级 | 国产一区二区在线免费观看 | 午夜久久久久久久久久一区二区 | 另类视频区| 国产精品成人一区二区三区吃奶 | 国产精品久久久久久一区二区三区 | 久久精品影视 | 亚洲欧美日韩系列 |