这几天一直在研究xmpp的东西,大致遇到的问题有
1 登陆后更新用户的状态 需要手动去设置,其实也不一定是这样子的,关键看你在获取roster的时候你怎么去检索射中user的statu。
2 给发送消息添加消息时间 可以再message中设置property属性 设置属性名为sendtime 值为系统当前时间 得到的内部的消息协议大致是这样子的
<message id="a26q2-12" to="zlsina002\40slook.cc@xmpp.chaoboo.com"
//from="zlsina001\40slook.cc@xmpp.chaoboo.com/Smack"
//type="chat">
//<body>lsfjaojfakdfa</body><thread>ut75K1</thread>
// <properties xmlns="http://www.jivesoftware.com/xmlns/xmpp/properties">
//<property><name>Time</name><value type="long">1340097191416</value>
//</property></properties></message>
我个人认为既然时间是自己添加的 ,api肯定不会给你相关的提取时间的方法,要想获得系统时间还的自己手动的去解析,这样添加时间解析起来非常的麻烦,我的解决办法是将时间放在消息体的头部,用一个特殊符号来隔开(系统时间是一个长整型 消息体是字符型所以是没什么问题的)。
3 xmpp在登陆以后获取到的用户列表不全,这个也 需要解决,我采用的方式是每个用户在登陆后会接收到很多的好友在线状态 ,我可以通过他们给你发过来的presence从中解析得到user对象,在检索本地的好友列表看这个好友是否存在其中如果没有则将user对象添加到好友列表中并更新ui,这么做可能会解决一部分,但还是会有些问题 ,所以得要求在用户登录后要求服务器需要吧这个信息完全发给客户端。
4 接收消息,在android中怎么提示用户我有新消息,我目前能做到的是通过packetListener对消息包进行监听,有message即解析为chatlog对象用一个listchat来存放。
吼吼 想到个好方法给chatlog 添加一个布尔值 isread。
写代码去