【转】AndroidPn(XMPP协议)

过程:

首先打开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文件中配置,在该文件的加上如下配置:

  1. <role rolename="manager-gui"/>  
  2. <user username="tomcat" password="tomcat" roles="manager-gui"/>  
<role rolename="manager-gui"/>
<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的一些问题(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

 

     更多关于MQTT的讲解:Android消息推送(二)--基于MQTT协议实现的推送功能

 

 

转自:http://blog.csdn.net/johnny901114/article/details/7715758

猜你喜欢

转载自gdfdfg-tech.iteye.com/blog/1895614