开发部署方法:
1. 下载androidpn的客户端和服务器:地址为:http://sourceforge.net/projects/androidpn/files/
2. 解压服务器端,点击运行,访问:http://127.0.0.1:7070/user.do,就可以看服务器端的管理页面,用这个管理页面,就要向客户端push消息。
3. 把客户端导入到eclipse工程中,修改raw/androidpn.properties文件中的xmppHost的值,如果在模拟器上访问就设置为10.0.2.2(详情请见:http://blog.csdn.net/android_tutor/article/details/4996752),如果是在手机上访问就设置为服务器的ip就行。
讲讲androidpn客户端的写法:
先从最关健的后台Service开始请起:
从类的层次看这个结构比较简单,让其变得复杂的是,其里面有三个线程:主线程,进行Xmpp通信线程,连接出错重试线程。
对上图进行说明:
1. 在NotificationService里创建一个单线程,让其对服务器进行连接,由于使用Xmpp连接服务器要分为三步:连接,注册,登陆。所以用一个栈来保存要执行的Task任务(ConnectTask,RegisterTask,LoginTask),还后再按这个顺序进行执行。
2. 连接Xmpp服务器的线程用的是Executors.newSingleThreadExecutor(),这个本身可以不停的submit任务,那为什么还要自己用一个栈来保存Task了,我的猜测是虽然可以不停的提交任务,但其执行顺序不能保证,哈哈,这个推测可能是错的。
3. 连接线程在连接,注册,登陆的过程中,都有可能出错,都可能会失败,这时我就要有一个重连的机制,在Androidpn里开了另外一个线程来进行重试,其重试不是每次都按多少秒来进行重试,而是有其自己的规则。
private int waiting() {
// 重试次数大于20次,其睡眠600秒
if (waiting > 20) {
return 600;
}
// 重试次数大于13次,睡眠300秒
if (waiting > 13) {
return 300;
}
// 重试次数小于等于7次,睡眠10秒,大于7次,睡眠60秒
return waiting <= 7 ? 10 : 60;
}
4. 在LoginTask里,如果登陆了服务器端,其就会注册一个监听器,用于监听服务器push的数据包(Packet),再通过发送广播的方式来通知要进行显示的程序。
5. 在登陆服务器后,也有可能出错,所以在登陆后,会设置一个ConnectionListener,用于监听连接出错的时候,再合适重连线程,进行重连
6. 在登陆过程中,有一种错误要单独处理,就是账号和密码无效的时候,这个时候其返回的状态码是401,这种情况应该把本地保存的帐号和密码都清掉,再重新进行连接,不然会永远都登陆不上服务器端。
其以上的线程写法不一定是最好的,我们也可以用Hander来进行重试,或者用TimeTask来管理线程也可以。
- 大小: 7.7 KB
- 大小: 19 KB
分享到:
相关推荐
androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...
AndroidPn框架的服务器和客户端;
Androidpn推送框架源码分析及配置方法,压缩包里面包括服务端和客户端代码,及说明文档
Android推送框架 androidpn
AndroidPN环境搭建 本文件真对网上的环境搭建源网站无法登陆设立 <坏掉了/>http://sourceforge.net/projects/androidpn/ </坏掉了> 说明: http://www.cnblogs.com/devxiaobai/archive/2011/07/09/2101794.html ...
为了测试androidpn 的服务端 写的模拟androidpn客户端的代码
Androidpn客户端 和服务端源码下载,实现了消息推送。具体使用方法可百度。
androidpn 代码中实现了服务器重启后自动重连和离线消息推送和消息回执 android手机端的消息推送实现
androidpn服务器端也是java语言实现的,基于openfire开源工程,它的Web部分采用的是spring框架。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是...
将androidpn集成到我们平时开发的javaee中,直接启动tomcat就可以启动xmpp服务,不需要另外部署androidpn。 注释:项目有点大,所以没有上传jar包,可以直接使用项目中的maven下载所需jar文件
Androinpn是韩国人写的,这个是经过国人修改后的Androidpn项目。里面有修改人对代码的注释,更便于我们理解Androinpn,并且修复了一些原有的bug。
androidpn tomcat + oracle版本,将应用改成了oracle数据库。
韩国著名的开源消息推送AndroidPN客户端,采用XMPP协议。
Androidpn tomcat版本,实现android推送功能
androidpn 的客户端和服务器端源码. 使用说明: 解压后得到两个压缩包: androidpn-client.zip和androidpn-server-0.5.0-bin.zip, 解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties...
解决androidpn服务端重启后客户端重连的问题
androidpn-client推送客户端
androidpn-client-0.5.0 修改后的版本 修改原来的通知操作 为action配置 这样就可以定义自己的操作 action为: org.androidpn.client.NotificationProcess 请看文章: ...
androidpn服务端与客户端代码,自己测试过,真机可以,但是模拟器却不行