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


Android 消息推送之 Androidpn_Demo 版到正式上线 前言: 最近公司需要 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: # JDBC Configuration jdbcDriverClassName=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior =convertToNull hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect jdbcUsername=root jdbcPassword= # DBCP Pool settings jdbcInitialSize=5 jdbcMaxActive=10 jdbcMaxIdle=5 jdbcMaxWait=30000 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 中加上如下红色代码就可: private void addTask(Runnable runnable) { Log.d(LOGTAG, "addTask(runnable)..."); taskTracker.increase(); synchronized (taskList) { if (taskList.isEmpty() && !running) { running = true; futureTask = taskSubmitter.submit(runnable); if (futureTask == null) { taskTracker.decrease(); } } else { //解决服务器端重启后,客户端不能成功连接 androidpn 服务 器 runTask(); taskList.add(runnable); } } Log.d(LOGTAG, "addTask(runnable)... done"); } -------------------------------------------------------------------------------------------- -------------------------------------------------------------- 后续: 2012-8-10 今天公司终于把 Androidpn 服务器端部署到服务器端了,终于真正的上 线了. 大体步骤如下: 1,把服务器的程序通过 myeclipse 到处 war 包,然后访问 tomcat 首页, 把 war 包上传到 tomcat 服务器. 点击 Tomcat Manager 出现如下界面: 在默认的情况下登录不成功,需要在 tomcat-user.xml 文件中配置,在该 文件的加上如下配置: 01. 02. 然后通过如下界面把 war 包上传到 tomcat 上: 注意需要在服务器电脑上有相应数据库(我这个里是 mysql),并且有 Androidpn 对应的数据库(我这里的数据库名为 test).并且还要注意数据 库的用户名和密码. 2,假设服务器端已经能够访问了,需要把客户端的 androidpn.properties 文件的 xmppHost 的值改成你服务器端的主机名称,假设你的服务器端 访问地址为:http://push.android.net:8080/ ,那么把 xmppHost 的值改成 push.android.net 3,注意把你的 8080 端口和 5222 端口打开(这里是服务器那边的人搞的 自己不是很懂). -------------------------------------------------------------------------------------------- ------------------------------------------------------------- 后续二 :关于 Androidpn 的一些问题(2012.8.16) 1,如果把客户端的随机生成的 UUID 代码,改成把设备的 id 或者 mac(device/mac)作为用户名,会出现重复插入的错误. 2,把客户端的数据清除(或者重新安装),那么 sharedPre 里的数据也会没 有,然而服务器端又有我们手机的设备 id,然后启动程序又会出现重复插 入的问题. 所以解决方案为,在服务器端保存用户的时候,检查数据时候存在该用 户. 因为在客户端来说自己有没有注册到服务器端,通过 SharedPreferences 里面是否存在 username 和 password. -------------------------------------------------------------------------------------------- ----------------------------------------------------- 后续三 :关于 Android 推送的其他方式(2013.1.4) 其他的推送方案 : 1> 如果想要方便成本又低 , 推荐使用极光推送 , 只要集成它的官方 SDK 即可 . 在国内是比较出名的 , 推送基础服务是免费的 ,不限制推 送条数,还有富媒体推送, 官网为 http://www.jpush.cn/ 2> android 官网最新提供的 , GCM ,是用来代替的 C2DM , 其官网 为 http://developer.android.com/google/gcm/index.html 3> 可以通过 Java nio 来实现自己的服务器, 听同事说它的经理自己通 过 Java NIO 写了一个推送服务器 可以接收 30w 左右的并发, 自己正 在尝试写一个 , 如果有进展 , 一定会共享给大家 . 同时可以研究 apache 的项目 mina 该项目就是封装 Java NIO 的 . 4> 当可以使用 XMPP 协议来实现 推送的. 自己也曾写过简单的一对 一即时聊天软件. 5> 也可以通过 MQTT 协议来实现推送 . 客户端下载地址 : https://github.com/tokudu/AndroidPushNotificationsDemo 服务器下载地址 : https://github.com/tokudu/PhpMQTTClient
还剩10页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

timrombin

贡献于2013-07-02

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf