androidpn 推送初探

androidpn是基于XMPP协议的用于向Android客户端推送文本信息的一套开源的工具。它帮我们做了那些维护Socket长连接等等的事情。 

在真正把它使用在我们的项目中之前,我们先领略一下推送。

第一步,下载androidpn服务器端与客户端。网址:http://sourceforge.net/projects/androidpn/files/

第二步,启动服务器端与客户端,通过Web页面推送。详细的步骤已经有另外的朋友写了:http://www.devdiv.com/thread-101586-1-1.html 

在做第二步的过程中,要注意先启动服务器端,再启动客户端。通过查看客户端源码,我们可以知道,客户端在启动的时候开启了一个后台Service,并注册登录到了服务器端,与服务器建立了连接。所以客户端启动后,你刷新服务器那个管理页面,在User选项卡那里就能看到一个新的User了。如果在管理页面上没有User,那你推送信息,客户端肯定是收不到的。然后再到Notification那个选项卡下面输入内容,点“submit”,客户端就能收到推送信息了。 

那如何将这一套东西运用到我们自己的项目中来呢?我想最懒的方法是这样的:

1、  androidpn的服务器启动起来,我们自己的服务器上有消息要发的时候就把消息Post给它,它就会自动发给Android客户端了。

2、  客户端源代码完全照搬,除了把DemoAppActivity里的内容整合到我们自己的Acitivity。 

上面的这种做法有些问题。

1、  androidpn服务器收到消息后如何知道要发给哪个用户?

2、  一旦服务器重启了,客户端似乎不会自动重连,需要用户自己中断后台Service再重启应用。

3、  androidpn服务器不保存消息。就是说它一有消息就会发出去,即使客户端根本不在线,它也不会重发。 

关于第一个问题,我们可以通过修改客户端代码来解决。

在XmppManager.java类文件里,有这样一行代码:

finalString newUsername = newRandomUUID();

我们只需要把newRandomUUID() 改成用户的名称,如zhangsan,这样,我们的服务器在发消息给androidpn服务器时,就可以指定说要发给zhangsan,这样就行了。

不过我也发现了一点,这个用户名在第一次与服务器端连接时,服务器端就记下来了,后面你再改是不管用的。 

但是关于后面两个问题,恐怕要修改服务器的代码才能解决了。

目前 我还只了解到这么些,修改服务器代码的事,可能需要些时日才啃得下来。同样研究这个问题的朋友,欢迎留言沟通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值