`
810364804
  • 浏览: 787704 次
文章分类
社区版块
存档分类
最新评论

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,这样就行了。

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

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics